使用 lm() 与矩阵乘法公式时的不同结果

问题描述 投票:0回答:1

我正在面板/时间序列数据集上运行简单的多元回归,使用

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)

我不确定为什么两种方法的估计值不同。

r regression least-squares
1个回答
3
投票

您的示例不可重现,但如果您尝试使用一些虚拟数据,则当您取出截距时,矩阵公式和

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  
© www.soinside.com 2019 - 2024. All rights reserved.