【发布时间】:2018-03-12 21:26:46
【问题描述】:
我需要一种比 lm() 方法更快的线性回归方法。我发现 lm.fit() 快了很多,但我想知道如何使用结果。例如使用此代码:
x = 1:5
y = 5:1
regr = lm.fit(as.matrix(x), y)
str(regr)
输出:
List of 8
$ coefficients : Named num 0.636
..- attr(*, "names")= chr "x1"
$ residuals : num [1:5] 4.364 2.727 1.091 -0.545 -2.182
$ effects : Named num [1:5] -4.719 1.69 -0.465 -2.619 -4.774
..- attr(*, "names")= chr [1:5] "x1" "" "" "" ...
$ rank : int 1
$ fitted.values: num [1:5] 0.636 1.273 1.909 2.545 3.182
$ assign : NULL
$ qr :List of 5
..$ qr : num [1:5, 1] -7.416 0.27 0.405 0.539 0.674
..$ qraux: num 1.13
..$ pivot: int 1
..$ tol : num 1e-07
..$ rank : int 1
..- attr(*, "class")= chr "qr"
$ df.residual : int 4
我期望截距 = 6 和斜率 = -1,但上面的结果不包含任何接近的结果。另外,lm.fit() 输出 r 的平方吗?
【问题讨论】:
-
m和k到底应该是什么?您是在谈论斜率和截距项吗?如果您将单列矩阵传递给lm.fit,则您不适合截距项。试试lm.fit(cbind(1, x), y)。 -
是的,很抱歉没有澄清这一点,我编辑了这个问题,好吧,这个改变成功了,谢谢!
-
还有办法让 r 平方吗?
-
来自 lm.fit 的帮助:“这些是 lm 调用的用于拟合线性模型的基本计算引擎。这些通常不应该直接使用,除非有经验的用户。”尝试改用
lm(y~x)。
标签: r linear-regression