Добавление фиктивной переменной изменяет коэффициенты

Должно ли добавление фиктивной переменной изменить коэффициенты для других независимых переменных в линейной модели? Я думал, что это изменит только перехват, но коэффициенты изменились и для терминов без перехвата.

Вот пример кода с mtcars данными (получен из: http://rstudio-pubs-static.s3.amazonaws.com/20516_29b941670a4b42688292b4bb892a660f.html

data(mtcars)
mtcars$am_text <- as.factor(mtcars$am)
levels(mtcars$am_text) <- c("Automatic", "Manual")


fit1 <- lm(mpg ~ am_text + wt, data = mtcars)
summary(fit1)

Call:
lm(formula = mpg ~ am_text + wt, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.5295 -2.3619 -0.1317  1.4025  6.8782 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)   37.32155    3.05464  12.218 5.84e-13 ***
am_textManual -0.02362    1.54565  -0.015    0.988    
wt            -5.35281    0.78824  -6.791 1.87e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.098 on 29 degrees of freedom
Multiple R-squared:  0.7528,    Adjusted R-squared:  0.7358 
F-statistic: 44.17 on 2 and 29 DF,  p-value: 1.579e-09

Теперь запустим линейную модель с подмножеством данных:

# Here is without dummy variable, but now with subset data
fit2 <- lm(mpg ~ wt, data = mtcars[mtcars$am_text == "Automatic",])
summary(fit2)

Call:
lm(formula = mpg ~ wt, data = mtcars[mtcars$am_text == "Automatic",])

Residuals:
    Min      1Q  Median      3Q     Max 
-3.6004 -1.5227 -0.2168  1.4816  5.0610 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  31.4161     2.9467  10.661 6.01e-09 ***
wt           -3.7859     0.7666  -4.939 0.000125 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.528 on 17 degrees of freedom
Multiple R-squared:  0.5893,    Adjusted R-squared:  0.5651 
F-statistic: 24.39 on 1 and 17 DF,  p-value: 0.0001246

person MKa    schedule 20.04.2018    source источник
comment
Этот вопрос, кажется, лучше подходит для CrossValidated. Как бы то ни было, фиктивные переменные могут изменять коэффициенты других независимых переменных, когда они коррелируют как с ковариатами, так и с откликом. С алгебраической точки зрения нет ничего существенного в том, как обрабатываются фиктивные значения и другие переменные в МНК.   -  person tifu    schedule 20.04.2018
comment
@tifu Отмечено. Спасибо   -  person MKa    schedule 20.04.2018


Ответы (3)


На самом деле, проблема в том, что коэффициент наклона в fit1 на самом деле используется как для автомобилей с автоматической коробкой передач, так и для автомобилей с механической коробкой передач, хотя каждый фактор получает свое собственное пересечение. Если вы включите термин взаимодействия между am_text и wt, а также (am_text:wt), то вы сможете лучше сравнивать с моделью только автоматических автомобилей (fit2).

fit3 <- lm(mpg ~ am_text + wt + am_text:wt, data = mtcars)
summary(fit3)

# Call:
# lm(formula = mpg ~ am_text * wt, data = mtcars)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -3.6004 -1.5446 -0.5325  0.9012  6.0909 
# 
# Coefficients:
#                  Estimate Std. Error t value Pr(>|t|)    
# (Intercept)       31.4161     3.0201  10.402 4.00e-11 ***
# am_textManual     14.8784     4.2640   3.489  0.00162 ** 
# wt                -3.7859     0.7856  -4.819 4.55e-05 ***
# am_textManual:wt  -5.2984     1.4447  -3.667  0.00102 ** 
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 2.591 on 28 degrees of freedom
# Multiple R-squared:  0.833,   Adjusted R-squared:  0.8151 
# F-statistic: 46.57 on 3 and 28 DF,  p-value: 5.209e-11

Обратите внимание, что коэффициенты fit3 сами по себе содержат точки пересечения и наклона автомобилей с автоматической коробкой передач, что соответствует этим коэффициентам fit2:

coef(fit2) # fit only to automatic
# (Intercept)          wt 
#   31.416055   -3.785908 

coef(fit3)
# (Intercept)    am_textManual               wt am_textManual:wt 
#   31.416055        14.878423        -3.785908        -5.298360 
person Marc in the box    schedule 20.04.2018
comment
Спасибо, совсем забыл о термине взаимодействия. - person MKa; 02.08.2018

В lm при подгонке модели с использованием обычного метода наименьших квадратов (OLS) вы минимизируете сумму квадратов невязок (SSR), которая является функцией параметров вашей модели. Обычно в OLS нет ограничений на параметры.

Таким образом, добавление параметров обычно приводит к различным оценкам параметров, поскольку оценки МНК просто соответствуют тем значениям параметров, которые минимизируют SSR. Если вы добавите фиктивную переменную (или любую другую переменную в этом отношении), lm просто вернет те оценки параметров, которые приводят к наименьшему SSR. В процессе минимизации значения всех параметров могут свободно изменяться.

Для получения подробной информации см., например. статья Википедии об OLS или любом учебнике по статистике.

person Maurits Evers    schedule 20.04.2018

Да, если вы добавляете переменные в свою модель, вы должны ожидать, что ваши коэффициенты изменятся. Помните, что коэффициенты для любой переменной всегда относятся к другим переменным, присутствующим в модели.

Если у вас есть Y = aX1 + bX2 +cX3 + E, и вы добавляете X4 в свою модель, вы должны ожидать, что a, b и c изменятся (если только X4 вообще не повлияет на модель).

person donkeyshark    schedule 20.04.2018