회귀 결과에서 회귀 상호 작용의 적합치를 직접 계산합니다.
나는 아래와 유사한 상호 작용 모델을 사용하고 있습니다.
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.2767
같은 52.4000 + -0.1233
과 같다.
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
답변
상호 작용 용어가있는 모델에서는 작업중인 회귀 모델을 기록하는 것이 항상 유익하다고 생각합니다. "X"값을 표시해 보겠습니다.$X$ 그리고 당신이 당신의 "중재자"라고 부르는 것은 $M$. 이 경우 모델은 다음과 같이 작성됩니다.
$\hat{Y} = \hat{\beta_0}+X\hat{\beta_1}+M\hat{\beta_2}+XM\hat{\beta_{3}}$
의 결과에서 다음 R
과 같이됩니다.
$\hat{Y} = 52.4000+X8.4571-M11.4435-XM0.1233$
이제 R
변수에 범주 / 이진 예 / 아니오 값을 코딩 하는 방법을 이해해야합니다.$X$ 과 $M$. 기본적으로 R
코드됩니다$X$ 값은 다음과 같습니다 (사전 순) :
\ begin {eqnarray *} X & = & \ begin {cases} 1 & \ text {X가 예인 경우} \\ 0 & \ text {X가 아니오 인 경우} \ end {cases} \ end {eqnarray *}
과
R
유사하게 코드를 작성합니다. $M$값 : \ begin {eqnarray *} M & = & \ begin {cases} 1 & \ text {Moderator is Yes} \\ 0 & \ text {Moderator is No} \ end {cases} \ end {eqnarray * }
그런 다음 올바르게 식별 한 경우 $X$ 예, 그리고 $M$ 아니오, 위의 회귀 방정식은 다음과 같습니다.
$\begin{eqnarray*}\hat{Y} & = & 52.4000+(1)8.4571-(0)11.4435-(1)(0)0.1233 \\ & =& 52.4000+8.4571-(0)-0\\ & =& 52.4000+8.4571 \end{eqnarray*}$
자, 둘 다 $X$ 예, 그리고 $M$ 예, 둘 다의 코드 값 $X$ 과 $M$ 1과 같고 회귀 방정식은 다음과 같습니다.
$\begin{eqnarray*}\hat{Y} & = & 52.4000+(1)8.4571-(1)11.4435-(1)(1)0.1233 \\ & =& 52.4000+8.4571-11.4435-0.1233\\\end{eqnarray*}$
그리고이 마지막 용어는 당신이 쓴 곳에서 찾고있는 것입니다.
X_yes.M_yes #<- ?
노트:
@Roland가 언급했듯이 주목해야 할 사항은 위에서 작성한 모든 내용은 이진 변수에 대해 R의 기본 코딩을 사용하고 있다고 가정합니다. 기본적으로 R은 앞서 언급 한대로 "예"값을 1로 코딩하고 "아니요"값을 0으로 코딩합니다 (이 경우에는 사전 순으로 인자 변수의 첫 번째 수준이기 때문에 0이 아니오에 사용됨). 그러나 사용할 수있는 대체 코딩 방식이 있습니다 (예 : Yes = 1 및 No = -1). 그러나 귀하의 R 코드 및 출력을 통해 실제로 제 답변에서 제공 한 바이너리 0/1 코딩을 사용하고 있음을 알 수 있습니다. 다음 명령을 실행하여 R 세션에서 0/1 코딩 체계가 사용되고 있는지 확인할 수 있습니다.
model.matrix(Results)
그러면 "디자인 매트릭스"또는 "모델 매트릭스"가 표시되고 각 카테고리 "뒤에"코딩이 표시됩니다.
(Intercept) xYes moderatingYes xYes:moderatingYes
1 1 1 1 1
2 1 0 1 0
3 1 0 1 0
4 1 1 1 1
5 1 0 1 0
6 1 0 1 0
7 1 1 1 1
.
.
.