2012-12-29 40 views
0

我正在與2個變量和2個基團R,即,線性判別分析,判別分析:如何獲取閾重量

ldares <- lda(dat[,2:3], grouping=dat[,1]) 

接着,我想獲得用於公式將組織分開的決策界限。我知道我可以輸出線性判別的係數與:

coef(ldares) 

然而,考慮到綁定的決定是由描述:

a*v1 + b*v2 + c = 0, 

我怎麼得到偏置門檻體重 c?

+0

您的代碼無法運行,因此人們很難提供建議。另外,也許在統計論壇上詢問交叉驗證。 –

回答

2

當沒有給出先前的權重時,我相信你會發現c = 0,並且判別分數是基於設置先驗的情況的分佈。可以看到,一個得分結構與一個隱含的C = 0的假設產生預期的分裂中預測與所述虹膜數據集:

require(MASS) 
ldares <- lda(iris[ iris[,5] %in% c("setosa", "versicolor"),2:3], 
       grouping=iris[iris[,5] %in% c("setosa", "versicolor") ,5]) 
scores <- with(iris[ iris[,5] %in% c("setosa", "versicolor") , 2:3], 
       cbind(Sepal.Width, Petal.Length) %*% coef(ldares)) 
with(iris[ iris[,5] %in% c("setosa", "versicolor") , c(2:3, 5)], 
       plot(Sepal.Width, Petal.Length, col=c("black", "red")[1+(scores>0)]) ) 

enter image description here

+0

感謝您的回覆,@DWin。但在我看來,這是數據集的一個偶然特徵。嘗試使用不同的數據集iris1來運行您的代碼,其中:iris1 < - iris' iris1 [,2] < - 10 + iris [,2]' iris1 [,3] < - 10 + iris [,3]' 你會發現係數是相同的,但c不是0.它有一個值在15左右。 – awcm0n

+0

有人糾正我,如果我錯了,但我相信答案是:c是判別式上兩組平均值之間的中點。 – awcm0n

+0

Lak的回答解決了這些問題。有一個居中的步驟,所以c == 0點成爲組的意思。它基本上是從線性迴歸結果中刪除了截距。 –

0

你應該知道的是,LDA是居中的的線性組合變量。因此,判別函數是真的:

\Sigma [w * (x - mean(x))] > 0 

,因此:因此

\Sigma [w * x] > \Sigma w * mean(x) 

閾值是\西格瑪W *平均值(X)。不幸的是,LDA沒有報告整個數據集的平均值(x),只有兩組平均值。但是這允許我們以相當直觀的方式計算閾值。

假設結果是你的LDA結果,閾值是響應兩個類別的質心之間的中點:

> `sum(result$scaling * result$means[2,] + result$scaling * result$means[1,])/2` 

附:請注意,在原始問題w1*a1 + w2*a2 + c = 0中,閾值爲-c