在coef(l)
中,l
“lm”类的对象(Intercept)
总是在哪里列出?
R 的源代码lm()
并不是那么简单。lm()
似乎调用lm.fit()
,它通过调用 C 函数来获取系数,根据这篇信息丰富的博客文章.Call(C_Cdqrls, x, y, tol, FALSE)
,最终调用 FORTRAN 中的最小二乘拟合例程。我对 R 内部结构或实际代码不够熟悉,无法进行最小二乘回归来回答我的问题。
在coef(l)
中,l
“lm”类的对象(Intercept)
总是在哪里列出?
R 的源代码lm()
并不是那么简单。lm()
似乎调用lm.fit()
,它通过调用 C 函数来获取系数,根据这篇信息丰富的博客文章.Call(C_Cdqrls, x, y, tol, FALSE)
,最终调用 FORTRAN 中的最小二乘拟合例程。我对 R 内部结构或实际代码不够熟悉,无法进行最小二乘回归来回答我的问题。
不,只有当你有拦截时。截距在公式中是隐含的,但您可以使用- 1
or指定没有它的模型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)"]