我在嘗試在點雲中應用SVD線性迴歸。我對點集的表示是一個有兩列的矩陣,其中第一列是'x',第二列是'y'。所以,我得到這個情節:在R中應用SVD線性迴歸
myplot http://oi65.tinypic.com/msoyl5.jpg
如何我可以申請SVD線性迴歸,我的觀點與功能? 我試過這個:
Regress_Lin<-function(data,label){
#Calculating pseudomatrix of data
data<-cbind(data,rep(1,nrow(data)))
data.svd <- svd(data)
ds <- diag(1/data.svd$d)
u <- data.svd$u
v <- data.svd$v
us <- as.matrix(u)
vs <- as.matrix(v)
#Calculating abline coefficients y=mx+b
weights<-(vs%*%solve(ds)%*%t(u))%*%label
m <- -(weights[1,1]/weights[2,1])
b <- -(weights[3,1]/weights[2,1])
c(m,b)
}
它不起作用。
有沒有理由認爲lm'不適合你? –
問題是'lm'符合線性迴歸。它使用QR分解,而不是SVD,但這對最終結果應該無關緊要。 –
是的,你是對的,但我需要學會使用SVD和pseudoinverses來獲得我的'abline'係數。命令'lm'起作用,但我不知道它是如何工作的。所以,我知道如何獲得自變量的僞逆,但我不知道如何使用它來獲取我的係數。 – Carlos