R-如何从lm.fit中提取斜率和截距?
我需要一种比lm方法更快的线性回归方法。我发现lm.fit的速度要快很多,但我想知道如何使用结果。例如,使用此代码:R-如何从lm.fit中提取斜率和截距?,r,linear-regression,R,Linear Regression,我需要一种比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.54
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平方吗?lm.fit允许更多的手动操作,因此,正如@MrFlick所评论的,我们还必须使用cbind1,x作为设计矩阵手动包含截距。未提供R^2,但我们可以轻松计算:
x <- 1:5
y <- 5:1 + rnorm(5)
regr <- lm.fit(cbind(1, x), y)
regr$coef
# x
# 5.2044349 -0.5535963
1 - var(regr$residuals) / var(y) # R^2
# [1] 0.3557227
1 - var(regr$residuals) / var(y) * (length(y) - 1) / regr$df.residual # Adj. R^2
# [1] 0.1409636
lm.fit允许更多的手工操作,因此,正如@MrFlick评论的那样,我们还必须使用cbind1,x作为设计矩阵手动包含截距。未提供R^2,但我们可以轻松计算:
x <- 1:5
y <- 5:1 + rnorm(5)
regr <- lm.fit(cbind(1, x), y)
regr$coef
# x
# 5.2044349 -0.5535963
1 - var(regr$residuals) / var(y) # R^2
# [1] 0.3557227
1 - var(regr$residuals) / var(y) * (length(y) - 1) / regr$df.residual # Adj. R^2
# [1] 0.1409636
m和k到底应该是什么?你说的是斜率和截距项吗?如果将单列矩阵传递给lm.fit,则不是拟合截距项。试试lm.fitcbind1,x,y。是的,很抱歉没有澄清这一点,我编辑了这个问题,好吧,更改成功了,谢谢!还有一种方法可以得到r平方吗?来自lm.fit的帮助:这些是lm用来拟合线性模型的基本计算引擎。除非有经验的用户使用,否则通常不应直接使用。试着用lmy~x代替。m和k到底应该是什么?你说的是斜率和截距项吗?如果将单列矩阵传递给lm.fit,则不是拟合截距项。试试lm.fitcbind1,x,y。是的,很抱歉没有澄清这一点,我编辑了这个问题,好吧,更改成功了,谢谢!还有一种方法可以得到r平方吗?来自lm.fit的帮助:这些是lm用来拟合线性模型的基本计算引擎。除非有经验的用户使用,否则通常不应直接使用。尝试使用lmy~x代替。