我在面板/时间序列数据集上运行简单的多元回归,使用lm()
和基础公式$(X'X)^ { - 1} X'Y $
期望从这两种方法中获得相同的系数值。但是,我的估计完全不同。
这是R代码:
return = matrix(ret.ff.zoo, ncol = 50) # y vector
data = cbind(df$EQ, df$EFF, df$SIZE, df$MOM, df$MSCR, df$SY, df$UMP) # x vector
#First method
BETA = solve(crossprod(data)) %*% crossprod(data, return)
#Second method
OLS <- lm(return ~ data)
我不确定为什么两种方法之间的估计值不同。
任何帮助表示赞赏!谢谢。
答案 0 :(得分:2)
您的示例不可重现,但如果您尝试使用某些虚拟数据,则在取出截距时,矩阵公式和lm
会产生相同的结果:
set.seed(1)
x <- matrix(rnorm(1000),ncol=5)
y <- rnorm(200)
solve(t(x) %*% x) %*% t(x) %*% y
[,1]
[1,] -0.0826496646
[2,] -0.0165735273
[3,] -0.0009412659
[4,] 0.0070475728
[5,] -0.0642452777
> lm(y ~ x + 0)
Call:
lm(formula = y ~ x + 0)
Coefficients:
x1 x2 x3 x4 x5
-0.0826497 -0.0165735 -0.0009413 0.0070476 -0.0642453