0

coef(l)中,l“lm”类的对象(Intercept)总是在哪里列出?

R 的源代码lm()并不是那么简单。lm()似乎调用lm.fit(),它通过调用 C 函数来获取系数,根据这篇信息丰富的博客文章.Call(C_Cdqrls, x, y, tol, FALSE),最终调用 FORTRAN 中的最小二乘拟合例程。我对 R 内部结构或实际代码不够熟悉,无法进行最小二乘回归来回答我的问题。

4

1 回答 1

0

不,只有当你有拦截时。截距在公式中是隐含的,但您可以使用- 1or指定没有它的模型0 +

x <- rnorm(20)
y <- rnorm(20, 10)

> coef(lm(y ~ x + I(x^2)))
(Intercept)           x      I(x^2) 
 10.3035412  -0.1506304  -0.3092836 

> coef(lm(y ~ I(x^3) + x - 1))
    I(x^3)          x 
-0.5094851 -0.6598634 

系数将按照它们在公式中出现的顺序列出。如果有拦截,它将是第一个。但是与 R 中的许多其他情况一样,如果您需要获取特定组件的值(拦截或任何其他),最好使用它的名称进行调用。NA如果对象没有它,它将返回:

intercept <- coef(model)["(Intercept)"]
于 2020-10-03T06:55:14.873 回答