我试图了解如何获得多元线性回归的系数。
公式为:
我试着计算没有包和lmR 里面有包。
这样做,我得到了不同的结果。
我想知道为什么。我做错了吗?还是lm因为截距而导致包裹的计算方式不同?
> y <- c(1,2,3,4,5)
> x1 <- c(1,2,3,4,5)
> x2 <- c(1,4,5,7,9)
> Y <- as.matrix(y)
> X <- as.matrix(cbind(x1,x2))
> beta = solve(t(X) %*% X) %*% (t(X) %*% Y) ; beta
[,1]
x1 1.000000e+00
x2 -1.421085e-14
> model <- lm(y~x1+x2) ; model$coefficients
(Intercept) x1 x2
1.191616e-15 1.000000e+00 1.192934e-15

更新
正如亚历克斯和其他人告诉我的,这是一个舍入误差的问题。因此,我决定从安德森等人的《商业和经济学基本统计》一书中获取另一个数据。在这种情况下,lm函数和我自己的矩阵中的系数是相同的。
> y <- c(9.3, 4.8, 8.9, 6.5, 4.2, 6.2, 7.4, 6, 7.6, 6.1)
> x0 <- c(1,1,1,1,1,1,1,1,1,1)
> x1 <- c(100,50,100,100,50,80,75,65,90,90)
> x2 <- c(4,3,4,2,2,2,3,4,3,2)
> Y <- as.matrix(y)
> X <- as.matrix(cbind(x0,x1,x2))
> beta = solve(t(X) %*% X) %*% (t(X) %*% Y);beta
[,1]
x0 -0.8687015
x1 0.0611346
x2 0.9234254
> model <- lm(y~+x1+x2) ; model$coefficients
(Intercept) x1 x2
-0.8687015 0.0611346 0.9234254