#r #linear-regression
#r #линейная регрессия
Вопрос:
В coef(l)
, где l
объект класса «lm» (Intercept)
всегда указан первым?
Исходный код R для lm()
не так прост. lm()
появляется вызов lm.fit()
, который получает коэффициенты путем вызова функции C с .Call(C_Cdqrls, x, y, tol, FALSE)
помощью , которая в конечном итоге вызывает процедуру подбора наименьших квадратов в FORTRAN в соответствии с этим информативным сообщением в блоге . Я недостаточно хорошо знаком с внутренними компонентами R или фактическим кодом, чтобы выполнить регрессию наименьших квадратов, чтобы ответить на мой вопрос.
Комментарии:
1. Он появится первым, если только вы не подходите для модели, в которой нет перехвата.
2. @MrFlick тогда перехват равен всего 0? или вы имеете в виду что-то другое.
3. Если вы запускаете модель, подобную
coef(lm(y~x-1, data.frame(x=rnorm(10), y=runif(10))))
then, просто нет перехвата, поэтому он не первый. Таким образом, перехват не всегда является первым коэффициентом, но если вы соответствуете модели, у которой есть перехват, тогда он будет указан первым (по крайней мере, сlm
)4. @MrFlick Ха, я этого не знал. Можете ли вы превратить комментарий в ответ? Вы знаете, что он указан первым из внутреннего кода или просто по опыту?
Ответ №1:
Нет, только когда у вас есть перехват. Перехват неявен в формуле, но вы можете указать модель без него, используя - 1
или 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)"]
Комментарии:
1. знаете ли вы, что если есть перехват, он всегда будет указан первым?
2. Я бы не стал рассчитывать на какой-либо конкретный порядок коэффициентов. Используйте имена.