2014-10-03 16 views
-1

我有下面的代碼來獲得的一組數據的famafrench迴歸:[R新手

#Regression 
ff_reg = lm(e25 ~ rmrf+smb+hml, data=dat); 

不過,我不斷收到錯誤「無效的類型(單)可變E25」 。

e25先前在程序定義爲一組從由25列的矩陣中減去「RF」獲得的數據:

e25 = (dat[,7:31]) - dat$rf; 

(其中DAT被一個CSV文件中讀入到R和rf是該文件中的一列)

爲什麼會出現此錯誤,我該如何解決它?

在諮詢,這裏是我運行的完整代碼...

dat = read.csv("ff2014.csv", as.is=TRUE); 

##excess portfolio returns 
e25 = (dat[,7:31]) - dat$rf; 
#print(e25); 

#Regression 
ff_reg = lm(e25 ~ rmrf+smb+hml, data=dat); 
print(summary(ffreg)); 
+0

你不應該追加E25結果作爲新列數據矩陣? – duffymo 2014-10-03 15:13:19

+3

在簡單的線性迴歸中,您期望得到單一的回答。聽起來就像你試圖包括25列作爲迴應。這不是一個簡單的線性模型。你實際上想要做什麼迴歸。你真的應該包括一個[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),所以我們知道你的數據實際上是什麼樣子,可以運行我們自己的代碼來查看錯誤來自何處。 – MrFlick 2014-10-03 15:20:23

+0

@duffymo e25的結果是25列寬,會不會很笨?另外,如果我這樣做,lm函數中公式中等號的LHS會是什麼? – mobygrape 2014-10-03 15:25:16

回答

2

help("lm")

如果響應是線性模型由最小二乘法擬合分別矩陣到矩陣的每一列。

所以,如果這是你想要做什麼,你需要讓你的data.frame矩陣打電話lm前:

e25 <- as.matrix(e25)