Рассчитать вручную подобранные значения взаимодействия из выходных данных регрессии

Я работаю с моделью взаимодействия, подобной приведенной ниже:

set.seed(1993)

moderating <- sample(c("Yes", "No"),100, replace = T)
x <- sample(c("Yes", "No"), 100, replace = T)
y <- sample(1:100, 100, replace = T)

df <- data.frame(y, x, moderating)

Results <- lm(y ~ x*moderating)
summary(Results)
Call:
lm(formula = y ~ x * moderating)

Residuals:
    Min      1Q  Median      3Q     Max
-57.857 -29.067   3.043  22.960  59.043

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)         52.4000     6.1639   8.501 2.44e-13 ***
xYes                 8.4571     9.1227   0.927    0.356    
moderatingYes      -11.4435     8.9045  -1.285    0.202    
xYes:moderatingYes  -0.1233    12.4563  -0.010    0.992    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 30.82 on 96 degrees of freedom
Multiple R-squared:  0.04685, Adjusted R-squared:  0.01707
F-statistic: 1.573 on 3 and 96 DF,  p-value: 0.2009

Я учусь вычислять подогнанное значение взаимодействия из таблицы регрессии. В примере базовой категорией (или опущенной категорией) являются x= No и moderating = No.

До сих пор я знаю следующие подогнанные значения:

#Calulate Fitted Value From a Regression Interaction by hand
#Omitted Variable = X_no.M_no

X_no.M_no <- 52.4000
X_yes.M_no <- 52.4000 + 8.4571
X_no.M_yes <- 52.4000 + -11.4435
X_yes.M_yes #<- ?

Я не понимаю, как рассчитывается конечная категория X_yes.M_yes. Мои первоначальные мысли были X_yes.M_yes <- 52.4000 + -0.1233 (перехват плюс термин взаимодействия), но это неверно. Я знаю, что это неправильно, потому что при использовании функции прогнозирования подходящее значение X_yes.M_yes = 49.29032, а не 52.4000 + -0.1233 = 52.2767.

Как рассчитать вручную прогнозируемое значение категории X_yes.M_yes?

Вот прогнозируемые значения, сгенерированные функцией predict в R.

#Validated Here Using the Predict Function:
newdat <- NULL
for(m in na.omit(unique(df$moderating))){
  for(i in na.omit(unique(df$x))){
    moderating <- m
    x <- i
   
    newdat<- rbind(newdat, data.frame(x, moderating))
   
  }
}

Prediction.1 <- cbind(newdat, predict(Results, newdat, se.fit = TRUE))
Prediction.1

person Sharif Amlani    schedule 21.08.2020    source источник


Ответы (1)


Ваша регрессия выглядит следующим образом в математике:

hat_y = a + b x + c m + d m x

Где x = 1, если да, и 0, если нет, и m аналогично определяется как moderating.

Тогда X_yes.M_yes подразумевает x = 1 и m = 1, поэтому ваш прогноз a + b + c + d.

или в ваших обозначениях X_yes.M_yes = 52.4000 + 8.4571 - 11.4435 - 0.1233

person Ari Anisfeld    schedule 21.08.2020
comment
Итак, какова содержательная интерпретация наклона члена взаимодействия xYes:moderatingYes -0.1233? - person Sharif Amlani; 21.08.2020
comment
d = (X_yes.M_yes - X_no.M_yes) - (X_yes.M_no - X_no.M_no). Эта регрессия обычно используется для оценки разности разностей, которая при определенных предположениях может быть причинно-следственной оценкой влияния того, что M равно «да». - person Ari Anisfeld; 21.08.2020