교호작용
교호작용
- 교호작용(interaction): 한 독립변수와 종속변수의 관계가 다른 독립변수의 값에 따라 달라지는 현상
- 선형 회귀에서는 두 독립변수의 곱으로 교호작용을 표현
x와m의 교호작용항은 관계식에서x:m으로 표시
y ~ x + m + x:m
- 관계식에서
x * m은x + m + x:m과 같음
- β0:
m = 0일 때의 절편 - β1:
m = 0일 때x의 기울기 - β2:
x = 0에서m = 1과m = 0의 절편 차이 - β3:
m = 1과m = 0의 기울기 차이
집단별 회귀식은 다음과 같음.
m=0:y^=β0+β1x m=1:y^=(β0+β2)+(β1+β3)x교호작용의 간단한 예
- 이해를 돕기 위한 간단한 예시
x는 연속형 변수m은0또는1로 코딩한 범주형 지시변수
교호작용이 없는 경우
- 관계식
y ~ x + m
m의 값에 따라 회귀선의 절편이 달라질 수 있음x:m교호작용항이 없으므로m = 0과m = 1의 기울기는 같음

기울기가 달라지는 경우
- 관계식
y ~ x + x:m
m에 따라x의 기울기가 바뀌는 것으로 해석x:m항은x의 효과가m의 값에 따라 달라지는지 나타냄m의 주효과를 제외했으므로x = 0에서 두 집단의 절편은 같음- 절편이 같다는 제한이 타당할 때 사용하는 모형

기울기와 절편이 모두 달라지는 경우
- 관계식
y ~ x + m + x:m
m에 따라x의 절편과 기울기가 모두 바뀌는 것으로 해석m의 주효과는x = 0에서의 절편 차이를 나타냄x:m교호작용은 두 집단의 기울기 차이를 나타냄

Python 교호작용
세 실습의 전체 코드와 출력은 interaction.ipynb에서 확인 가능.
import pandas as pd
import seaborn as sns
from statsmodels.formula.api import ols
절편만 다른 경우
d1 = pd.read_excel("diff_intercept.xlsx")
model_d1 = ols("y ~ x + m", data=d1).fit()
model_d1.summary()
- R2:
0.993 - 절편:
20.3857, p-value< 0.001 x:1.9659, p-value< 0.001m:-17.1611, p-value< 0.001
m = 1 집단의 절편은 m = 0 집단보다 약 17.1611 낮음. 두 집단의 기울기는 같음.
sns.scatterplot(x="x", y="y", hue="m", data=d1)
기울기만 다른 경우
d2 = pd.read_excel("diff_slope.xlsx")
model_d2 = ols("y ~ x + x:m", data=d2).fit()
model_d2.summary()
- R2:
0.999 - 절편:
0.0352, p-value0.930 x:2.0266, p-value< 0.001x:m:5.4842, p-value< 0.001
두 집단은 같은 절편을 공유함. m = 1 집단의 기울기는 m = 0 집단보다 약 5.4842 큼.
sns.scatterplot(x="x", y="y", hue="m", data=d2)
절편과 기울기가 모두 다른 경우
d3 = pd.read_excel("interaction.xlsx")
model_d3 = ols("y ~ x + m + x:m", data=d3).fit()
model_d3.summary()
- R2:
0.966 - 절편:
-0.2975, p-value0.562 x:2.0403, p-value< 0.001m:32.6380, p-value< 0.001x:m:-3.4909, p-value< 0.001
추정된 전체 회귀식은 다음과 같음.
y^=−0.2975+2.0403x+32.6380m−3.4909xm집단별 회귀식은 다음과 같음.
m=0:y^=−0.2975+2.0403x m=1:y^=32.3405−1.4505xm = 0에서는 x가 증가할수록 예측되는 y가 증가함. m = 1에서는 기울기가 -1.4505로 바뀌어 x가 증가할수록 예측되는 y가 감소함.
sns.scatterplot(x="x", y="y", hue="m", data=d3)
퀴즈
교호작용(interaction)에 대한 설명으로 가장 적절한 것은?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.