caskets <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/caskets/caskets.csv")
disaster <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/disaster/disaster.csv")
estress <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/estress/estress.csv")
glbwarm <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/glbwarm/glbwarm.csv")
pmi <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/pmi/pmi.csv")
protest <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/protest/protest.csv")
teams <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/teams/teams.csv")
회귀분석은 모든 통계 분석의 기본이 된다. 대학원에 들어오기 전에 회귀분석을 해놓고 오기를 얼마나 잘 했는지 모른다. 아무도 가르쳐주지 않았지만 내 스스로 대견하다고 해주고 싶다.
데이터 열기 : glbwarm 이라는 데이터 파일을 여는 과정이다.
glbwarm <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/glbwarm/glbwarm.csv")
산점도(Scatterplot)를 그려보자.
plot(y=glbwarm$govact, x=glbwarm$negemot)
상관계수를 구해보자.
cor(glbwarm$govact, glbwarm$negemot)
## [1] 0.5777458
가장 기본이 되는 회귀분석 식이다. 여기서 중요한 것은 y를 앞에 쓴다는
것이다.
만일 다중회귀를 하고 싶다면 y~x1+x2+x3 이런 식으로 붙이면 된다.
model <- lm(govact~negemot, data=glbwarm)
summary(model)
##
## Call:
## lm(formula = govact ~ negemot, data = glbwarm)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.3285 -0.6731 0.1018 0.7554 3.2142
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.75732 0.09866 27.95 <2e-16 ***
## negemot 0.51424 0.02548 20.18 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.111 on 813 degrees of freedom
## Multiple R-squared: 0.3338, Adjusted R-squared: 0.333
## F-statistic: 407.3 on 1 and 813 DF, p-value: < 2.2e-16
anova(model)
## Analysis of Variance Table
##
## Response: govact
## Df Sum Sq Mean Sq F value Pr(>F)
## negemot 1 502.87 502.87 407.34 < 2.2e-16 ***
## Residuals 813 1003.67 1.23
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
confint(model, level=0.95)
## 2.5 % 97.5 %
## (Intercept) 2.5636675 2.9509741
## negemot 0.4642302 0.5642573
변수 앞에 scale을 씌우면 표준화를 해준다. 아래 코드는 표준화된 변수를 이용한 회귀분석을 진행한다.
lm(scale(govact)~scale(negemot), data = glbwarm)
##
## Call:
## lm(formula = scale(govact) ~ scale(negemot), data = glbwarm)
##
## Coefficients:
## (Intercept) scale(negemot)
## 1.341e-15 5.777e-01
만약 X가 이분변수여도 문제는 없다. 결과 회귀계수를 해석할 때 1로 코딩된 변수와 0으로 코딩된 변수의 평균 차이로해석하면 된다. 절편은 0으로 코딩된 변수의 평균값이다.
summary(model <- lm(govact~sex, data=glbwarm))
##
## Call:
## lm(formula = govact ~ sex, data = glbwarm)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.7180 -0.7180 0.1503 0.9503 2.5503
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.71799 0.06634 71.122 < 2e-16 ***
## sex -0.26824 0.09493 -2.826 0.00483 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.355 on 813 degrees of freedom
## Multiple R-squared: 0.009726, Adjusted R-squared: 0.008508
## F-statistic: 7.985 on 1 and 813 DF, p-value: 0.004833
X가 범주형 변수일 때에는 표준화하는 것을 삼가라고 한다. 그 이유는 범주형 변수의 평균이 가지는 의미가 없기 때문이다. 이 경우에는 뒤에서도 서술하겠지만 Partially Standardize 하는 것을 권장하는데, Y 변수는 표준화하고 X 변수는 표준화하지 않는 방법이다.
참고로 표준화계수를 손으로 계산해서 구할수도 있는데, 기존 회귀계수에 X와 Y의 표준편차의 비율을 곱해주면 된다.
R square가 선형회귀에서 설명력을 의미하게 되는 이유에 대한 수학적 원리 정리할 것, 그 밖에도 Regression의 기본적인 수학적 원리 정리할 것
회귀계수가 t검정을 통해 정해진다는 것의 전제: 회귀계수가 정규분포를 따른다? 모집단이 정규분포 따를 때 Z분포고 Sample일 때 t분포고 데이터가 많으면 정규분포에 근사되고 뭐… 이거 정리 해야한다. 몇 년째 헷갈림
Direct Effect(c’): M이 Constant라고 고정했을 때 X가 single unit 변동했을 때 Y값의 변화량이 된다. Multicategorical에서는 Y의 평균의 변화량이 되어 ANCOVA 언어로 Adjusted mean difference of Y.
Indirect Effect(ab): X가 한 단위(Single unit) 변했을 때 M값의 변화량을 a라 하고, X를 Constant라고 고정하고 M이 한 단위 변화했을 때 Y값의 변화량을 b라 하면, ab가 바로 간접효과가 된다.
Total Effect(c): X가 한 단위 변했을 때 Y의 변화량이다. 이 때, c = c’ + ab 를 만족한다. 즉 총효과가 직접효과와 간접효과로 분해되는 것이 매개분석의 본질이다.
다음은 X가 Dichotomous Variable일 때 매개분석 식을 구정하는 3개의 OLS Regression과 PROCESS MACRO를 이용한 식이다.
pmi <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/pmi/pmi.csv")
# Regression
summary(lm(pmi~cond, data = pmi))
##
## Call:
## lm(formula = pmi ~ cond, data = pmi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.8534 -0.8534 0.1466 1.1231 1.6231
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.3769 0.1618 33.222 <2e-16 ***
## cond 0.4765 0.2357 2.022 0.0454 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.305 on 121 degrees of freedom
## Multiple R-squared: 0.03268, Adjusted R-squared: 0.02468
## F-statistic: 4.088 on 1 and 121 DF, p-value: 0.0454
summary(lm(reaction~cond + pmi, data = pmi))
##
## Call:
## lm(formula = reaction ~ cond + pmi, data = pmi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.07636 -1.06128 -0.06346 0.94573 2.94299
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.52687 0.54968 0.958 0.340
## cond 0.25435 0.25582 0.994 0.322
## pmi 0.50645 0.09705 5.219 7.66e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.393 on 120 degrees of freedom
## Multiple R-squared: 0.2059, Adjusted R-squared: 0.1927
## F-statistic: 15.56 on 2 and 120 DF, p-value: 9.83e-07
summary(lm(reaction~cond, data = pmi))
##
## Call:
## lm(formula = reaction ~ cond, data = pmi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.4957 -1.0000 -0.2457 1.2543 3.5000
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.2500 0.1906 17.052 <2e-16 ***
## cond 0.4957 0.2775 1.786 0.0766 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.537 on 121 degrees of freedom
## Multiple R-squared: 0.02568, Adjusted R-squared: 0.01763
## F-statistic: 3.19 on 1 and 121 DF, p-value: 0.07661
# PROCESS
process (data = pmi, y = "reaction", x = "cond", m = "pmi", total = 1, normal = 1, model = 4, seed = 31216)
##
## ********************* PROCESS for R Version 4.3.1 *********************
##
## Written by Andrew F. Hayes, Ph.D. www.afhayes.com
## Documentation available in Hayes (2022). www.guilford.com/p/hayes3
##
## ***********************************************************************
##
## Model : 4
## Y : reaction
## X : cond
## M : pmi
##
## Sample size: 123
##
## Custom seed: 31216
##
##
## ***********************************************************************
## Outcome Variable: pmi
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.1808 0.0327 1.7026 4.0878 1.0000 121.0000 0.0454
##
## Model:
## coeff se t p LLCI ULCI
## constant 5.3769 0.1618 33.2222 0.0000 5.0565 5.6973
## cond 0.4765 0.2357 2.0218 0.0454 0.0099 0.9431
##
## ***********************************************************************
## Outcome Variable: reaction
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.4538 0.2059 1.9404 15.5571 2.0000 120.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 0.5269 0.5497 0.9585 0.3397 -0.5615 1.6152
## cond 0.2544 0.2558 0.9943 0.3221 -0.2522 0.7609
## pmi 0.5064 0.0970 5.2185 0.0000 0.3143 0.6986
##
## ************************ TOTAL EFFECT MODEL ***************************
## Outcome Variable: reaction
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.1603 0.0257 2.3610 3.1897 1.0000 121.0000 0.0766
##
## Model:
## coeff se t p LLCI ULCI
## constant 3.2500 0.1906 17.0525 0.0000 2.8727 3.6273
## cond 0.4957 0.2775 1.7860 0.0766 -0.0538 1.0452
##
## ***********************************************************************
## Bootstrapping progress:
##
|
| | 0%
|
| | 1%
|
|> | 1%
|
|> | 2%
|
|>> | 2%
|
|>> | 3%
|
|>> | 4%
|
|>>> | 4%
|
|>>> | 5%
|
|>>> | 6%
|
|>>>> | 6%
|
|>>>> | 7%
|
|>>>>> | 7%
|
|>>>>> | 8%
|
|>>>>> | 9%
|
|>>>>>> | 9%
|
|>>>>>> | 10%
|
|>>>>>>> | 10%
|
|>>>>>>> | 11%
|
|>>>>>>> | 12%
|
|>>>>>>>> | 12%
|
|>>>>>>>> | 13%
|
|>>>>>>>> | 14%
|
|>>>>>>>>> | 14%
|
|>>>>>>>>> | 15%
|
|>>>>>>>>>> | 15%
|
|>>>>>>>>>> | 16%
|
|>>>>>>>>>> | 17%
|
|>>>>>>>>>>> | 17%
|
|>>>>>>>>>>> | 18%
|
|>>>>>>>>>>> | 19%
|
|>>>>>>>>>>>> | 19%
|
|>>>>>>>>>>>> | 20%
|
|>>>>>>>>>>>>> | 20%
|
|>>>>>>>>>>>>> | 21%
|
|>>>>>>>>>>>>> | 22%
|
|>>>>>>>>>>>>>> | 22%
|
|>>>>>>>>>>>>>> | 23%
|
|>>>>>>>>>>>>>>> | 23%
|
|>>>>>>>>>>>>>>> | 24%
|
|>>>>>>>>>>>>>>> | 25%
|
|>>>>>>>>>>>>>>>> | 25%
|
|>>>>>>>>>>>>>>>> | 26%
|
|>>>>>>>>>>>>>>>> | 27%
|
|>>>>>>>>>>>>>>>>> | 27%
|
|>>>>>>>>>>>>>>>>> | 28%
|
|>>>>>>>>>>>>>>>>>> | 28%
|
|>>>>>>>>>>>>>>>>>> | 29%
|
|>>>>>>>>>>>>>>>>>> | 30%
|
|>>>>>>>>>>>>>>>>>>> | 30%
|
|>>>>>>>>>>>>>>>>>>> | 31%
|
|>>>>>>>>>>>>>>>>>>>> | 31%
|
|>>>>>>>>>>>>>>>>>>>> | 32%
|
|>>>>>>>>>>>>>>>>>>>> | 33%
|
|>>>>>>>>>>>>>>>>>>>>> | 33%
|
|>>>>>>>>>>>>>>>>>>>>> | 34%
|
|>>>>>>>>>>>>>>>>>>>>> | 35%
|
|>>>>>>>>>>>>>>>>>>>>>> | 35%
|
|>>>>>>>>>>>>>>>>>>>>>> | 36%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 36%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 37%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 38%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 38%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 39%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 40%
|
|>>>>>>>>>>>>>>>>>>>>>>>>> | 40%
|
|>>>>>>>>>>>>>>>>>>>>>>>>> | 41%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 41%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 42%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 43%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>> | 43%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>> | 44%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 44%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 45%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 46%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 46%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 47%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 48%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 48%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 49%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 49%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 50%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 51%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 51%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 52%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 52%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 53%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 54%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 54%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 55%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 56%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 56%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 57%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 57%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 58%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 59%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 59%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 60%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 60%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 61%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 62%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 62%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 63%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 64%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 64%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 65%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 65%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 66%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 67%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 67%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 68%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 69%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 69%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 70%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 70%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 71%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 72%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 72%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 73%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 73%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 74%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 75%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 75%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 76%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 77%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 77%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 78%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 78%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 79%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 80%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 80%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 81%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 81%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 82%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 83%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 83%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 84%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 85%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 85%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 86%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 86%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 87%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 88%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 88%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 89%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 90%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 90%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 91%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 91%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 92%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 93%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 93%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 94%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 94%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 95%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 96%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 96%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 97%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 98%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 98%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 99%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>| 99%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>| 100%
##
## ************ TOTAL, DIRECT, AND INDIRECT EFFECTS OF X ON Y ************
##
## Total effect of X on Y:
## effect se t p LLCI ULCI
## 0.4957 0.2775 1.7860 0.0766 -0.0538 1.0452
##
## Direct effect of X on Y:
## effect se t p LLCI ULCI
## 0.2544 0.2558 0.9943 0.3221 -0.2522 0.7609
##
## Indirect effect(s) of X on Y:
## Effect BootSE BootLLCI BootULCI
## pmi 0.2413 0.1322 0.0143 0.5254
##
## Normal theory test for indirect effect(s):
## Effect se Z p
## pmi 0.2413 0.1300 1.8559 0.0635
##
## ******************** ANALYSIS NOTES AND ERRORS ************************
##
## Level of confidence for all confidence intervals in output: 95
##
## Number of bootstraps for percentile bootstrap confidence intervals: 5000
Sobel Test: 간접효과 ab에 대한 유의도 검정을 할 때, ab에 대한 standard error의 estimation이 필요하다. 이 때 각 계수 a와 b의 표준오차를 이용하여 ab의 표준오차를 추정하고, Z test를 실시하여 ab=0이라는 귀무가설을 기각할 수 있는지 확인하면 된다. 하지만 이는 ab가 정규분포를 따른다는 현실적이지 않은 가정을 바탕으로 한다는 문제점이 있다. a와 b가 정규분포를 따른다고 해서, ab가 정규분포를 따르는 것은 아니기 때문이다.
Bootstrapping Confidence Interval (Asymemtric): Bootstrap은 기본적으로 우리가 가지고 있는 표본을 모집단이라고 가정하고 해당 표본을 이용하여 복원추출을 통해 새로운 표본을 복사해내는 것이다. 각 표본들로부터 ab를 추정하고, 이 ab들을 모아서 분포를 형성한 후, percentile 신뢰구간을 얻어내는 방식이다. 이는 비모수적 추정방식이기 때문에 정규성 가정을 필요로 하지 않아서 많이 사용된다. 한편, a와 b 각각에 대한 검증은 t분포가 더 정확하다. 좋아보인다고 다 bootstrap 때려버리지 말 것.
Monte Carlo: a,b의 평균과 표준편차를 이용하여, a와 b가 정규분포를 각각 독립적으로 따른다는 가정 하에 a와 b를 k번 뽑아서 k개의 ab를 만들고 이것의 CI를 구하는 방식이다. 정보에 결측이 있을 때에는 부트스트랩이 안 돌아가서 이 때 사용하는 걸로 알고 있다.
Sobel Test는 보수적이어서 1종 오류가 걱정되면 사용해도 되지만 그러기에는 간접 효과의 존재를 지나칠 가능성이 너무 높아서, 검정력이 높은 Bootstrap을 권장한다. 한편, Bias-Corrected/Accelerated Bootstrap이 더 좋은 검정력을 가지나 이것은 미미하게 1종 오류를 증가시키는 경향이 있으므로 (Bias를 사람이 조정하는 것이므로) 이것이 염려되면 Percentile Bootstrap이나 Monte Carlo Bootstrap을 사용하자.
아래는 X가 Continuous Variable일 때 PROCESS 매개분석 식이다.
process (data=estress,y="withdraw",x="estress",m="affect",total=1,
stand=1,model=4,seed=100770)
Standardized coefficients:
coeff
estress -0.0877
affect 0.4464
************ TOTAL, DIRECT, AND INDIRECT EFFECTS OF X ON Y ************
Total effect of X on Y:
effect se t p LLCI ULCI c_cs
0.0561 0.0542 1.0353 0.3015 -0.0506 0.1629 0.0641
Direct effect of X on Y:
effect se t p LLCI ULCI c'_cs
-0.0768 0.0524 -1.4667 0.1437 -0.1800 0.0263 -0.0877
Indirect effect(s) of X on Y:
Effect BootSE BootLLCI BootULCI
affect 0.1330 0.0333 0.0713 0.2033
Completely standardized indirect effect(s) of X on Y:
Effect BootSE BootLLCI BootULCI
affect 0.1518 0.0376 0.0808 0.2291
결과에 대한 해석만 잠깐 하자면, 위에 세 식은 다 OLS Regression 식이고, 아래 매개분석 결과를 보자. c = 0.0561, c’ = -0.0768, ab(CI) = [0.0713, 0.2033] 으로 0을 straddle하지 않으므로 간접효과가 유의하다고 볼 수 있다. 반면 c와 c’값은 p값도 0.05보다 크고 신뢰구간도 0을 포함하므로 95% 유의수준에서 유의하지 않음을 확인하자.
Total Effect의 결과를 도출한다. 매개분석의 핵심은 사실 Indirect Effect가 유의한지를 보는 것이기 때문에 Total Effect는 선택사항인가보다.
c_cs, c’_cs를 보면 Standardized된 effect의 결과도 확인할 수 있다. 기존 비표준화 계수에 (독립변수의 표준편차/종속변수의 표준편차)를 곱하면 표준화된 계수를 얻을 수 있다. 뒤에서 언급하겠지만 표준화계수를 구하려면 변수들을 사전에 표준화를 한 후 분석을 진행해야한다. 표준화를 하게 되면 해석을 할 때 X의 1표준편차만큼 변화할 때 Y가 계수 표준편차만큼 변한다는 식으로 이해하면 되겠다.
그런데 이건 X가 Continuous니까 이야기하는 거지 X가 Dichotomous일 때는 X를 표준화하는 것이 별로 의미가 없어 보인다. 이 때는 Partially Standardized하라고 한다(Chapter 4). 그런데 PROCESS에서는 X가 이분 변수일 때 그냥 Stand = 1 입력하면 알아서 이분변수임을 인식해서 Partially Standaridize 해준다고 한다!
이걸 Causal Step Strategy라고 하는데, 쓰지 않는 것을 권장한다고 한다.
이것의 문제점을 설명하기 위해 Hayes는 3가지 통계적 추론 원칙을 제시한다.
현상의 수량화가 주장과 직접적인 연관이 있어야 한다.
최소한의 통계적 추론을 하는 것이 좋다 (검정력 issue)
Uncertainty에 대한 부가 정보가 전달되어야 한다.
추가로, c = 0이라고 해도 간접효과가 존재할 수 있다. 예를 들어 c’와 ab의 부호가 다른 경우 두 개 합치면 0에 가까워지지 않겠는가? (이런 경우 Suppression, 억제효과가 나타났다고 한다.) 바로 위의 Continuous Mediation 예시가 그렇다. 또한, ab는 certainty가 높아서 신뢰구간이 매우 좁은 반면 c’는 신뢰구간이 매우 넓어서 total effect가 유의하지 않을 수도 있다. 이러한 이유로 간접 효과의 검정력이 총 효과의 검정력보다 높다고 한다. 한편, 효과를 억제하는 Subpopulation이 존재하는 경우에도 위와 같은 모순적인 상황이 나타날 수도 있다.
사실 완전 매개가 가장 이상적인 상황은 아니다. M이 완전히 매개한다는 것은 곧 내가 이 현상에 대해 확신한다는 것인데 이 말은 즉 다른 매개변수가 개입될 여지가 없다고 확신을 해버리는 것과 같다.
모든 모델은 기본적으로 어느 정도 misspecified 되어있기 마련이다. 즉 부분매개가 일반적인 결과이다.
완전 매개와 부분 매개는 Sample Size Dependent한 경향이 있다.
완전 매개와 부분 매개라는 결과가 우리가 현상을 이해하는 데 무엇을 제공해주는 지 의문이다. 따라서 가설을 세울 때에는 ‘완전 매개’, ‘부분 매개’ 등을 가정하는 것은 적절치 않아 보인다.
process(data=estress,y="withdraw",x="estress",m="affect",cov=c("ese",
"sex","tenure"),total=1,model=4,seed=100770)
Model : 4
Y : withdraw
X : estress
M : affect
Covariates:
ese sex tenure
Epiphenomenal Association: M과 높은 관련을 가지는 또 다른 변수가 X로부터 영향을 받아서 Y를 설명할 수도 있는데, 이것이 M이 매개하는 현상으로 잘못 추론할 가능성이 있다. 또한, Confounding이 있다면 어떤 교란 변수가 X와 Y 모두와 관련이 있어 실제로 인과 관계를 가지지 않는 것이 관계가 있는 것처럼 보이게 할 수도 있다 (TV 많이 보면 살이 많이 찐다는 것 보다는, TV를 많이 보니까 운동을 적게 하면 살이 많이 찐다던지 하는 다른 변수들의 존재가 영향을 미칠 가능성이 있음). 즉 이런 변수들의 존재는 실제 우리가 보고자 하는 관계에 대해 설득력 있는 주장을 하지 못하게 만든다.
이럴 때는 Covariance로 통제를 해주어야 한다. 즉 계산은 똑같이 Multiple Regression처럼 돌아가서 설명력을 가지기는 하지만, 결과에는 드러나지 않게 된다. 위에 적혀있는 코드처럼 쓰면 된다. 교수님께서 말씀하시기로는 원래 IV와 COV 간의 공분산 처리를 해 주어야 한다고 한다. 나도 저렇게 식을 처리하면 다중공선성 문제가 생기지 않을까 하는 고민이 들기는 한다. 근데 이건 애초에 회귀분석이라…
Effect Scaling은 X와 Y가 같을 때만 가능하다 (정확하게는 같은 단위).
Multiple X에 대한 매개분석을 돌릴 때는 X가 다중공선성이 심하면 Problematic 해질 수 있다. 그래서 나머지 두 개를 통제한 상태에서 돌려야 각각의 간접 효과, 직접 효과를 제대로 추정할 수 있다. 만약 한 번에 돌리면 최악의 상황에는 관계가 있음에도 서로 상쇄되어 없는 것처럼 보일 수도 있기 때문이다.
process (data=datafile,y="dv",x="iv1",m="med",cov=c("iv2","iv3"), model=4,seed=5235) process (data=datafile,y="dv",x="iv2",m="med",cov=c("iv1","iv3"), model=4,seed=5235)process (data=datafile,y="dv",x="iv3",m="med",cov=c("iv1","iv2"), model=4,seed=5235)
매개 변수가 여러개일 때 종류는 Parallel과 Serial로 나뉜다. Parallel은 매개 변수끼리 독립을 가정, Serial은 한 매개가 다른 매개에 영향을 주는 경로의 존재성을 인정하고 모델에 반영하는 것이다.
summary(lm(import~cond,data=pmi)) # a1
summary(lm(pmi~cond,data=pmi)) # a2
summary(lm(reaction~cond+import+pmi,data=pmi)) # b1, b2, c'
# PROCESS
process (data=pmi,y="reaction",x="cond",m=c("import","pmi"), total=1, contrast=1, model=4, modelres=1, seed=31216)
************ TOTAL, DIRECT, AND INDIRECT EFFECTS OF X ON Y ************
Total effect of X on Y:
effect se t p LLCI ULCI
0.4957 0.2775 1.7860 0.0766 -0.0538 1.0452
Direct effect of X on Y:
effect se t p LLCI ULCI
0.1034 0.2391 0.4324 0.6662 -0.3701 0.5768
Indirect effect(s) of X on Y:
Effect BootSE BootLLCI BootULCI
TOTAL 0.3923 0.1653 0.0864 0.7396
import 0.2033 0.1137 0.0048 0.4471
pmi 0.1890 0.1053 0.0108 0.4201
(C1) 0.0144 0.1441 -0.2737 0.2984
Specific indirect effect contrast definition(s):
(C1) import minus pmi
매개변수 간의 차이 검증을 할 수 있다(Conduct a test of
differences between specific indirect effects)
PROCESS 결과를 보면 Indirect Effect 부분에 (C1)을 확인할 수 있는데 위의
예시에서는 import minus pmi를 확인할 수 있다.
이 때 어떤 매개변수의 효과가 더 큰지 궁금할 수 있는데 이것은 두 간접효과의 부호가 동일할 때만 적용 가능하다. 두 간접 효과 간의 차이 검증을 Bootstrapping한 결과를 확인할 수 있다.
만약 부호가 다르다먼, \(|{a_ib_i}|-|{a_jb_j}|\) 를 계산해주는 Contrast = 2 코드를 사용하자.
간접효과 끼리의 Iinear Combination을 통한 비교도 가능하다.
*************** CORRELATIONS BETWEEN MODEL RESIDUALS ****************
import pmi reaction
import 1.0000 0.2578 0.0000
pmi 0.2578 1.0000 0.0000
reaction 0.0000 0.0000 1.0000
***********************************************************************
Correlation between model residuals를 보여준다. 본 예시의 경우 reaction은 대체 다른 변수들과 어떻게 상관이 0일수가 있는거지?
# Regression : 모형에 있는 모든 계수를 알려주지는 않는다
summary(lm(import~cond,data=pmi))
summary(lm(pmi~cond+import,data=pmi))
summary(lm(reaction~cond+import+pmi,data=pmi))
# PROCESS
process (data=pmi,y="reaction",x="cond",m=c("import","pmi"),total=1,
contrast=1,model=6,seed=31216)
하면서 느끼는 거지만 PROCESS는 진짜 혜자롭다. 너무 편하게 결과를 해석할 수 있게 해준다.
위의 예시에서 차이 검정을 한 결과를 보면 3개의 간접 효과가 차이가 없는 것으로 나오는데, Ind 1은 유의한 반면 나머지 두 간접효과는 유의하지 않다. 이 경우를 어떻게 해석해야 하는가?
다중 매개의 문제점을 살짝 언급하면, 매개 변수 간의 다중공선성과, Total indirect effect를 볼 때 유의하지 않게 나오더라도 specific한 indirect effect는 유의할 수도 있다는 점이다. 또한 Sampling Variance가 커지면 유의한 효과의 존재를 잡아내는 것이 어려워진다.
d1<-as.numeric(protest$protest==1) # Dummy 변수 생성
d2<-as.numeric(protest$protest==2) # protest == 0 이 알아서 reference group이 됨
protest<-data.frame(protest,d1,d2)
summary(lm(liking~d1+d2,data=protest)) # Total Effect (X -> Y)
summary(lm(respappr~d1+d2,data=protest)) # Indirect Effect (X -> M)
summary(lm(liking~d1+d2+respappr,data=protest)) # Ind / Direct Effect (X, M -> Y)
해석할 때는 이거 Multicategorical이라 Dichotomous때처럼 설명하는데, 참조 그룹과 비교했을 때 비교 집단의 M의 평균 차이, Y의 평균 차이, M을 Sample Mean으로 Control했을 때 조정된 Y의 평균 차이(Adjusted Mean of Y), 이런 식으로.
이 때 내가 제기했던 문제 중에 하나가 \(a_i\) 들이랑 \(b\)랑 독립적일까, 하는 것인데 이걸 homogenity of regression이라 한다. 이걸 검정하기 위해서 Dummy Variable과 M의 상호작용 항을 더미변수 개수만큼 생성하고 본 항들의 계수가 모두 0인가에 대한 유의성 검정을 시행하면 된다. 유의하면 안 되는 것이다. R값의 변화량을 보면 되겠다. 본 내용은 Hayes & Preacher (2014)를 참고하라.
model1<-lm(liking~respappr,data=protest)
model2<-lm(liking~respappr+d1+d2,data=protest)
anova(model1,model2)
## Analysis of Variance Table
##
## Model 1: liking ~ respappr
## Model 2: liking ~ respappr + d1 + d2
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 127 106.56
## 2 125 105.34 2 1.2279 0.7286 0.4846
Relative Direct effect들에 대한 Omnibus Test이다. d1, d2에서 Y로 가는 Direct Effect가 Overally significant한지를 보는 것이다. 원리는 그냥 anova이고 늘어난 변수에 따른 설명력의 변화량이 유의한지 보는 것이다. d1, d2로 두개니까 자유도 변화량은 2인 것을 확인할 수 있다. 참고로 Indirect Effect의 Omnibus Test는 마땅치 않다고 한다.
process (data=protest,y="liking",x="protest",m="respappr",mcx=1,
total=1,model=4,seed=30217)
************ TOTAL, DIRECT, AND INDIRECT EFFECTS OF X ON Y ************
Relative total effects of X on Y:
effect se t p LLCI ULCI
X1 0.5158 0.2255 2.2870 0.0239 0.0695 0.9621
X2 0.4431 0.2231 1.9863 0.0492 0.0016 0.8845
Omnibus test of total effect of X on Y:
R2-chng F df1 df2 p
0.0463 3.0552 2.0000 126.0000 0.0506
----------
Relative direct effects of X on Y:
effect se t p LLCI ULCI
X1 -0.0037 0.2190 -0.0169 0.9865 -0.4371 0.4297
X2 -0.2202 0.2280 -0.9658 0.3360 -0.6715 0.2310
Omnibus test of direct effect of X on Y:
R2-chng F df1 df2 p
0.0087 0.7286 2.0000 125.0000 0.4846
----------
Relative indirect effects of X on Y:
protest -> respappr -> liking
Effect BootSE BootLLCI BootULCI
X1 0.5195 0.1518 0.2471 0.8442
X2 0.6633 0.1677 0.3680 1.0141
Coding of categorical X variable for analysis:
protest X1 X2
0.0000 0.0000 0.0000
1.0000 1.0000 0.0000
Multicategorical X라는 뜻이다. 이거 지정해주면 X가 범주형인 걸 알아먹는다. 여기서 체크하면 좋을 것은 Dummy Coding이 어떻게 되었는지를 결과에서 확인하면 될 것 같다.
다른 Coding 방식도 알아보자. 아래는 대비코딩의 코드다.
# Contrast(Helmert) Coding (mcx = 3)
d1<-(protest$protest==0)*(-2/3)+(protest$protest > 0)*(1/3)
d2<-(protest$protest==1)*(-1/2)+(protest$protest==2)*(1/2)
protest<-data.frame(protest,d1,d2)
process (data=protest,y="liking",x="protest",m="respappr",mcx=3,
total=1,model=4,seed=30217)
Coding of categorical X variable for analysis:
protest X1 X2
0.0000 -0.6667 0.0000
1.0000 0.3333 -0.5000
2.0000 0.3333 0.5000
대비코딩은 한 집단과 나머지 집단들을 비교해나가는 방식이다. 위 예시를
보면 0인 그룹과 1,2인 그룹의 대비, 1인 그룹과 2인 그룹의 대비를 하였다.
중복되지 않게 나누어 비교하는 것이 중요하고, 만약 내가 위 예시처럼
순서대로 비교하고싶지 않다면 mcx=5/xcatcode= 로
customizing하면 될 것이다.
mcx=2는 Sequential Coding으로 순차적인 비교를 하고싶을 때 사용하면 된다. 예를 들어 Dummy Coding은 간격에 따른 동일한 비교를 전제로 하지만, 각 간격의 동일성이 유지되지 않을 경우에는 순차 코딩을 통해 비교할 수 있다.
mcx=4는 Effect Coding으로 한 집단이 전체의 평균과 차이가 있는지를 보는 것이다. 각 지정변수의 계수가 바로 전체의 평균과 본 집단의 평균 간의 차이이다.
참고로 Coding System이 바뀐다고 해서 M -> Y 효과는 바뀌지 않는다. 또한, 어떤 Coding System을 이용하느냐에 따라 설명이 상이해질 수 있다. 자세한 내용은 필요할 때 찾아보는 것으로 하자.
Coding System에 대한 부가적 이해
Total Effect의 Nonsignificance: 총 효과가 유의하지 않다고 해서 간접 효과가 유의하지 않은 건 아니라 했다!
간접 효과의 크기 비교: Contrast = 1, 그런데 X랑 Y가 같은 것으로 묶여있기만 하면 표준화 하지 않아도 비교 가능? Effect Scaling에 대한 Practical한 탐구 필요
Confounding과 Covariance
Multiple Mediation에서 M1, M2간의 공분산이 가지는 의미? (각 표준화 회귀계수의 곱?)
조절효과 자체는 그렇게 복잡하지 않다. 다만 X와 W의 상호작용이 추가되고, \(\theta_{X->Y}\)가 Conditional effect of X on Y로, 대개 \(b_1 + b_3W\)로 표현되며 X가 1unit 변할 때 W라는 조절변수에 의해 조건부로 효과를 다르게 미친다는 것을 의미한다. 이것은 W에 대한 함수로, 이것의 계수인 \(b_3\)가 유의한가 유의하지 않은가가 바로 조절효과의 핵심이 되겠다.
나의 이해의 편의를 위해 \(b_3\)식을 가져와 봤다. 즉 w가 한 단위 변화했을 때, x의 한 단위 변화가 Y의 변화에 얼마나 영향을 주는가. 기울기의 의미는 X가 1 변할 때 Y가 얼마를 변하느냐를 의미하기 때문이다. 한편, \(b_1\)은 w=0일 때 x의 한 단위 변화가 Y에 미치는 영향, \(b_2\)는 x=0일 때 w의 한 단위 변화가 Y에 미치는 영향이다.
이제부터 조절효과와 관련된 여러 가지 Model들을 볼 것인데 하나씩 고민해보도록 하자.
framskep<-disaster$frame*disaster$skeptic
disaster<-data.frame(disaster,framskep) # framskep이라는 변수를 만들어서 써도 된다.
summary(lm(justify~frame+skeptic+frame*skeptic,data=disaster))
##
## Call:
## lm(formula = justify ~ frame + skeptic + frame * skeptic, data = disaster)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.1267 -0.5864 -0.0117 0.5084 2.5484
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.45153 0.14904 16.449 < 2e-16 ***
## frame -0.56247 0.21792 -2.581 0.010539 *
## skeptic 0.10508 0.03813 2.756 0.006375 **
## frame:skeptic 0.20118 0.05527 3.640 0.000344 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8129 on 207 degrees of freedom
## Multiple R-squared: 0.2463, Adjusted R-squared: 0.2353
## F-statistic: 22.54 on 3 and 207 DF, p-value: 1.138e-12
첫 번째 모델은 일반적인 Regression 모델으로, 상호작용 항을 추가한 것이다. X만 들어간 단순 회귀나 X,W가 들어간 다중 회귀를 보면 예측변수 X가 유의하지 않은데, 상호작용 항 XW(framskep)을 추가하니 유의한 모델이 되었다. 또한, 모델2와 비교해보면 R square 값이 0.048만큼 차이가 나는데, 이것을 size of the moderation effect라고 하기에는 본 이슈를 하나의 숫자로 oversimplify하는 결과를 낳기에 조심할 필요가 있다.
result <- process (data=disaster,y="justify",x="frame",w="skeptic",model=1,jn=1,
plot=1, save = 2)
##
## ********************* PROCESS for R Version 4.3.1 *********************
##
## Written by Andrew F. Hayes, Ph.D. www.afhayes.com
## Documentation available in Hayes (2022). www.guilford.com/p/hayes3
##
## ***********************************************************************
##
## Model : 1
## Y : justify
## X : frame
## W : skeptic
##
## Sample size: 211
##
##
## ***********************************************************************
## Outcome Variable: justify
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.4962 0.2463 0.6609 22.5430 3.0000 207.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 2.4515 0.1490 16.4486 0.0000 2.1577 2.7454
## frame -0.5625 0.2179 -2.5811 0.0105 -0.9921 -0.1328
## skeptic 0.1051 0.0381 2.7559 0.0064 0.0299 0.1803
## Int_1 0.2012 0.0553 3.6401 0.0003 0.0922 0.3101
##
## Product terms key:
## Int_1 : frame x skeptic
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## X*W 0.0482 13.2503 1.0000 207.0000 0.0003
## ----------
## Focal predictor: frame (X)
## Moderator: skeptic (W)
##
## Conditional effects of the focal predictor at values of the moderator(s):
## skeptic effect se t p LLCI ULCI
## 1.5920 -0.2422 0.1495 -1.6203 0.1067 -0.5369 0.0525
## 2.8000 0.0008 0.1166 0.0072 0.9942 -0.2290 0.2307
## 5.2000 0.4837 0.1505 3.2134 0.0015 0.1869 0.7804
##
## Moderator value(s) defining Johnson-Neyman significance region(s):
## Value % below % above
## 1.1713 6.6351 93.3649
## 3.9339 67.7725 32.2275
##
## Conditional effect of focal predictor at values of the moderator:
## skeptic effect se t p LLCI ULCI
## 1.0000 -0.3613 0.1729 -2.0900 0.0378 -0.7021 -0.0205
## 1.1713 -0.3268 0.1658 -1.9715 0.0500 -0.6536 0.0000
## 1.4211 -0.2766 0.1559 -1.7743 0.0775 -0.5839 0.0307
## 1.8421 -0.1919 0.1407 -1.3637 0.1742 -0.4693 0.0855
## 2.2632 -0.1072 0.1280 -0.8373 0.4034 -0.3595 0.1451
## 2.6842 -0.0225 0.1185 -0.1895 0.8499 -0.2561 0.2112
## 3.1053 0.0623 0.1131 0.5505 0.5826 -0.1607 0.2852
## 3.5263 0.1470 0.1123 1.3082 0.1923 -0.0745 0.3684
## 3.9339 0.2290 0.1161 1.9715 0.0500 0.0000 0.4579
## 3.9474 0.2317 0.1163 1.9914 0.0477 0.0023 0.4610
## 4.3684 0.3164 0.1246 2.5388 0.0119 0.0707 0.5621
## 4.7895 0.4011 0.1364 2.9401 0.0037 0.1321 0.6700
## 5.2105 0.4858 0.1509 3.2192 0.0015 0.1883 0.7833
## 5.6316 0.5705 0.1674 3.4083 0.0008 0.2405 0.9005
## 6.0526 0.6552 0.1853 3.5354 0.0005 0.2898 1.0206
## 6.4737 0.7399 0.2044 3.6208 0.0004 0.3370 1.1428
## 6.8947 0.8246 0.2242 3.6785 0.0003 0.3827 1.2666
## 7.3158 0.9093 0.2446 3.7176 0.0003 0.4271 1.3916
## 7.7368 0.9941 0.2655 3.7440 0.0002 0.4706 1.5175
## 8.1579 1.0788 0.2868 3.7617 0.0002 0.5134 1.6441
## 8.5789 1.1635 0.3083 3.7735 0.0002 0.5556 1.7713
## 9.0000 1.2482 0.3301 3.7810 0.0002 0.5974 1.8990
##
## Data for visualizing the conditional effect of the focal predictor:
## frame skeptic justify
## 0.0000 1.5920 2.6188
## 1.0000 1.5920 2.3766
## 0.0000 2.8000 2.7458
## 1.0000 2.8000 2.7466
## 0.0000 5.2000 2.9980
## 1.0000 5.2000 3.4816
##
## ******************** ANALYSIS NOTES AND ERRORS ************************
##
## Level of confidence for all confidence intervals in output: 95
##
## W values in conditional tables are the 16th, 50th, and 84th percentiles.
Mean Centering은 야무지다. 만약 b1이나 b2같은 계수를 해석할 때 각각 W나 X가 0일때 X나 W의 변화를 보고자 하는 것인데 만약 W나 X가 0일 때의 데이터가 없어서 아무런 의미를 가지지 못한다면 해석이 불가능하다. 따라서 X와 W각각의 표본평균을 빼서, 평균 중심화를 해준다. 이렇게 되면 표준편차는 그대로 유지가 되고 계수를 해석할 때 ‘W와 X가 각각 평균일 때 X와 W의 변화량’ 으로 해석할 수 있을 것이다.
skepticp<-disaster$skeptic-3.378 # 3.378 대신에 mean(disaster$skeptic) 쓰면 안 되나?
framskpp<-disaster$frame*skepticp
summary(lm(disaster$justify~disaster$frame+skepticp+framskpp))
##
## Call:
## lm(formula = disaster$justify ~ disaster$frame + skepticp + framskpp)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.1267 -0.5864 -0.0117 0.5084 2.5484
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.80650 0.07753 36.201 < 2e-16 ***
## disaster$frame 0.11713 0.11206 1.045 0.297125
## skepticp 0.10508 0.03813 2.756 0.006375 **
## framskpp 0.20118 0.05527 3.640 0.000344 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8129 on 207 degrees of freedom
## Multiple R-squared: 0.2463, Adjusted R-squared: 0.2353
## F-statistic: 22.54 on 3 and 207 DF, p-value: 1.138e-12
지금 W에 대해서만 Mean centering을 한 결과이다. 따라서 설명력과 MSE 모두 동일하게 유지되고, W와 XW의 t값, p-value 또한 동일하게 유지된다. 상호작용항 XW가 변화가 없는 것은, b3을 해석할 때 ‘W가 한 단위 변화할 때, X가 한 단위 변화하면’ Y가 얼마나 변하는가 이므로 W가 변화하는 시작점이 바뀌는 것과는 무관하기 때문이다. 그러나 b1, 즉 W가 0일 때 X값이 1 unit 증가하는 것과, W가 평균일 때 X값이 1 unit 증가하는 것은 그 효과가 다를 가능성이 높다 (Pick a point 방식을 떠올려 보면 W값에 따라 유의할 수도 있고 유의하지 않을 수도 있듯).
만약 여기서 추가로 X의 Coding을 0,1이 아닌 -0.5, 0.5로 바꾼다면 X가 평행이동을 한 것인데 (0.5 Mean Centering) 이 경우에는 위와 같은 원리로 b3값과 b1값은 변하지 않을 것이고 대신 b2값은 X가 0일때 W의 변화에 따른 Y값의 변화이므로 b2만 변하게 된다. 이것은 Moderation의 맥락에서 X와 W의 역할이 동일함을 의미한다.
PROCESS는 Mean centering을 할 때 Multicategorical은 centering을 하지 않는다. 이 때 연속변수만 중심화를 하고 싶으면 center = 2를 입력해야 한다.
조절효과 plot을 그리기 위한 코드이다. Data for visualizing the conditional effect of the focal predictor 부분이 새로이 생성되는 것으로 보인다. 참고로 covariate이 있었다면 해당 covariate이 평균일 때로 가정하고 결과값을 뽑아낸다. 위의 결과를 이용해 visualize하는 코드는 다음과 같다.
x<-c(0,1,0,1,0,1)
w<-c(1.592,1.592,2.80,2.80,5.20,5.20) # Process의 column 성분을 뽑아서 쓸 수 없나?
y<-c(2.619,2.377,2.746,2.747,2.998,3.482) # 이렇게 결과창에 있는거 옮겨써야 한다.
plot(y=y,x=w,pch=15,col="black",xlab="Climate Change Skepticism (W)",
ylab="Negative Justifications (Y)")
legend.txt<-c("Natural causes (X=0)","Climate change (X=1)")
legend("bottomright",legend=legend.txt,lty=c(3,1),lwd=c(3,2), col=c("blue","red"))
lines(w[x==0],y[x==0],lty=3,lwd=3,col="blue") # X=0일 때 W와 Y를 이음
lines(w[x==1],y[x==1],lty=1,lwd=2,col="red") # X=1일 때 W와 Y를 이음
Pick a point approach는 \(\theta_{X->Y}\)를 추정하고 이의 표준오차를 추정하여 t-test를 통해 신뢰구간을 만들어 유의성을 검정한다. 만약 Centering 한다고 치고 각 W값마다 어떤 값을 가지게 되는지 나타내는 방법은 다음과 같다. 만약 W가 Highly Skewed 되어 있다면 -1표준편차, +1표준편차 했을 때 유의미한 값이 나오지 않을 수 있다. 그래서 정규분포 상에서 -1표준편차는 16%, +1표준편차는 84% 이므로 16%, 50%, 84%에서의 W값을 구해서 Point by point로 결과를 도출한다. 아래 1.592값은 16th percentil일 때 W 값이다.
skepticp<-disaster$skeptic-1.592;framskpp<-disaster$frame*skepticp summary(lm(disaster$justify∼disaster$frame+skepticp+framskpp))
위의 plot을 참고해보면, 두 직선이 겹치는 교점이 있고 직선 사이의 간격이 점점 벌어지는 것도 확인 가능한데, 저 간격이 언제부터 언제까지 유의하게 벌어지느냐가 point이다. 저 Y값의 차이는 즉 X가 한 단위 차이날 때, W값이 얼마일 때부터 Y값이 유의하게 벌어지냐의 의미이기 때문이다 (이 때, W가 한 단위 변할 때 Y값의 변화량은 b3(기울기 차이)으로 동일하고, 변화하고 난 후의 결과가 유의미하게 벌어져있는 순간을 보는 것이 Probing이다). b3 검정이랑은 다르다는 것을 이해하자. b3 검정은 상호작용 효과 자체의 존재에 대한 검정이자, 기울기의 차이 검정이다 (기울기의 차이 검정이라는 건 X-Y든 W-Y든 다르지 않다).
그래서 moments = 1이란, pick a point 할 때 median percentile 대신 mean stdev로 찾고 싶으면 쓰면 된다.
Pick a point할 때 특정 w값을 정해주고 싶다면 고르면 된다.
문제는 위의 방법이 결국 내가 임의적으로 w를 골랐다는 것에 있다. 그렇다면 어쨌든 t분포 검정을 하는 거니까 이거를 거꾸로 추적해서 p-value가 유의수준일 때 모델의 자유도에 따른 t값을 찾고, 그 t값을 가지게 하는 경계선에서의 W값을 찾는다.
이거를 풀어보면 머리를 조금만 굴려보거나 미분을 직접 해보면 아래로 볼록한 포물선 형태가 나올 것이고 조건에 따라서 근이 2개가 나오거나 0개가 나오거나 할 것이다. 이것을 이용해서 유의한 W의 범위를 찾는 것이다.
다음은 JN=1을 썼을 때 나오는 data를 이용하여 plot을 그리는 방법이다.
진작에 알려주지… SPSS에서 save 성분을 추가하면 위처럼 노가다 안 뛰어도 되고 matrix에 데이터 파일이 들어가도록 해준다(save=1이 뭔지는 찾아봐야지). 해 보니까 save 입력 안하면 저장이 안 된다.
skeptic<-result[12:33,1]
effect<-result[12:33,2]
llci<-result[12:33,6]
ulci<-result[12:33,7]
plot(x=skeptic,y=effect,type="l",pch=19,ylim=c(-1,1.5),xlim=c(1,6),
lwd=3,col="black",ylab="Conditional effect of disaster frame",
xlab="Climate Change Skepticism (W)")
points(skeptic,llci,lwd=1.75,lty=2,type="l",col="red")
points(skeptic,ulci,lwd=1.75,lty=2,type="l",col="red") # points()를 이용하여 band 그린다.
abline(h=0, untf=FALSE,lty=3,lwd=1)
abline(v=1.171,untf=FALSE,lty=3,lwd=1)
abline(v=3.934,untf=FALSE,lty=3,lwd=1) # untf is untransform.
text(1.171,-1,"1.171",cex=0.8)
text(3.934,-1,"3.934",cex=0.8)
각 행과 열이 의미하는 것은 PROCESS 결과에 나오는 순서 그대로이다. 아래 plot = 1로 나온 data들은 12행부터 33행까지이므로 이걸 이용하면 된다. plot을 보면 알다시피 1.171보다 작거나 3.934보다 클 때 유의하다. 이 방식은 W가 연속일 때만 사용할 수 있다.
애초에 Interaction을 Probing한다는 것은 b3이 유의하다는 전제에서 출발한다. W=w1일때랑 W=w2일 때 상호작용 효과가 유의한 차이가 있냐는 것은, 결국에는 b3의 유의성 검정과 같은 기울기 차이 검정이기 때문에 어떤 W끼리 비교해도 결국 같은 검정이 된다. 여기서 Issue는 b3이 유의하다는 건 적어도 어느 point of W에서 Y값의 차이가 유의미하게 벌어진다는 것이다. 즉, X의 Y에 미치는 영향이 W에 의존하냐를 체크하는 것.
그렇다면 Probing할 때 나오는 유의성 검정은 무엇이냐. W=w일 때, X가 한 단위 변할 때 Y의 변화량이 유의미한 변화를 나타내는가이다. 기울기 차이가 어쨌든 유의하게 존재하기 때문에 특정 W부터는 그 차이가 유의미하게 벌어지기 시작할 것이고, 우리는 PAP 방식이나 JN 방식을 이용해 해당 W의 Region을 Probing하는 것이다. 아시다시피 둘 다 모두 t-distribution을 전제로 한다.
내가 헷갈리니까 개인적으로 정리해보려고 써본다.

그렇다. 똑같이 생겼다. 생각해 보면 당연한 거 아닌가? 근데 해석이 조금 상이해질 것이다. 그 해석을 해보자.
첫 번째 그림: b3에 해당되는 게 W이 1 변하면 X가 1 변할 때 Y의 변화량이므로 굳이 표현하자면 W=5일 때 Y값의 차이와 W=4일 때 Y값의 차이를 뺀 것이 b3이다. 즉 직관적으로 보이지 않는다.
그럼 기울기는 뭐냐. 파란 선의 기울기는 X=0일 때 W가 변하면 Y가 얼마나 변하냐 이므로 b2에 해당된다. 빨간 선의 기울기는 아무것도 아니다.
대신 각각의 W에 대해서 X가 1 unit 변할 때 Y가 변하는 정도가 \(\theta_{X->Y}\)이므로, 왼쪽 그림에서 특정 W에 대한 두 직선의 Y값 차이가 \(\theta_{X->Y}|W=w\) 가 되겠다. 즉 Interaction을 Probing할 때는 직관적으로 이해가 가능하다.
두 번째 그림: b3에 해당되는 게 ‘기울기의 차이’ 이다. 두 번째 그림에서는 기울기가 X가 하나 변할 때 Y가 얼마 변하냐를 보여주는 것이므로 기울기 자체가 \(\theta_{X->Y}|W=w\) 가 된다. 즉 두 기울기 차이 검정이 b3 검정과 같다. 특히 파란선 같은 경우에는 W=0일 때 Conditional Effect이므로 b1에 해당되는 값이다. 빨간선의 기울기는 b1+b3이 되는 것이다.
특히 두 번째 그림에서는 W가 이분 변수라서 Probing할 게 없다.
결론: 그림의 해석에 너무 심오해지기 보다는 b3을 검정해서 상호작용 효과를 보고, W값이 얼마일 때부터 Conditional Effect가 유의한지를 찾아내는 것이라고 이해하자.
t.test(justify~frame,var.equal=TRUE,data=subset(disaster,skeptic<3.378)) t.test(justify~frame,var.equal=TRUE,data=subset(disaster,skeptic>=3.378))
위의 결과는 skeptic이 평균일때를 기준으로 그룹을 나눈 후(W=high/low) t-test를 돌려본 것인데, X가 0일 때와 1일 때 그룹에 차이가 있나 봤더니 low group은 차이가 없고 high group은 차이가 있다. 근데 이렇게 하는 것은 상호작용의 유의성을 보는 것은 아니다. 차라리 W가 실제 유의하게 존재하는 Category(e.g. gender)라면 factorial ANOVA를 돌려서 W에 따른 X->Y의 차이를 보는 게 의미가 있지만, 위처럼 W이 연속일 때 임의의 기준으로 평균을 쓰는 것은 딱히 meaningful해 보이지 않는다. 무엇보다 저렇게 각각 그룹에서 유의하게 나온다 해서 두 그룹 간의 차이가 유의한지는 알 수가 없다 (알아보고자 하는 게 다르다).
교수님의 Comment를 좀 더하자면,
X와 W의 계수(b1, b2)가 유의하지 않아도, 상호작용 효과(b3)는 유의할 수 있다. 그럼에도 lower order term은 모두 모델에 포함해야 한다.
만약 독립변수와 상호작용 효과의 부호가 반대이면 Buffering Effect(완충 효과)가 발생하는 것이고, 부호가 같으면 Synergy Effect가 있다고 이야기한다. 완충 효과에 대한 추가적 고민이 필요해 보인다.
Conditional Effect는 W값에 따라서 그 부호가 변할 수 있다는 사실을 인지하자. 그래서 항상 상호작용 항은 묶어서 생각해야 함 (e.g. \(\hat y = (-0.5+0.2W)X\))
앵간하면 Mean Centering 하는데 범주형이면 하지 않는다.
W가 Dichotomous인 상황을 보기 위해 Skeptic을 X로, frame을 W로 보냈다고 치고 보자. 코드는 다음과 같다.
summary(lm(justify~skeptic+frame+frame*skeptic,data=disaster))
process (data=disaster,y="justify",x="skeptic",w="frame",model=1, plot=1)
##
## ********************* PROCESS for R Version 4.3.1 *********************
##
## Written by Andrew F. Hayes, Ph.D. www.afhayes.com
## Documentation available in Hayes (2022). www.guilford.com/p/hayes3
##
## ***********************************************************************
##
## Model : 1
## Y : justify
## X : skeptic
## W : frame
##
## Sample size: 211
##
##
## ***********************************************************************
## Outcome Variable: justify
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.4962 0.2463 0.6609 22.5430 3.0000 207.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 2.4515 0.1490 16.4486 0.0000 2.1577 2.7454
## skeptic 0.1051 0.0381 2.7559 0.0064 0.0299 0.1803
## frame -0.5625 0.2179 -2.5811 0.0105 -0.9921 -0.1328
## Int_1 0.2012 0.0553 3.6401 0.0003 0.0922 0.3101
##
## Product terms key:
## Int_1 : skeptic x frame
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## X*W 0.0482 13.2503 1.0000 207.0000 0.0003
## ----------
## Focal predictor: skeptic (X)
## Moderator: frame (W)
##
## Conditional effects of the focal predictor at values of the moderator(s):
## frame effect se t p LLCI ULCI
## 0.0000 0.1051 0.0381 2.7559 0.0064 0.0299 0.1803
## 1.0000 0.3063 0.0400 7.6548 0.0000 0.2274 0.3851
##
## Data for visualizing the conditional effect of the focal predictor:
## skeptic frame justify
## 1.5920 0.0000 2.6188
## 2.8000 0.0000 2.7458
## 5.2000 0.0000 2.9980
## 1.5920 1.0000 2.3766
## 2.8000 1.0000 2.7466
## 5.2000 1.0000 3.4816
##
## ******************** ANALYSIS NOTES AND ERRORS ************************
##
## Level of confidence for all confidence intervals in output: 95
위와 동일하게, Conditional Effect 부분은 W가 고정되어있을 때 조건부 효과로, W=w일 때 X가 Y에 미치는 영향이라고 보면 되겠다. 지금은 W가 이분 변수라서 Probing 필요 없다. 마찬가지로 b3은 w=0일 때와 w=1일 때 conditional effect의 차이가 되므로 X-Y plot에서 두 직선의 기울기 차이 검정과 같다.
w<-c(0,1,0,1,0,1)
x<-c(1.592,1.592,2.80,2.80,5.20,5.20) # Process의 column 성분을 뽑아서 쓸 수 없나?
y<-c(2.619,2.377,2.746,2.747,2.998,3.482) # 이렇게 결과창에 있는거 옮겨써야 한다.
plot(y=y,x=x,pch=15,col="black",xlab="Climate Change Skepticism (X)",
ylab="Negative Justifications (Y)")
legend.txt<-c("Natural causes (W=0)","Climate change (W=1)")
legend("bottomright",legend=legend.txt,lty=c(3,1),lwd=c(3,2), col=c("blue","red"))
lines(x[w==0],y[w==0],lty=3,lwd=3,col="blue") # w=0일 때 X와 Y를 이음
lines(x[w==1],y[w==1],lty=1,lwd=2,col="red") # w=1일 때 x와 Y를 이음
위에서 언급했듯, W가 그룹이 2개 뿐이기에 집단 별로(W=0, W=1) 나눠서 차이 검증 하는 것과 동일하다.
이번에는 X와 W 모두 Quantitative, 즉 연속 변수일 때를 알아보도록 하자. 회귀식은 아래와 같다.
summary(lm(govact~negemot+age+negemot*age+posemot+ideology+sex, data=glbwarm))
result<-process(data=glbwarm,y="govact",x="negemot",w="age",
cov=c("posemot","ideology","sex"),model=1,jn=1,plot=1,save=2, wmodval = c(30,50,70))
##
## ********************* PROCESS for R Version 4.3.1 *********************
##
## Written by Andrew F. Hayes, Ph.D. www.afhayes.com
## Documentation available in Hayes (2022). www.guilford.com/p/hayes3
##
## ***********************************************************************
##
## Model : 1
## Y : govact
## X : negemot
## W : age
##
## Covariates:
## posemot ideology sex
##
## Sample size: 815
##
##
## ***********************************************************************
## Outcome Variable: govact
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.6331 0.4008 1.1172 90.0798 6.0000 808.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 5.1738 0.3385 15.2868 0.0000 4.5095 5.8382
## negemot 0.1196 0.0825 1.4489 0.1478 -0.0424 0.2816
## age -0.0239 0.0060 -3.9929 0.0001 -0.0356 -0.0121
## Int_1 0.0063 0.0015 4.1035 0.0000 0.0033 0.0094
## posemot -0.0214 0.0279 -0.7676 0.4430 -0.0762 0.0334
## ideology -0.2115 0.0268 -7.8827 0.0000 -0.2642 -0.1588
## sex -0.0112 0.0760 -0.1472 0.8830 -0.1604 0.1380
##
## Product terms key:
## Int_1 : negemot x age
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## X*W 0.0125 16.8391 1.0000 808.0000 0.0000
## ----------
## Focal predictor: negemot (X)
## Moderator: age (W)
##
## Conditional effects of the focal predictor at values of the moderator(s):
## age effect se t p LLCI ULCI
## 30.0000 0.3095 0.0413 7.4875 0.0000 0.2284 0.3906
## 50.0000 0.4361 0.0262 16.6444 0.0000 0.3847 0.4876
## 70.0000 0.5627 0.0396 14.2090 0.0000 0.4850 0.6405
##
## There are no statistical significance transition points within the observed
## range of the moderator found using the Johnson-Neyman method.
##
## Conditional effect of focal predictor at values of the moderator:
## age effect se t p LLCI ULCI
## 17.0000 0.2272 0.0583 3.8999 0.0001 0.1128 0.3416
## 20.3333 0.2483 0.0537 4.6227 0.0000 0.1429 0.3537
## 23.6667 0.2694 0.0493 5.4661 0.0000 0.1727 0.3662
## 27.0000 0.2905 0.0450 6.4539 0.0000 0.2022 0.3789
## 30.3333 0.3116 0.0409 7.6116 0.0000 0.2313 0.3920
## 33.6667 0.3327 0.0371 8.9605 0.0000 0.2598 0.4056
## 37.0000 0.3538 0.0337 10.5053 0.0000 0.2877 0.4199
## 40.3333 0.3749 0.0307 12.2102 0.0000 0.3147 0.4352
## 43.6667 0.3960 0.0284 13.9648 0.0000 0.3404 0.4517
## 47.0000 0.4171 0.0268 15.5618 0.0000 0.3645 0.4697
## 50.3333 0.4382 0.0262 16.7360 0.0000 0.3868 0.4896
## 53.6667 0.4593 0.0266 17.2908 0.0000 0.4072 0.5115
## 57.0000 0.4804 0.0279 17.2173 0.0000 0.4257 0.5352
## 60.3333 0.5015 0.0301 16.6765 0.0000 0.4425 0.5606
## 63.6667 0.5226 0.0329 15.8799 0.0000 0.4580 0.5872
## 67.0000 0.5437 0.0363 14.9955 0.0000 0.4726 0.6149
## 70.3333 0.5648 0.0400 14.1241 0.0000 0.4863 0.6433
## 73.6667 0.5859 0.0440 13.3145 0.0000 0.4996 0.6723
## 77.0000 0.6070 0.0482 12.5842 0.0000 0.5124 0.7017
## 80.3333 0.6282 0.0526 11.9347 0.0000 0.5248 0.7315
## 83.6667 0.6493 0.0572 11.3603 0.0000 0.5371 0.7614
## 87.0000 0.6704 0.0618 10.8529 0.0000 0.5491 0.7916
##
## Data for visualizing the conditional effect of the focal predictor:
## negemot age govact
## 1.6700 30.0000 4.0381
## 3.6700 30.0000 4.6571
## 5.3300 30.0000 5.1709
## 1.6700 50.0000 3.7720
## 3.6700 50.0000 4.6442
## 5.3300 50.0000 5.3682
## 1.6700 70.0000 3.5058
## 3.6700 70.0000 4.6313
## 5.3300 70.0000 5.5654
##
## ******************** ANALYSIS NOTES AND ERRORS ************************
##
## Level of confidence for all confidence intervals in output: 95
x<-c(1.67,3.67,5.33,1.67,3.67,5.33,1.67,3.67,5.33)
w<-c(30,30,30,50,50,50,70,70,70)
y<-c(4.038,4.657,5.171,3.772,4.644,5.362,3.506,4.631,5.565)
wmarker<-c(15,15,15,16,16,16,17,17,17)
plot(y=y,x=x,cex=1.2,pch=wmarker,xlab="Negative Emotions (X)",
ylab="Support for Government Action (Y)")
legend.txt<-c("30 years old","50 years old", "70 years old")
legend("topleft", legend = legend.txt,cex=1,lty=c(1,3,6),lwd=c(2,3,2),
pch=c(15,16,17))
lines(x[w==30],y[w==30],lwd=2,col="black") # W = 30일 때 (x,y) 잇기
lines(x[w==50],y[w==50],lwd=3,lty=3,col="black") # W = 50일 때 (x,y) 잇기
lines(x[w==70],y[w==70],lwd=2,lty=6,col="black") # W = 70일 때 (x,y) 잇기
참고로 posemot, ideology, sex가 covariate로 들어갔으며, govact값을 예측할 때는 각 cov 값들의 평균값으로 control 해 두고 한다. 만약 sex처럼 이분 변수라면? 평균을 잴 때 각 성별의 비율이 곧 평균값이 된다. 즉 이렇게 해도 문제는 없다.
둘 다 conti 변수로 쓰니까 conditional effect는 W의 16, 50, 84th percentile을 썼고, X도 마찬가지이다. 기본적으로는 그러한데 wmodval을 이용해 변경할 수 있다. 근데 그건 Pick a point할 때 이야기이고, plotting할 때는 사실 JN을 쓰니까 X가 quantile되서 나오는게 크게 중요해보이지는 않는다.
X-Y Plot이 사실 직관적이다. 앞에서 W-Y Plot을 썼던 건 X가 이분 변수여서 그랬던 것이고 수학적으로 차이는 없다. W 값에 따라 기울기가 다른 것을 확인할 수가 있는데, 결국 이 기울기들끼리 차이가 있냐? 가 b3의 본질이다. 즉, W가 1 차이날 때 직선 간의 기울기 차이 검정이다. 또한, X-Y Plot에서는 기울기가 곧 특정 W값에 대한 interaction effect \(\theta_{X->Y}|W=w\) 이다.
그러면 w값에 따른 기울기의 차이가 유의한 의미가 있는가? 이것은 w2-w1의 t검정을 하면 결국 b3검정과 같다고 위에서 이야기했는데, 직관적으로 납득이 안 될때는 b3계수가 유의하다는 의미는 X->Y효과가 W에 의존적이다, 즉 W값에 따라 기울기가 유의하게 다르다는 해석이 된다는 것이다. 우리가 하는 probing은 어느 W부터 horizontal line이랑 기울기가 유의하게 차이가 나냐 이거고. 위(7장)에서 했던 얘기지만…
아래는 JN의 결과이다.
age<-result[15:36,1]
effect<-result[15:36,2]
llci<-result[15:36,6]
ulci<-result[15:36,7]
plot(age,effect,type="l",pch=19,ylim=c(-.5,1),xlim=c(15,90),lwd=3,
ylab="Conditional effect of negative emotions",
xlab="Age (W)")
points(age,llci,lwd=2,lty=2,type="l",col="red")
points(age,ulci,lwd=2,lty=2,type="l",col="red")
abline(h=0,untf=FALSE,lty=3,lwd=1)
ANOVA는 회귀 분석의 일종이다. 즉 X, W가 모두 범주형일 때 상황인 것이다.
만약 Dummy Coding을 해서 분석하면 조건계수가 되는데, Effect Coding(-0.5, 0.5)을 하면 ANOVA의 주효과(Main effect)가 된다. 이를 Main Effect Parametrization이라 한다. 이렇게 하면 회귀 분석의 일종이 ANOVA라는 것을 이해할 수 있다.
코드는 다음과 같다.
kerryc<-caskets$kerry-0.5;policyc<-caskets$policy-0.5 # Main Effect Parametrization
caskets<-data.frame(caskets,kerryc,policyc)
process (data=caskets,y="interest",x="policyc",w="kerryc",plot=1,model=1)
ANOVA에 대한 복습이 필요하다.
SPSS에서 표준화 계수(Standardized Coefficients: Beta)는 해석하면 안 된다!!!! 얘는 XZ를 표준화한 것이기 때문에 이것은 하등 의미없는 변수이다.
변수 간 상관이 올라가면 VIF가 올라가서 다중공선성을 야기한다. 이는 즉 계수의 표준편차에 영향을 준다. 아래 식을 참고하라. 그래서 Mean Centering을 하면 상관이 줄어드니까 VIF가 줄어들고 이것은 이득이라고 할 수 있겠는가? 이것은 오산이다. 동시에 표본분산도 줄어들기 때문이다. 결국에 계수의 표준편차에는 변동이 없다.
Q. 개인적으로 궁금한 점: 왜 중심화 하면 상관이 줄어드나? 공분산 식 자체의 값이 작아져서 그런가? 한편, 표준화는 아예 상관을 변화시키지 않지 않나?
Multiple Moderation은 XZ 상호작용의 패턴이 W와 관계없이
동일하다.
Centering을 돌리고 분석을 한 다음에, zmodval을 넣고 싶으면 Centering을
빼고 하자.
참고로 wmodval 말고도 zmodval도 있다.
process (data=glbwarm,y="govact",x="negemot",w="sex",z="age",
cov=c("posemot","ideology"),model=2,plot=1,zmodval=c(30,50,70))
##
## ********************* PROCESS for R Version 4.3.1 *********************
##
## Written by Andrew F. Hayes, Ph.D. www.afhayes.com
## Documentation available in Hayes (2022). www.guilford.com/p/hayes3
##
## ***********************************************************************
##
## Model : 2
## Y : govact
## X : negemot
## W : sex
## Z : age
##
## Covariates:
## posemot ideology
##
## Sample size: 815
##
##
## ***********************************************************************
## Outcome Variable: govact
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.6426 0.4129 1.0960 81.0915 7.0000 807.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 5.2716 0.3361 15.6861 0.0000 4.6119 5.9313
## negemot 0.0931 0.0820 1.1348 0.2568 -0.0679 0.2540
## sex -0.7417 0.1941 -3.8216 0.0001 -1.1227 -0.3607
## Int_1 0.2045 0.0501 4.0836 0.0000 0.1062 0.3028
## age -0.0182 0.0061 -2.9974 0.0028 -0.0302 -0.0063
## Int_2 0.0047 0.0016 3.0134 0.0027 0.0017 0.0078
## posemot -0.0235 0.0276 -0.8489 0.3962 -0.0777 0.0308
## ideology -0.2068 0.0266 -7.7721 0.0000 -0.2590 -0.1545
##
## Product terms key:
## Int_1 : negemot x sex
## Int_2 : negemot x age
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## X*W 0.0121 16.6759 1.0000 807.0000 0.0000
## X*Z 0.0066 9.0804 1.0000 807.0000 0.0027
## BOTH 0.0246 16.9208 2.0000 807.0000 0.0000
## ----------
## Focal predictor: negemot (X)
## Moderator: sex (W)
## Moderator: age (Z)
##
## Conditional effects of the focal predictor at values of the moderator(s):
## sex age effect se t p LLCI
## 0.0000 30.0000 0.2356 0.0448 5.2619 0.0000 0.1477
## 0.0000 50.0000 0.3306 0.0366 9.0242 0.0000 0.2587
## 0.0000 70.0000 0.4256 0.0516 8.2401 0.0000 0.3242
## 1.0000 30.0000 0.4400 0.0519 8.4718 0.0000 0.3381
## 1.0000 50.0000 0.5350 0.0355 15.0718 0.0000 0.4653
## 1.0000 70.0000 0.6300 0.0425 14.8080 0.0000 0.5465
## ULCI
## 0.3234
## 0.4025
## 0.5269
## 0.5420
## 0.6047
## 0.7135
##
## Data for visualizing the conditional effect of the focal predictor:
## negemot sex age govact
## 1.6700 0.0000 30.0000 4.2003
## 3.6700 0.0000 30.0000 4.6714
## 5.3300 0.0000 30.0000 5.0624
## 1.6700 0.0000 50.0000 3.9943
## 3.6700 0.0000 50.0000 4.6554
## 5.3300 0.0000 50.0000 5.2041
## 1.6700 0.0000 70.0000 3.7883
## 3.6700 0.0000 70.0000 4.6394
## 5.3300 0.0000 70.0000 5.3458
## 1.6700 1.0000 30.0000 3.8000
## 3.6700 1.0000 30.0000 4.6801
## 5.3300 1.0000 30.0000 5.4106
## 1.6700 1.0000 50.0000 3.5941
## 3.6700 1.0000 50.0000 4.6641
## 5.3300 1.0000 50.0000 5.5523
## 1.6700 1.0000 70.0000 3.3881
## 3.6700 1.0000 70.0000 4.6481
## 5.3300 1.0000 70.0000 5.6940
##
## ******************** ANALYSIS NOTES AND ERRORS ************************
##
## Level of confidence for all confidence intervals in output: 95
b4(Int_1), b5(Int_2) 계수의 해석이 중요하게 되는데, b4는 Z가 constant일 때 W가 한 단위 변하면 X가 한 단위 변할 때 Y가 얼마나 변하냐를 묻는 것이다. b5도 마찬가지. Each of tests of significance는 W와 Z가 각각 X를 조절하는지에 대한 test이다. 위의 결과는 모두 유의하다고 나온다. 즉 Sex와 Age는 moderator로서 negemot의 govact에 미치는 효과를 조절한다.
Conditional effects of the focal predictor at values of the moderator(s): 이라고 써진 부분은 f(W,Z) = b1 + b4W + b5Z라는 conditional effect의 pick-a-point significance를 계산한 결과이다. 이에 대한 significance test는 표준오차를 추정하여 계산된다.
아래는 plot=1의 data로 plot을 그린 결과이다.
oldp<-par(mfrow=c(3,1),mar=c(3,4,0,0),oma=c(2,2,2,2),mgp=c(5,0.5,0)) # 연구 필요
x<-c(1.67,3.67,5.33,1.67,3.67,5.33)
w<-c(0,0,0,1,1,1)
yage30<-c(4.2003,4.6714,5.0624,3.800,4.6801,5.4106)
yage50<-c(3.9943,4.6554,5.2041,3.5941,4.6641,5.5523)
yage70<-c(3.7883,4.6394,5.3458,3.3881,4.6481,5.6940)
legend.txt<-c("Female (W=0)","Male (W=1)")
for (i in 1:3){
if (i==1)
{y<-yage30
legend2.txt<-c("Age (Z) = 30")}
if (i==2)
{y<-yage50
legend2.txt<-c("Age (Z) = 50")}
if (i==3)
{y<-yage70
legend2.txt<-c("Age (Z) = 70")}
plot(y=y,x=x,col="white",ylim=c(3,6),cex=1.5,xlim=c(1,6),tcl=-0.5)
lines(x[w==0],y[w==0],lwd=2,lty=2)
lines(x[w==1],y[w==1],lwd=2,lty=1)
legend("topleft",legend=legend.txt,lwd=2,lty=c(2,1))
legend("bottomright",legend=legend2.txt)
box}
mtext("Negative Emotions (X)",side=1,outer=TRUE)
mtext("Support for Government Action",side=2,outer=TRUE)
par(oldp)
이 경우에는 W가 Z에 의해 추가로 조절되는 것이므로 3-way Moderation이 된다.
result <- process (data=glbwarm,y="govact",x="negemot",w="sex",z="age",
cov=c("posemot","ideology"),model=3,jn=1,plot=1,zmodval=c(30,50,70), save = 2)
##
## ********************* PROCESS for R Version 4.3.1 *********************
##
## Written by Andrew F. Hayes, Ph.D. www.afhayes.com
## Documentation available in Hayes (2022). www.guilford.com/p/hayes3
##
## ***********************************************************************
##
## Model : 3
## Y : govact
## X : negemot
## W : sex
## Z : age
##
## Covariates:
## posemot ideology
##
## Sample size: 815
##
##
## ***********************************************************************
## Outcome Variable: govact
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.6451 0.4162 1.0926 63.7645 9.0000 805.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 4.5595 0.4850 9.4007 0.0000 3.6075 5.5115
## negemot 0.2728 0.1181 2.3112 0.0211 0.0411 0.5046
## sex 0.5294 0.6465 0.8188 0.4131 -0.7396 1.7984
## Int_1 -0.1308 0.1675 -0.7808 0.4351 -0.4595 0.1980
## age -0.0034 0.0095 -0.3562 0.7218 -0.0220 0.0152
## Int_2 0.0009 0.0024 0.3806 0.7036 -0.0038 0.0056
## Int_3 -0.0253 0.0123 -2.0592 0.0398 -0.0494 -0.0012
## Int_4 0.0067 0.0032 2.0961 0.0364 0.0004 0.0129
## posemot -0.0206 0.0277 -0.7453 0.4563 -0.0749 0.0337
## ideology -0.2055 0.0266 -7.7265 0.0000 -0.2577 -0.1533
##
## Product terms key:
## Int_1 : negemot x sex
## Int_2 : negemot x age
## Int_3 : sex x age
## Int_4 : negemot x sex x age
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## X*W*Z 0.0032 4.3934 1.0000 805.0000 0.0364
## ----------
## Focal predictor: negemot (X)
## Moderator: sex (W)
## Moderator: age (Z)
##
## Test of conditional X*W interaction at value(s) of Z:
## age effect F df1 df2 p
## 30.0000 0.0696 0.7301 1.0000 805.0000 0.3931
## 50.0000 0.2031 16.5048 1.0000 805.0000 0.0001
## 70.0000 0.3367 17.4621 1.0000 805.0000 0.0000
##
## Conditional effects of the focal predictor at values of the moderator(s):
## sex age effect se t p LLCI
## 0.0000 30.0000 0.3003 0.0542 5.5447 0.0000 0.1940
## 0.0000 50.0000 0.3186 0.0370 8.6005 0.0000 0.2459
## 0.0000 70.0000 0.3369 0.0666 5.0605 0.0000 0.2062
## 1.0000 30.0000 0.3699 0.0620 5.9678 0.0000 0.2482
## 1.0000 50.0000 0.5217 0.0360 14.4879 0.0000 0.4510
## 1.0000 70.0000 0.6736 0.0475 14.1804 0.0000 0.5803
## ULCI
## 0.4066
## 0.3913
## 0.4675
## 0.4915
## 0.5924
## 0.7668
##
## Moderator value(s) defining Johnson-Neyman significance region(s):
## Value % below % above
## 38.1138 28.2209 71.7791
##
## Conditional X*W interaction at values of the moderator Z:
## age effect se t p LLCI ULCI
## 17.0000 -0.0172 0.1169 -0.1475 0.8828 -0.2467 0.2122
## 20.5000 0.0061 0.1069 0.0573 0.9543 -0.2038 0.2160
## 24.0000 0.0295 0.0972 0.3035 0.7616 -0.1613 0.2203
## 27.5000 0.0529 0.0878 0.6019 0.5474 -0.1196 0.2253
## 31.0000 0.0763 0.0789 0.9661 0.3343 -0.0787 0.2312
## 34.5000 0.0996 0.0707 1.4100 0.1589 -0.0391 0.2383
## 38.0000 0.1230 0.0633 1.9440 0.0522 -0.0012 0.2472
## 38.1138 0.1238 0.0630 1.9629 0.0500 0.0000 0.2475
## 41.5000 0.1464 0.0571 2.5625 0.0106 0.0343 0.2585
## 45.0000 0.1697 0.0526 3.2246 0.0013 0.0664 0.2731
## 48.5000 0.1931 0.0503 3.8408 0.0001 0.0944 0.2918
## 52.0000 0.2165 0.0503 4.3008 0.0000 0.1177 0.3153
## 55.5000 0.2399 0.0528 4.5425 0.0000 0.1362 0.3435
## 59.0000 0.2632 0.0574 4.5883 0.0000 0.1506 0.3759
## 62.5000 0.2866 0.0636 4.5073 0.0000 0.1618 0.4114
## 66.0000 0.3100 0.0710 4.3647 0.0000 0.1706 0.4494
## 69.5000 0.3334 0.0793 4.2022 0.0000 0.1776 0.4891
## 73.0000 0.3567 0.0883 4.0415 0.0001 0.1835 0.5300
## 76.5000 0.3801 0.0977 3.8920 0.0001 0.1884 0.5718
## 80.0000 0.4035 0.1074 3.7570 0.0002 0.1927 0.6143
## 83.5000 0.4269 0.1174 3.6366 0.0003 0.1965 0.6573
## 87.0000 0.4502 0.1276 3.5297 0.0004 0.1999 0.7006
##
## Data for visualizing the conditional effect of the focal predictor:
## negemot sex age govact
## 1.6700 0.0000 30.0000 4.0561
## 3.6700 0.0000 30.0000 4.6566
## 5.3300 0.0000 30.0000 5.1551
## 1.6700 0.0000 50.0000 4.0190
## 3.6700 0.0000 50.0000 4.6562
## 5.3300 0.0000 50.0000 5.1850
## 1.6700 0.0000 70.0000 3.9820
## 3.6700 0.0000 70.0000 4.6557
## 5.3300 0.0000 70.0000 5.2149
## 1.6700 1.0000 30.0000 3.9422
## 3.6700 1.0000 30.0000 4.6819
## 5.3300 1.0000 30.0000 5.2959
## 1.6700 1.0000 50.0000 3.6220
## 3.6700 1.0000 50.0000 4.6654
## 5.3300 1.0000 50.0000 5.5314
## 1.6700 1.0000 70.0000 3.3017
## 3.6700 1.0000 70.0000 4.6489
## 5.3300 1.0000 70.0000 5.7670
##
## ******************** ANALYSIS NOTES AND ERRORS ************************
##
## Level of confidence for all confidence intervals in output: 95
이 경우에는 \(\theta_{X->Y} = b_1+b_4W+b_5Z+b_7WZ\) 로 conditional effect를 설명할 수 있는데, W가 X의 Y에 미치는 영향이 Z에 조건부 영향을 받는다. 상호작용 항이 4개 있는 것을 확인할 수 있고(Int_1~Int_4), b7(Int_4)이 유의한걸로 봐서 3-way interaction의 가설이 지지된다는 것을 확인할 수 있다.
Conditional X*W interaction at values of the moderator Z 부분을 살펴보면, Z가 특정 값일 때 XW->Y의 영향이 유의한지를 살펴보는 JN technique의 결과를 보이고 있다. 이것은 b7이 유의하기 때문에 가능한 probing의 과정이다. JN technique의 경우 다음을 이용한 t-test (또는 F-test) 의 결과이다. 즉 어느 Z값부터 아래 두 식의 비가 유의한가? 위 결과에서는 38.1138이라고 한다.
이걸 이용하는 다른 방식은 Z를 고정시켜두고 W(sex)의 1 unit 변화의 차이의 유의성을 본다. 예를 들어 (W=1, Z=30) 일 때 conditional effect 값이 0.3699, (W=0, Z=30)일 때 값이 0.3003인데 이 차이는 0.0696으로, 위의 pick-a-point 방식에서 나오는 Z=30값의 유의성 검정과 동일하다. 역시 유의하지 않은 차이이다. 즉 XWZ 계수가 유의하다는 뜻은 적어도 어느 Z에서는 이 차이가 유의하는 시점이 온다는 것이다.
아래에 있는 식은 Conditional effects of the focal predictor at values of the moderator(s)에 해당되는 data인데, W와 Z값을 모두 pick-a-point로 결과를 얻어냈다. 식은 다음과 같다.
Plot을 그릴 수 있다.
oldp<-par(mfrow=c(3,1),mar=c(3,4,0,0),oma=c(2,2,2,2),mgp=c(5,0.5,0))
x<-c(1.67,3.67,5.33,1.67,3.67,5.33)
w<-c(0,0,0,1,1,1)
yage30<-c(4.0561,4.6566,5.1551,3.9422,4.6819,5.2959)
yage50<-c(4.0190,4.6562,5.1850,3.6220,4.6654,5.5314)
yage70<-c(3.9820,4.6557,5.2149,3.3017,4.6489,5.7670)
legend.txt<-c("Female (W=0)","Male (W=1)")
for (i in 1:3){
if (i==1)
{y<-yage30
legend2.txt<-c("Age (Z) = 30")}
if (i==2)
{y<-yage50
legend2.txt<-c("Age (Z) = 50")}
if (i==3)
{y<-yage70
legend2.txt<-c("Age (Z) = 70")}
plot(y=y,x=x,col="white",ylim=c(3,6),cex=1.5,xlim=c(1,6),tcl=-0.5)
lines(x[w==0],y[w==0],lwd=2,lty=2)
lines(x[w==1],y[w==1],lwd=2,lty=1)
legend("topleft", legend=legend.txt,lwd=2,lty=c(2,1))
legend("bottomright",legend=legend2.txt)
box}
mtext("Negative Emotions (X)",side=1,outer=TRUE)
mtext("Support for Government Action",side=2,outer=TRUE)
par(oldp)
이 그림을 살짝 해석해보면, 맨 위 그림은 Z=30일 때인데 이 때는 JN table에서 유의하지 않으므로 그래프 차이가 크게 안 나는 걸 확인할 수 있는데 Z=50,70의 경우에는 그 차이가 좀 두드러지게 보이고 p-value도 유의하기도 하다. 물론 X-Y plot이라 그래프에 대한 해석은 쉽지 않아보인다.
JN Plot도 그릴 수 있다. 아래에 [행, 열] 을 쓸 수 있는 것은 이거 돌릴 때 result라는 객체 안에 save=2 option을 이용해서 정보들을 저장해두었기 때문에 가능하다. 즉 result가 matrix로써 정보를 저장하고 있는 것이다.
age<-result[24:45,1]
effect<-result[24:45,2]
llci<-result[24:45,6]
ulci<-result[24:45,7]
plot(age,effect,type="l",pch=19,ylim=c(-1,1.5),xlim=c(15,90),lwd=3,
ylab="Conditional negative emotions by sex interaction",
xlab="Age")
points(age,llci,lwd=2,lty=2,type="l",col="red")
points(age,ulci,lwd=2,lty=2,type="l",col="red")
abline(h=0,untf=FALSE,lty=3,lwd=1)
abline(v=38.114,untf=FALSE,lty=3,lwd=1)
text(38.114,-1,"38.114",cex=0.8)
예를 들어, 나이가 많을 수록, 남자일 수록 X-Y의 효과가 커지는 경향이
있는데 그렇다면 30세 남자와 50세 여자 중 누가 더 효과가 클 것인가? 즉,
the question is, how to test H0: W=w1, Z=z1 vs W=w2, Z=z2.
이것을 검정하는 식은 꽤나 무시무시하다. 언급하자면 아래와 같은데, 이
식은 쉬운데 se가 좀 못 생겼다.
어쨌든 얘도 t-test를 하는 방식인데 우리에게는 킹갓제네럴 PROCESS가 있다. CONTRAST 옵션을 사용하면 된다.
(이 때도 당연히 Centering을 하면 안 된다. 원 척도를 이용할 것)
process (data=glbwarm,y="govact",x="negemot",w="sex",z="age",
cov=c("posemot","ideology"),model=3,zmodval=c(30,50,70),
contrast=c(1,30,0,50))
contrast의 결과만 따와보면 다음과 같다.
Contrast between conditional effects of X:
sex age effect
Effect1: 1.0000 30.0000 0.3699
Effect2: 0.0000 50.0000 0.3186
Test of Effect1 minus Effect2
Contrast se t p LLCI ULCI
0.0513 0.0711 0.7215 0.4708 -0.0882 0.1908
아쉽게도 일일이 하나씩 하는 방법밖에는 없나보다.
지금 여기까지 왔으면 X가 이분형, W가 이분형, X,W 모두 연속형, X,W 모두 이분형(2X2 ANOVA)까지 훑어 보았단 이야기다. 만약 이분형이 아니라 다범주형이라면? 어떻게 될까?
기본적인 concept은 매개랑 비슷한데, Dummy Variables가 여러 개 생기니까 i개의 relative conditional effects \(\theta_{D_i->Y} = b_i + b_jW\)를 얻게 된다. 그렇게 되면 계수 검정 또한 여러번 하게 될 것이고, 이 중에서 적어도 한 개의 계수가 유의하게 0과 다르다면, X의 효과는 W에 의존하는 것이라고 해야 한다.
예시를 보자. 내가 잘 아는 Catherine 예시이다.
d1<-as.numeric(protest$protest==1)
d2<-as.numeric(protest$protest==2)
protest<-data.frame(protest,d1,d2)
model1<-lm(liking~d1+d2+sexism,data=protest) # 그냥 다범주 회귀분석임
summary(model1)
model2<-lm(liking~d1+d2+sexism+d1*sexism+d2*sexism,data=protest) # 상호작용 항 두 개 추가
summary(model2)
anova(model1,model2)
d1:sexism 0.9012 0.2875 3.135 0.00215 **
d2:sexism 0.7778 0.2752 2.827 0.00549 **
Analysis of Variance Table
Model 1: liking ~ d1 + d2 + sexism
Model 2: liking ~ d1 + d2 + sexism + d1 * sexism + d2 * sexism
Res.Df RSS Df Sum of Sq F Pr(>F)
1 125 133.61
2 123 122.01 2 11.6 5.8474 0.003751 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
포인트는 두 개의 상호작용 항이 추가되었을 때 F값이 유의한가를 보는 것이라는 점이다. 상호작용의 계수도 유의하고, ANOVA F 검정 또한 유의한 것을 확인할 수 있다.
이것을 이제 PROCESS를 이용해 검정해보자.
process(data=protest,y="liking",x="protest",w="sexism",mcx=1,model=1,
plot=1)
Outcome Variable: liking
Model Summary:
R R-sq MSE F df1 df2 p
0.3673 0.1349 0.9919 3.8372 5.0000 123.0000 0.0029
Model:
coeff se t p LLCI ULCI
constant 7.7062 1.0525 7.3218 0.0000 5.6229 9.7896
X1 -4.1288 1.4985 -2.7553 0.0068 -7.0949 -1.1626
X2 -3.4908 1.4078 -2.4796 0.0145 -6.2775 -0.7041
sexism -0.4725 0.2053 -2.3017 0.0230 -0.8788 -0.0662
Int_1 0.9012 0.2875 3.1346 0.0022 0.3321 1.4703
Int_2 0.7778 0.2752 2.8266 0.0055 0.2331 1.3225
Product terms key:
Int_1 : X1 x sexism
Int_2 : X2 x sexism
Test(s) of highest order unconditional interaction(s):
R2-chng F df1 df2 p
X*W 0.0822 5.8474 2.0000 123.0000 0.0038 ## 위의 ANOVA 결과와 같다!!!
이것은 위의 회귀분석 ANOVA 결과와 같다. 역시나 p = 0.0038로 동일하다.
Focal predictor: protest (X)
Moderator: sexism (W)
Conditional effects of the focal predictor at values of the moderator(s):
Moderator value(s):
sexism 4.2500
effect se t p LLCI ULCI
X1 -0.2985 0.3402 -0.8775 0.3819 -0.9720 0.3749
X2 -0.1851 0.3089 -0.5991 0.5502 -0.7966 0.4264 ## This is Pairwise test
Test of equality of conditional means
F df1 df2 p
0.4021 2.0000 123.0000 0.6698 ## This is Omnibus test at W = 4.25
Estimated conditional means being compared:
protest liking
0.0000 5.6981
1.0000 5.3996
2.0000 5.5131
위 내용이 7장의 Simple Moderation Model의 결과와 다른 것을 확인해볼 수가 있다. 우선 이것은 Pick-a-point 방식의 결과로(moment=2 쓰면 달라질 것이다), W=4.25일 때 \(\theta_{D_i->Y}\) 값을 보이고 있다. D1의 경우 -0.2985, D2의 경우 -0.1851이다. 둘 다 유의하지 않다. 이것은 X1, X2 하나씩 본 Pairwise test의 결과이다.
Test of Equality of Conditional means 부분은 Probing을 위한 Omnibus test이다 (참고로 Omnibus Test는 즉 Overall하게(모든 \(D_i\) 에 대하여) Interaction Effect가 유의하다고 해야하는가? 결과에 의하면(p = 0.6698), 이 W = 4.25 에서는 Interaction Effect가 유의하지 않다는 것이다. 하지만 위 ANOVA 결과에서 유의하다고 했으니 어딘가에서는 유의할 것이다.
만약 X가 범주형인데 조절효과가 없으면 just ANOVA이다. 즉 이것은 Moderated ANOVA test라고 할 수 있는데, 다시 말해 ANOVA에서 Overall F검정, Pairwise 검정이 있는데 그것이 ‘W’ 에 따라 다르다는 것이 핵심이다. 어느 순간부터 세 집단의 평균 차이가 유의하게 날 것인가? 두 집단의 평균 차이는 언제부터 유의하게 날 것인가? 두 Category끼리 보는 것은 Pairwise 검정(사후 검정)이 된다.
참고로 Coding System에 의해서는 test of Interaction between X and W가 영향을 받지 않는다. 적어도 Omnibus test에서는. Pairwise test에서는 변화가 생긴다.
그러면 Multicategorical에서는 JN technique를 사용할 수 없는 것일까?
의문이 들기 마련이다.
’From WHEN’이 Johnson-Neyman Technique를 이용한 조절효과 분석의
특징인데,
protest <- read.csv("/Users/seongminpark/Desktop/DS/EDStat/hayes2022data/protest/protest.csv")
# 변수 세팅
d1<-as.numeric(protest$protest==1);d2<-as.numeric(protest$protest==2)
d1sexism<-d1*protest$sexism;d2sexism<-d2*protest$sexism
protest<-data.frame(protest,d1,d2,d1sexism,d2sexism)
# PROCESS 실행
process (data=protest,y="liking",x="d1",w="sexism",cov=c("d2",
"d2sexism"),jn=1,model=1)
process (data=protest,y="liking",x="d2",w="sexism",cov=c("d1",
"d1sexism"),jn=1,model=1)
process(data=protest,y="liking",x="sexism",w="protest",mcw=1,model=1)
Outcome Variable: liking
Model Summary:
R R-sq MSE F df1 df2 p
0.3673 0.1349 0.9919 3.8372 5.0000 123.0000 0.0029
Model:
coeff se t p LLCI ULCI
constant 7.7062 1.0525 7.3218 0.0000 5.6229 9.7896
sexism -0.4725 0.2053 -2.3017 0.0230 -0.8788 -0.0662
W1 -4.1288 1.4985 -2.7553 0.0068 -7.0949 -1.1626
W2 -3.4908 1.4078 -2.4796 0.0145 -6.2775 -0.7041
Int_1 0.9012 0.2875 3.1346 0.0022 0.3321 1.4703
Int_2 0.7778 0.2752 2.8266 0.0055 0.2331 1.3225
Product terms key:
Int_1 : sexism x W1
Int_2 : sexism x W2
Test(s) of highest order unconditional interaction(s):
R2-chng F df1 df2 p
X*W 0.0822 5.8474 2.0000 123.0000 0.0038 ## 상호작용 두 항의 투입이 유의한가?
----------
Focal predictor: sexism (X)
Moderator: protest (W)
Conditional effects of the focal predictor at values of the moderator(s):
protest effect se t p LLCI ULCI
0.0000 -0.4725 0.2053 -2.3017 0.0230 -0.8788 -0.0662
1.0000 0.4287 0.2013 2.1298 0.0352 0.0303 0.8272
2.0000 0.3053 0.1833 1.6660 0.0983 -0.0574 0.6681
조절된 매개효과란, 매개 간접 효과 경로에 있는 계수인 a나 b가 W(조절변수)에 따라 변화가 있는가에 대한 것을 보는 것이다. 화살표를 받는 변수들이 M과 Y일 때, 회귀식을 다음과 같이 작성할 수 있다.
\(M = b_0 + aX + e_M\) , \(Y = b_0 + b_1M + b_2W + b_3MW + c'X +
e_Y\)
이 때 \(\theta_{M->Y} = (b_1 +
b_3W)M\) 으로 묶이기 때문에 간접효과는 \(a(b_1 + b_3W)\) 이 되며, 간접효과가
조절효과의 영향을 받는다고 생각하면 된다. 간접효과가 W에 의해 그 값이
변하지 않는가! 물론 모델은 여러 가지가 있을 수 있다는 사실.
위의 모형을 돌리는 Regression 식은 다음과 같다.
toneexp<-teams$negtone*teams$negexp
teams<-data.frame(teams,toneexp)
summary(lm(negtone~dysfunc,data=teams)) # X -> M Regression
summary(lm(perform~dysfunc+negtone+negexp+toneexp,data=teams)) # M -> Y(W) Moderated regression
아래는 M -> Y(W) Moderation analysis 부분을 PROCESS로 돌리는
코드이다 (cov 통제 필요함)
process (data=teams,y="perform",x="negtone",w="negexp",cov="dysfunc",model=1,plot=1)
하지만 이렇게 하면 귀찮으니까 우리는 편리한 PROCESS MARCO Model 14번을 이용한다.
result <- process (data=teams,y="perform",x="dysfunc",m="negtone",w="negexp", model=14,plot=1,save = 3, seed=42517)
##
## ********************* PROCESS for R Version 4.3.1 *********************
##
## Written by Andrew F. Hayes, Ph.D. www.afhayes.com
## Documentation available in Hayes (2022). www.guilford.com/p/hayes3
##
## ***********************************************************************
##
## Model : 14
## Y : perform
## X : dysfunc
## M : negtone
## W : negexp
##
## Sample size: 60
##
## Custom seed: 42517
##
##
## ***********************************************************************
## Outcome Variable: negtone
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.4384 0.1922 0.2268 13.7999 1.0000 58.0000 0.0005
##
## Model:
## coeff se t p LLCI ULCI
## constant 0.0257 0.0618 0.4159 0.6791 -0.0979 0.1493
## dysfunc 0.6198 0.1668 3.7148 0.0005 0.2858 0.9537
##
## ***********************************************************************
## Outcome Variable: perform
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.5586 0.3120 0.2015 6.2350 4.0000 55.0000 0.0003
##
## Model:
## coeff se t p LLCI ULCI
## constant -0.0119 0.0585 -0.2029 0.8399 -0.1292 0.1054
## dysfunc 0.3661 0.1778 2.0585 0.0443 0.0097 0.7224
## negtone -0.4357 0.1306 -3.3377 0.0015 -0.6974 -0.1741
## negexp -0.0192 0.1174 -0.1634 0.8708 -0.2545 0.2161
## Int_1 -0.5170 0.2409 -2.1458 0.0363 -0.9998 -0.0341
##
## Product terms key:
## Int_1 : negtone x negexp
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## M*W 0.0576 4.6043 1.0000 55.0000 0.0363
## ----------
## Focal predictor: negtone (M)
## Moderator: negexp (W)
##
## Conditional effects of the focal predictor at values of the moderator(s):
## negexp effect se t p LLCI ULCI
## -0.5308 -0.1613 0.2088 -0.7729 0.4429 -0.5797 0.2570
## -0.0600 -0.4047 0.1357 -2.9834 0.0042 -0.6766 -0.1329
## 0.6000 -0.7459 0.1626 -4.5879 0.0000 -1.0718 -0.4201
##
## Data for visualizing the conditional effect of the focal predictor:
## negtone negexp perform
## -0.4500 -0.5308 0.0836
## -0.0350 -0.5308 0.0166
## 0.5224 -0.5308 -0.0733
## -0.4500 -0.0600 0.1841
## -0.0350 -0.0600 0.0161
## 0.5224 -0.0600 -0.2095
## -0.4500 0.6000 0.3250
## -0.0350 0.6000 0.0154
## 0.5224 0.6000 -0.4004
##
## ***********************************************************************
## Bootstrapping progress:
##
|
| | 0%
|
| | 1%
|
|> | 1%
|
|> | 2%
|
|>> | 2%
|
|>> | 3%
|
|>> | 4%
|
|>>> | 4%
|
|>>> | 5%
|
|>>> | 6%
|
|>>>> | 6%
|
|>>>> | 7%
|
|>>>>> | 7%
|
|>>>>> | 8%
|
|>>>>> | 9%
|
|>>>>>> | 9%
|
|>>>>>> | 10%
|
|>>>>>>> | 10%
|
|>>>>>>> | 11%
|
|>>>>>>> | 12%
|
|>>>>>>>> | 12%
|
|>>>>>>>> | 13%
|
|>>>>>>>> | 14%
|
|>>>>>>>>> | 14%
|
|>>>>>>>>> | 15%
|
|>>>>>>>>>> | 15%
|
|>>>>>>>>>> | 16%
|
|>>>>>>>>>> | 17%
|
|>>>>>>>>>>> | 17%
|
|>>>>>>>>>>> | 18%
|
|>>>>>>>>>>> | 19%
|
|>>>>>>>>>>>> | 19%
|
|>>>>>>>>>>>> | 20%
|
|>>>>>>>>>>>>> | 20%
|
|>>>>>>>>>>>>> | 21%
|
|>>>>>>>>>>>>> | 22%
|
|>>>>>>>>>>>>>> | 22%
|
|>>>>>>>>>>>>>> | 23%
|
|>>>>>>>>>>>>>>> | 23%
|
|>>>>>>>>>>>>>>> | 24%
|
|>>>>>>>>>>>>>>> | 25%
|
|>>>>>>>>>>>>>>>> | 25%
|
|>>>>>>>>>>>>>>>> | 26%
|
|>>>>>>>>>>>>>>>> | 27%
|
|>>>>>>>>>>>>>>>>> | 27%
|
|>>>>>>>>>>>>>>>>> | 28%
|
|>>>>>>>>>>>>>>>>>> | 28%
|
|>>>>>>>>>>>>>>>>>> | 29%
|
|>>>>>>>>>>>>>>>>>> | 30%
|
|>>>>>>>>>>>>>>>>>>> | 30%
|
|>>>>>>>>>>>>>>>>>>> | 31%
|
|>>>>>>>>>>>>>>>>>>>> | 31%
|
|>>>>>>>>>>>>>>>>>>>> | 32%
|
|>>>>>>>>>>>>>>>>>>>> | 33%
|
|>>>>>>>>>>>>>>>>>>>>> | 33%
|
|>>>>>>>>>>>>>>>>>>>>> | 34%
|
|>>>>>>>>>>>>>>>>>>>>> | 35%
|
|>>>>>>>>>>>>>>>>>>>>>> | 35%
|
|>>>>>>>>>>>>>>>>>>>>>> | 36%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 36%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 37%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 38%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 38%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 39%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 40%
|
|>>>>>>>>>>>>>>>>>>>>>>>>> | 40%
|
|>>>>>>>>>>>>>>>>>>>>>>>>> | 41%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 41%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 42%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 43%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>> | 43%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>> | 44%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 44%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 45%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 46%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 46%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 47%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 48%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 48%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 49%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 49%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 50%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 51%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 51%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 52%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 52%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 53%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 54%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 54%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 55%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 56%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 56%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 57%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 57%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 58%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 59%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 59%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 60%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 60%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 61%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 62%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 62%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 63%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 64%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 64%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 65%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 65%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 66%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 67%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 67%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 68%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 69%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 69%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 70%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 70%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 71%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 72%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 72%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 73%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 73%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 74%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 75%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 75%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 76%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 77%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 77%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 78%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 78%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 79%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 80%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 80%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 81%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 81%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 82%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 83%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 83%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 84%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 85%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 85%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 86%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 86%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 87%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 88%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 88%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 89%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 90%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 90%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 91%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 91%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 92%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 93%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 93%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 94%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 94%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 95%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 96%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 96%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 97%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 98%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 98%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 99%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>| 99%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>| 100%
##
## **************** DIRECT AND INDIRECT EFFECTS OF X ON Y ****************
##
## Direct effect of X on Y:
## effect se t p LLCI ULCI
## 0.3661 0.1778 2.0585 0.0443 0.0097 0.7224
##
## Conditional indirect effects of X on Y:
##
## INDIRECT EFFECT:
##
## dysfunc -> negtone -> perform
##
## negexp Effect BootSE BootLLCI BootULCI
## -0.5308 -0.1000 0.1496 -0.3703 0.2394
## -0.0600 -0.2508 0.1186 -0.4928 -0.0354
## 0.6000 -0.4623 0.1706 -0.8068 -0.1488
##
## Index of moderated mediation:
## Index BootSE BootLLCI BootULCI
## negexp -0.3204 0.1891 -0.7612 -0.0421
##
## ***********************************************************************
##
## Map of column names to model coefficients in bootstrap matrix:
## name Conseqnt Antecdnt
## col1 negtone constant
## col2 negtone dysfunc
## col3 perform constant
## col4 perform dysfunc
## col5 perform negtone
## col6 perform negexp
## col7 perform Int_1
##
## ******************** ANALYSIS NOTES AND ERRORS ************************
##
## Level of confidence for all confidence intervals in output: 95
##
## Number of bootstraps for percentile bootstrap confidence intervals: 5000
##
## W values in conditional tables are the 16th, 50th, and 84th percentiles.
특이한 point는 아래에 있는 Indirect Effect 부분일 것이다. 우선 Conditional indirect effect의 존재로 \(ab_1 + ab_3W\) 값을 계산된 것을 확인할 수 있는데 16th, 50th, 84th percentile의 W 마다 계산된 effect 값을 확인할 수 있다. 이것은 간접 효과니까 Bootstrapping 해야만 한다. 화자는 여기서 \(ab_3\)를 index of moderated mediation이라고 칭하고 이것이 유의하게 0이 아니면 indirect effect가 moderator의 영향을 받는 것이다.
아래 plot을 보면 direct effect와 indirect effect가 비교 가능한데, 여기서 기울기가 바로 index이다. 즉 이 기울기가 유의하면 이 간접효과는 조절되고 있는 것이다. 즉 W가 한 단위 변할 때 Indirect Effect가 유의하게 변화하는가?
x<-c(0,1,0,1,0,1)
w<-c(-0.531,-0.531,-0.060,-0.060,0.600,0.600)
y<-c(0.366,-0.161,0.366,-0.405,0.366,-0.746)
plot(y=y,x=w,pch=15,col="white",
xlab="Nonverbal negative expressivity",
ylab="Effect of dysfunctional team behavior")
legend.txt<-c("Direct effect","Indirect effect")
legend("bottomleft",legend=legend.txt,lty=c(1,3),lwd=c(4,3))
lines(w[x==0],y[x==0],lwd=4,lty=1)
lines(w[x==1],y[x==1],lwd=4,lty=3)
abline(0,0,lwd=0.5,lty=2)
Sobel은 무시하고. Bootstrapping 같은 경우에 각 W마다 pick-a-point 방식으로 검정이 가능하다.
한편, JN방법은 일반적으로는 적용이 불가능하고 (JN의 경우 표준오차가 필요한데 conditional indirect effect의 표집분포가 정규분포임을 가정하기 때문, 이것은 불가능함을 여러번 설명함), 대신 Psuedo-JN 방식을 사용해야 한다. 이것은 위에서 이야기한 Bootstrapping을 수많은 W점들에 대해 실행하여, 그 구간이 0을 벗어나는 region을 채택한다. 왜 psuedo인가? 이것은 Approximation이기 때문이다.
boots<-result[[1]];poutput<-result[[2]]
modvalt<-teams$negexp
minmod<-min(modvalt);maxmod<-max(modvalt)
modval<-matrix(seq(minmod,maxmod,((maxmod-minmod)/10000)))
llci<-modval;ulci<-llci;jnfind<-matrix(999999)
effect<-poutput[3,1]*(poutput[7,1]+poutput[9,1]*modval)
for (i in (1:length(modval)))
{
bootind<-boots$col2*(boots$col5+boots$col7*modval[i])
llci[i,]<-matrix(quantile(bootind,.025))
ulci[i,]<-matrix(quantile(bootind,.975))
}
chk<-sign(llci*ulci)
for (i in (1:(length(modval)-1)))
{
chk2<-sign(chk[i]*chk[(i+1)])
if (chk2 < 0)
{
vala<-ulci[i];valb<-ulci[i+1]
chk3<-sign(llci[i]*llci[i+1])
if (chk3 < 1)
{
vala<-llci[i];valb<-llci[i+1]
}
wgt1<-(1-(abs(vala)/abs(vala-valb)))
wgt2<-(1-(abs(valb)/abs(vala-valb)))
jnfind<-cbind(jnfind,(wgt1*modval[i]+wgt2*modval[i+1]))
}
}
plot(x=modval,y=effect,type="l",pch=19,lwd=3,
xlim=c(min(modval),max(modval)),ylim=c(min(llci),max(ulci)),
ylab="Conditional indirect effect of dysfunctional behavior",
xlab="Team expressivity (W)")
points(modval,llci,lwd=2,lty=3,type="l",col="black")
points(modval,ulci,lwd=2,lty=3,type="l",col="black")
abline(h=0,untf = FALSE,lty=3,lwd=1,col="red")
if (length(jnfind) > 1)
{
jnfind<-jnfind[2:length(jnfind)]
for (i in (1:length(jnfind)))
{
abline(v=jnfind[i],untf=FALSE,lty=3,lwd=1)
text(jnfind[i],min(llci),format(jnfind[i]),cex=0.8)
}
}
교수님의 Comments
대개 Pick-a-point 방식을 사용하는 것으로 보인다. JN은 기본으로 t검정인데 (거의) 정규성을 가정하고 하는 것이지만, Indirect Effect 계수 ab는 정규성을 만족한다고 하기는 어려우므로 이론적으로는 불가능하다.
한편, 조절된 매개를 보기 위해서 매개효과가 반드시 선행되어야하는 것은 아니다. 매개가 없어도 조절은 있을 수 있다. 모델을 분리할 수 있기 때문.
만약 잠재변수를 이용한 조절-매개분석을 하면 Bootstrapping하면 시간이 엄청 많이 걸린다고 한다 (밥 먹고 와야 한다).
이번 장 궁극적인 모델의 목표는 다음과 같다.
이것은 하나의 Simple Mediation Analysis과 두 개의 Simple Moderation
Analysis의 결합이라고 볼 수 있다.
한편, M과 Y만이 궁극적으로 화살표를 받게 되므로 통계적으로는 다음과 같은
회귀분석 식을 써 볼 수 있다.
framskep<-disaster$frame*disaster$skeptic
disaster<-data.frame(disaster,framskep)
summary(lm(justify~frame+skeptic+framskep,data=disaster))
summary(lm(donate~frame+skeptic+framskep+justify,data=disaster))
result <- process(data=disaster,y="donate",x="frame",w="skeptic",m="justify",
model=8,plot=1,seed=284017, save = 3)
##
## ********************* PROCESS for R Version 4.3.1 *********************
##
## Written by Andrew F. Hayes, Ph.D. www.afhayes.com
## Documentation available in Hayes (2022). www.guilford.com/p/hayes3
##
## ***********************************************************************
##
## Model : 8
## Y : donate
## X : frame
## M : justify
## W : skeptic
##
## Sample size: 211
##
## Custom seed: 284017
##
##
## ***********************************************************************
## Outcome Variable: justify
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.4962 0.2463 0.6609 22.5430 3.0000 207.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 2.4515 0.1490 16.4486 0.0000 2.1577 2.7454
## frame -0.5625 0.2179 -2.5811 0.0105 -0.9921 -0.1328
## skeptic 0.1051 0.0381 2.7559 0.0064 0.0299 0.1803
## Int_1 0.2012 0.0553 3.6401 0.0003 0.0922 0.3101
##
## Product terms key:
## Int_1 : frame x skeptic
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## X*W 0.0482 13.2503 1.0000 207.0000 0.0003
## ----------
## Focal predictor: frame (X)
## Moderator: skeptic (W)
##
## Conditional effects of the focal predictor at values of the moderator(s):
## skeptic effect se t p LLCI ULCI
## 1.5920 -0.2422 0.1495 -1.6203 0.1067 -0.5369 0.0525
## 2.8000 0.0008 0.1166 0.0072 0.9942 -0.2290 0.2307
## 5.2000 0.4837 0.1505 3.2134 0.0015 0.1869 0.7804
##
## Data for visualizing the conditional effect of the focal predictor:
## frame skeptic justify
## 0.0000 1.5920 2.6188
## 1.0000 1.5920 2.3766
## 0.0000 2.8000 2.7458
## 1.0000 2.8000 2.7466
## 0.0000 5.2000 2.9980
## 1.0000 5.2000 3.4816
##
## ***********************************************************************
## Outcome Variable: donate
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.6738 0.4540 0.9659 42.8155 4.0000 206.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 7.2915 0.2737 26.6425 0.0000 6.7519 7.8310
## frame 0.1603 0.2677 0.5990 0.5499 -0.3674 0.6880
## justify -0.9227 0.0840 -10.9808 0.0000 -1.0884 -0.7570
## skeptic -0.0426 0.0469 -0.9070 0.3654 -0.1351 0.0500
## Int_1 0.0149 0.0689 0.2165 0.8288 -0.1210 0.1508
##
## Product terms key:
## Int_1 : frame x skeptic
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## X*W 0.0001 0.0469 1.0000 206.0000 0.8288
## ----------
## Focal predictor: frame (X)
## Moderator: skeptic (W)
##
## Conditional effects of the focal predictor at values of the moderator(s):
## skeptic effect se t p LLCI ULCI
## 1.5920 0.1841 0.1818 1.0123 0.3126 -0.1744 0.5426
## 2.8000 0.2021 0.1409 1.4340 0.1531 -0.0758 0.4800
## 5.2000 0.2379 0.1865 1.2760 0.2034 -0.1297 0.6055
##
## Data for visualizing the conditional effect of the focal predictor:
## frame skeptic donate
## 0.0000 1.5920 4.5786
## 1.0000 1.5920 4.7627
## 0.0000 2.8000 4.5272
## 1.0000 2.8000 4.7293
## 0.0000 5.2000 4.4250
## 1.0000 5.2000 4.6630
##
## ***********************************************************************
## Bootstrapping progress:
##
|
| | 0%
|
| | 1%
|
|> | 1%
|
|> | 2%
|
|>> | 2%
|
|>> | 3%
|
|>> | 4%
|
|>>> | 4%
|
|>>> | 5%
|
|>>> | 6%
|
|>>>> | 6%
|
|>>>> | 7%
|
|>>>>> | 7%
|
|>>>>> | 8%
|
|>>>>> | 9%
|
|>>>>>> | 9%
|
|>>>>>> | 10%
|
|>>>>>>> | 10%
|
|>>>>>>> | 11%
|
|>>>>>>> | 12%
|
|>>>>>>>> | 12%
|
|>>>>>>>> | 13%
|
|>>>>>>>> | 14%
|
|>>>>>>>>> | 14%
|
|>>>>>>>>> | 15%
|
|>>>>>>>>>> | 15%
|
|>>>>>>>>>> | 16%
|
|>>>>>>>>>> | 17%
|
|>>>>>>>>>>> | 17%
|
|>>>>>>>>>>> | 18%
|
|>>>>>>>>>>> | 19%
|
|>>>>>>>>>>>> | 19%
|
|>>>>>>>>>>>> | 20%
|
|>>>>>>>>>>>>> | 20%
|
|>>>>>>>>>>>>> | 21%
|
|>>>>>>>>>>>>> | 22%
|
|>>>>>>>>>>>>>> | 22%
|
|>>>>>>>>>>>>>> | 23%
|
|>>>>>>>>>>>>>>> | 23%
|
|>>>>>>>>>>>>>>> | 24%
|
|>>>>>>>>>>>>>>> | 25%
|
|>>>>>>>>>>>>>>>> | 25%
|
|>>>>>>>>>>>>>>>> | 26%
|
|>>>>>>>>>>>>>>>> | 27%
|
|>>>>>>>>>>>>>>>>> | 27%
|
|>>>>>>>>>>>>>>>>> | 28%
|
|>>>>>>>>>>>>>>>>>> | 28%
|
|>>>>>>>>>>>>>>>>>> | 29%
|
|>>>>>>>>>>>>>>>>>> | 30%
|
|>>>>>>>>>>>>>>>>>>> | 30%
|
|>>>>>>>>>>>>>>>>>>> | 31%
|
|>>>>>>>>>>>>>>>>>>>> | 31%
|
|>>>>>>>>>>>>>>>>>>>> | 32%
|
|>>>>>>>>>>>>>>>>>>>> | 33%
|
|>>>>>>>>>>>>>>>>>>>>> | 33%
|
|>>>>>>>>>>>>>>>>>>>>> | 34%
|
|>>>>>>>>>>>>>>>>>>>>> | 35%
|
|>>>>>>>>>>>>>>>>>>>>>> | 35%
|
|>>>>>>>>>>>>>>>>>>>>>> | 36%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 36%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 37%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 38%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 38%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 39%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 40%
|
|>>>>>>>>>>>>>>>>>>>>>>>>> | 40%
|
|>>>>>>>>>>>>>>>>>>>>>>>>> | 41%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 41%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 42%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 43%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>> | 43%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>> | 44%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 44%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 45%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 46%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 46%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 47%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 48%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 48%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 49%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 49%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 50%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 51%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 51%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 52%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 52%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 53%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 54%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 54%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 55%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 56%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 56%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 57%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 57%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 58%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 59%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 59%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 60%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 60%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 61%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 62%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 62%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 63%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 64%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 64%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 65%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 65%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 66%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 67%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 67%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 68%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 69%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 69%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 70%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 70%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 71%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 72%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 72%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 73%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 73%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 74%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 75%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 75%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 76%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 77%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 77%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 78%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 78%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 79%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 80%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 80%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 81%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 81%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 82%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 83%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 83%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 84%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 85%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 85%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 86%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 86%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 87%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 88%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 88%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 89%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 90%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 90%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 91%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 91%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 92%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 93%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 93%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 94%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 94%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 95%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 96%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 96%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 97%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 98%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 98%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 99%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>| 99%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>| 100%
##
## **************** DIRECT AND INDIRECT EFFECTS OF X ON Y ****************
##
## Conditional direct effect(s) of X on Y:
## skeptic effect se t p LLCI ULCI
## 1.5920 0.1841 0.1818 1.0123 0.3126 -0.1744 0.5426
## 2.8000 0.2021 0.1409 1.4340 0.1531 -0.0758 0.4800
## 5.2000 0.2379 0.1865 1.2760 0.2034 -0.1297 0.6055
##
## Conditional indirect effects of X on Y:
##
## INDIRECT EFFECT:
##
## frame -> justify -> donate
##
## skeptic Effect BootSE BootLLCI BootULCI
## 1.5920 0.2235 0.1412 -0.0509 0.5040
## 2.8000 -0.0008 0.1046 -0.2085 0.2042
## 5.2000 -0.4463 0.1582 -0.7642 -0.1403
##
## Index of moderated mediation:
## Index BootSE BootLLCI BootULCI
## skeptic -0.1856 0.0607 -0.3054 -0.0676
##
## ***********************************************************************
##
## Map of column names to model coefficients in bootstrap matrix:
## name Conseqnt Antecdnt
## col1 justify constant
## col2 justify frame
## col3 justify skeptic
## col4 justify Int_1
## col5 donate constant
## col6 donate frame
## col7 donate justify
## col8 donate skeptic
## col9 donate Int_1
##
## ******************** ANALYSIS NOTES AND ERRORS ************************
##
## Level of confidence for all confidence intervals in output: 95
##
## Number of bootstraps for percentile bootstrap confidence intervals: 5000
##
## W values in conditional tables are the 16th, 50th, and 84th percentiles.
Index of moderated mediation:
Index BootSE BootLLCI BootULCI
skeptic -0.1856 0.0612 -0.3050 -0.0648
W값에 따라서 매개가 존재할 수도 존재하지 않을 수도 있다. 이것을 나타내는 지수가 Index이다. 보니까 유의하다. 조절된 매개는 존재하고 있는 것이다. 그래서 보면 W=5.2에서는 Bootstrapping CI가 유의하게 나온다. 한편 직접효과의 경우, XW->Y에 대한 계수(Int_1)가 유의하지 않으므로 그 밑에 Conditional direct effect의 probing 또한 유의하지 않게 된다.
x<-c(0,1,0,1,0,1)
w<-c(1.592,1.592,2.800,2.800,5.200,5.200)
y<-c(0.184,0.224,0.202,-0.001,0.238,-0.446)
plot(y=y,x=w,pch=15,col="white",
xlab="Climate change skepticism",
ylab="Effect of frame on willingness to donate")
legend.txt<-c("Direct effect","Indirect effect")
legend("bottomleft",legend=legend.txt,lty=c(1,3),lwd=c(4,3))
lines(w[x==0],y[x==0],lwd=4,lty=1)
lines(w[x==1],y[x==1],lwd=4,lty=3)
abline(0,0,lwd=0.5,lty=2)
아까와 그림이 조금 다르지 않은가? Indirect Effect가 W에 따라 부호가 바뀌기도 하는 것을 확인할 수 있다. 일단 Indirect Effect의 기울기인 index가 유의하니까 매개효과가 조절되는 것은 확실한데, 어느 W부터 유의한가에 대한 고찰이 이슈다. 효과가 0이랑 유의하게 차이나야 하니까 W가 커질수록 유의해지겠지?
한편, Conditional Direct Effect가 유의하지 않으니까 Model 7로 간소화하는 것도 고민해보자 (Pruning).
아래 JN을 보면 그 W가 3.99부터라는 것을 알 수 있다. 즉 conditional indirect effect가 0과 유의하게 다른지를 보는 것이 핵심이고, index를 통해서 매개가 조절되는지 아닌지에 대한 fact를 체크한 후 pick-a-point던 psuedo JN이던 probing을 하는 것이다.
boots<-result[[1]];poutput<-result[[2]]
modvalt<-disaster$skeptic
minmod<-min(modvalt);maxmod<-max(modvalt)
modval<-matrix(seq(minmod,maxmod,((maxmod-minmod)/10000)))
llci<-modval;ulci<-llci;jnfind<-matrix(999999)
effect<-(poutput[3,1]+poutput[5,1]*modval)*poutput[19,1]
for (i in (1:length(modval)))
{
bootind<-(boots$col2+boots$col4*modval[i])*boots$col7
llci[i,]<-matrix(quantile(bootind,.025))
ulci[i,]<-matrix(quantile(bootind,.975))
}
chk<-sign(llci*ulci)
for (i in (1:(length(modval)-1)))
{
chk2<-sign(chk[i]*chk[(i+1)])
if (chk2 < 0)
{
vala<-ulci[i];valb<-ulci[i+1]
chk3<-sign(llci[i]*llci[i+1])
if (chk3 < 1)
{
vala<-llci[i];valb<-llci[i+1]
}
wgt1<-(1-(abs(vala)/abs(vala-valb)))
wgt2<-(1-(abs(valb)/abs(vala-valb)))
jnfind<-cbind(jnfind,(wgt1*modval[i]+wgt2*modval[i+1]))
}
}
plot(x=modval,y=effect,type="l",pch=19,lwd=3,
xlim=c(min(modval),max(modval)),ylim=c(min(llci),max(ulci)),
ylab="Conditional indirect effect of disaster frame",
xlab="Climate change skepticism (W)")
points(modval,llci,lwd=2,lty=3,type="l",col="black")
points(modval,ulci,lwd=2,lty=3,type="l",col="black")
abline(h=0,untf = FALSE,lty=3,lwd=1,col="red")
if (length(jnfind) > 1)
{
jnfind<-jnfind[2:length(jnfind)]
for (i in (1:length(jnfind)))
{
abline(v=jnfind[i],untf=FALSE,lty=3,lwd=1)
text(jnfind[i],min(llci),format(jnfind[i]),cex=0.8)
}
}
매개된 조절? 조절된 매개의 영역은 넓지만 (화살표 쏘기 나름인데), 매개된 조절은 모형이 단 하나밖에 없다. 하지만 매개된 조절은 허상이다. 특히나 Conceptually No meaning이다.
왜 그런지 고민해보자. 조절된 매개라는 것은 Simple Moderation Model에서 중간 화살표에 모두 매개가 끼는 거다. 즉 X, W, XW가 원래 Y로 straight로 쏘는 조절모델에 중간에 M이라는 매개가 끼는 셈이다. 이것을 그림으로 그려보면 본 챕터의 맨 위에 그려진 모델과 같다는 사실을 알 수 있다. 결국 mathematically identical.
그러면 왜? 문제가 되는가. Moderated Mediation은 W값에 따라 conditional하게 Mediated 되는가를 개념적으로 묻는데, Mediated Moderation은 M이 XW->Y를 매개하는가에 대한 질문과 같다. 그렇다면 이 간접효과가 우리에게 어떤 의미를 주는가? 사실 XW라는 변수의 등장은 Moderation에서 \(\theta_{X->Y}\)가 W의 linear function으로 표현된 것에서 비롯되었는데, XW를 독립변수로 두는 것에 대한 변수 자체의 의미를 마땅히 찾을 수가 없다.
이걸 해석할 줄 알면 다 한거다.
process(data=protest,y="liking",x="protest",m="respappr",w="sexism",
plot=1,mcx=3,model=8,seed=290417)
##
## ********************* PROCESS for R Version 4.3.1 *********************
##
## Written by Andrew F. Hayes, Ph.D. www.afhayes.com
## Documentation available in Hayes (2022). www.guilford.com/p/hayes3
##
## ***********************************************************************
##
## Model : 8
## Y : liking
## X : protest
## M : respappr
## W : sexism
##
## Sample size: 129
##
## Custom seed: 290417
##
## Coding of categorical X variable for analysis:
## protest X1 X2
## 0.0000 -0.6667 0.0000
## 1.0000 0.3333 -0.5000
## 2.0000 0.3333 0.5000
##
## ***********************************************************************
## Outcome Variable: respappr
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.5618 0.3156 1.2945 11.3424 5.0000 123.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 4.6069 0.6726 6.8497 0.0000 3.2756 5.9382
## X1 -2.9398 1.4498 -2.0277 0.0448 -5.8096 -0.0699
## X2 1.6707 1.6203 1.0311 0.3045 -1.5366 4.8781
## sexism 0.0416 0.1298 0.3202 0.7494 -0.2154 0.2986
## Int_1 0.8559 0.2814 3.0418 0.0029 0.2989 1.4128
## Int_2 -0.2439 0.3110 -0.7842 0.4344 -0.8595 0.3717
##
## Product terms key:
## Int_1 : X1 x sexism
## Int_2 : X2 x sexism
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## X*W 0.0537 4.8233 2.0000 123.0000 0.0096
## ----------
## Focal predictor: protest (X)
## Moderator: sexism (W)
##
## Conditional effects of the focal predictor at values of the moderator(s):
##
## Moderator value(s):
##
## sexism 4.2500
##
## effect se t p LLCI ULCI
## X1 0.6976 0.3213 2.1714 0.0318 0.0617 1.3336
## X2 0.6342 0.3719 1.7053 0.0907 -0.1020 1.3704
##
## Test of equality of conditional means
## F df1 df2 p
## 4.2751 2.0000 123.0000 0.0160
##
## Estimated conditional means being compared:
## protest respappr
## 0.0000 4.3184
## 1.0000 4.6990
## 2.0000 5.3332
## ----------
## Moderator value(s):
##
## sexism 5.1200
##
## effect se t p LLCI ULCI
## X1 1.4422 0.2161 6.6736 0.0000 1.0145 1.8700
## X2 0.4221 0.2449 1.7232 0.0874 -0.0628 0.9069
##
## Test of equality of conditional means
## F df1 df2 p
## 23.9623 2.0000 123.0000 0.0000
##
## Estimated conditional means being compared:
## protest respappr
## 0.0000 3.8582
## 1.0000 5.0894
## 2.0000 5.5115
## ----------
## Moderator value(s):
##
## sexism 5.8960
##
## effect se t p LLCI ULCI
## X1 2.1064 0.3121 6.7487 0.0000 1.4886 2.7242
## X2 0.2328 0.3371 0.6906 0.4911 -0.4345 0.9001
##
## Test of equality of conditional means
## F df1 df2 p
## 22.8591 2.0000 123.0000 0.0000
##
## Estimated conditional means being compared:
## protest respappr
## 0.0000 3.4477
## 1.0000 5.4377
## 2.0000 5.6705
##
## Data for visualizing the conditional effect of the focal predictor:
## protest sexism respappr
## 0.0000 4.2500 4.3184
## 1.0000 4.2500 4.6990
## 2.0000 4.2500 5.3332
## 0.0000 5.1200 3.8582
## 1.0000 5.1200 5.0894
## 2.0000 5.1200 5.5115
## 0.0000 5.8960 3.4477
## 1.0000 5.8960 5.4377
## 2.0000 5.8960 5.6705
##
## ***********************************************************************
## Outcome Variable: liking
##
## Model Summary:
## R R-sq MSE F df1 df2 p
## 0.5355 0.2868 0.8245 8.1767 6.0000 122.0000 0.0000
##
## Model:
## coeff se t p LLCI ULCI
## constant 3.4767 0.6309 5.5108 0.0000 2.2278 4.7256
## X1 -2.7315 1.1763 -2.3222 0.0219 -5.0601 -0.4030
## X2 0.0252 1.2987 0.0194 0.9846 -2.5458 2.5962
## respappr 0.3668 0.0720 5.0969 0.0000 0.2243 0.5092
## sexism 0.0719 0.1037 0.6940 0.4890 -0.1333 0.2771
## Int_1 0.5256 0.2328 2.2573 0.0258 0.0647 0.9866
## Int_2 -0.0340 0.2488 -0.1365 0.8917 -0.5265 0.4586
##
## Product terms key:
## Int_1 : X1 x sexism
## Int_2 : X2 x sexism
##
## Test(s) of highest order unconditional interaction(s):
## R2-chng F df1 df2 p
## X*W 0.0298 2.5479 2.0000 122.0000 0.0824
## ----------
## Focal predictor: protest (X)
## Moderator: sexism (W)
##
## Conditional effects of the focal predictor at values of the moderator(s):
##
## (These are also the relative conditional direct effects of X on Y.)
##
## Moderator value(s):
##
## sexism 4.2500
##
## effect se t p LLCI ULCI
## X1 -0.4977 0.2613 -1.9048 0.0592 -1.0149 0.0195
## X2 -0.1192 0.3003 -0.3968 0.6922 -0.7137 0.4754
##
## Test of equality of conditional means
## F df1 df2 p
## 1.9642 2.0000 122.0000 0.1447
##
## Estimated conditional means being compared:
## protest liking
## 0.0000 5.8991
## 1.0000 5.4610
## 2.0000 5.3418
## ----------
## Moderator value(s):
##
## sexism 5.1200
##
## effect se t p LLCI ULCI
## X1 -0.0404 0.2013 -0.2007 0.8413 -0.4389 0.3581
## X2 -0.1487 0.1978 -0.7517 0.4537 -0.5403 0.2429
##
## Test of equality of conditional means
## F df1 df2 p
## 0.2942 2.0000 122.0000 0.7457
##
## Estimated conditional means being compared:
## protest liking
## 0.0000 5.6568
## 1.0000 5.6908
## 2.0000 5.5421
## ----------
## Moderator value(s):
##
## sexism 5.8960
##
## effect se t p LLCI ULCI
## X1 0.3675 0.2916 1.2603 0.2100 -0.2097 0.9447
## X2 -0.1751 0.2696 -0.6494 0.5173 -0.7087 0.3586
##
## Test of equality of conditional means
## F df1 df2 p
## 1.0646 2.0000 122.0000 0.3480
##
## Estimated conditional means being compared:
## protest liking
## 0.0000 5.4407
## 1.0000 5.8957
## 2.0000 5.7207
##
## Data for visualizing the conditional effect of the focal predictor:
## protest sexism liking
## 0.0000 4.2500 5.8991
## 1.0000 4.2500 5.4610
## 2.0000 4.2500 5.3418
## 0.0000 5.1200 5.6568
## 1.0000 5.1200 5.6908
## 2.0000 5.1200 5.5421
## 0.0000 5.8960 5.4407
## 1.0000 5.8960 5.8957
## 2.0000 5.8960 5.7207
##
## ***********************************************************************
## Bootstrapping progress:
##
|
| | 0%
|
| | 1%
|
|> | 1%
|
|> | 2%
|
|>> | 2%
|
|>> | 3%
|
|>> | 4%
|
|>>> | 4%
|
|>>> | 5%
|
|>>> | 6%
|
|>>>> | 6%
|
|>>>> | 7%
|
|>>>>> | 7%
|
|>>>>> | 8%
|
|>>>>> | 9%
|
|>>>>>> | 9%
|
|>>>>>> | 10%
|
|>>>>>>> | 10%
|
|>>>>>>> | 11%
|
|>>>>>>> | 12%
|
|>>>>>>>> | 12%
|
|>>>>>>>> | 13%
|
|>>>>>>>> | 14%
|
|>>>>>>>>> | 14%
|
|>>>>>>>>> | 15%
|
|>>>>>>>>>> | 15%
|
|>>>>>>>>>> | 16%
|
|>>>>>>>>>> | 17%
|
|>>>>>>>>>>> | 17%
|
|>>>>>>>>>>> | 18%
|
|>>>>>>>>>>> | 19%
|
|>>>>>>>>>>>> | 19%
|
|>>>>>>>>>>>> | 20%
|
|>>>>>>>>>>>>> | 20%
|
|>>>>>>>>>>>>> | 21%
|
|>>>>>>>>>>>>> | 22%
|
|>>>>>>>>>>>>>> | 22%
|
|>>>>>>>>>>>>>> | 23%
|
|>>>>>>>>>>>>>>> | 23%
|
|>>>>>>>>>>>>>>> | 24%
|
|>>>>>>>>>>>>>>> | 25%
|
|>>>>>>>>>>>>>>>> | 25%
|
|>>>>>>>>>>>>>>>> | 26%
|
|>>>>>>>>>>>>>>>> | 27%
|
|>>>>>>>>>>>>>>>>> | 27%
|
|>>>>>>>>>>>>>>>>> | 28%
|
|>>>>>>>>>>>>>>>>>> | 28%
|
|>>>>>>>>>>>>>>>>>> | 29%
|
|>>>>>>>>>>>>>>>>>> | 30%
|
|>>>>>>>>>>>>>>>>>>> | 30%
|
|>>>>>>>>>>>>>>>>>>> | 31%
|
|>>>>>>>>>>>>>>>>>>>> | 31%
|
|>>>>>>>>>>>>>>>>>>>> | 32%
|
|>>>>>>>>>>>>>>>>>>>> | 33%
|
|>>>>>>>>>>>>>>>>>>>>> | 33%
|
|>>>>>>>>>>>>>>>>>>>>> | 34%
|
|>>>>>>>>>>>>>>>>>>>>> | 35%
|
|>>>>>>>>>>>>>>>>>>>>>> | 35%
|
|>>>>>>>>>>>>>>>>>>>>>> | 36%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 36%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 37%
|
|>>>>>>>>>>>>>>>>>>>>>>> | 38%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 38%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 39%
|
|>>>>>>>>>>>>>>>>>>>>>>>> | 40%
|
|>>>>>>>>>>>>>>>>>>>>>>>>> | 40%
|
|>>>>>>>>>>>>>>>>>>>>>>>>> | 41%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 41%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 42%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>> | 43%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>> | 43%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>> | 44%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 44%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 45%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 46%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 46%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 47%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 48%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 48%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 49%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 49%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 50%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 51%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 51%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 52%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 52%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 53%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 54%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 54%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 55%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 56%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 56%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 57%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 57%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 58%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 59%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 59%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 60%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 60%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 61%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 62%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 62%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 63%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 64%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 64%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 65%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 65%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 66%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 67%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 67%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 68%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 69%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 69%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 70%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 70%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 71%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 72%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 72%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 73%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 73%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 74%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 75%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 75%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 76%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 77%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 77%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 78%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 78%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 79%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 80%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 80%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 81%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 81%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 82%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 83%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 83%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 84%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 85%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 85%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 86%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 86%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 87%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 88%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 88%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 89%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 90%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 90%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 91%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 91%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 92%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 93%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 93%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 94%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 94%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 95%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 96%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 96%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 97%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 98%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 98%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | 99%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>| 99%
|
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>| 100%
##
## **************** DIRECT AND INDIRECT EFFECTS OF X ON Y ****************
##
## Relative conditional direct effects of X on Y:
## sexism effect se t p LLCI ULCI
## X1 4.2500 -0.4977 0.2613 -1.9048 0.0592 -1.0149 0.0195
## X1 5.1200 -0.0404 0.2013 -0.2007 0.8413 -0.4389 0.3581
## X1 5.8960 0.3675 0.2916 1.2603 0.2100 -0.2097 0.9447
## X2 4.2500 -0.1192 0.3003 -0.3968 0.6922 -0.7137 0.4754
## X2 5.1200 -0.1487 0.1978 -0.7517 0.4537 -0.5403 0.2429
## X2 5.8960 -0.1751 0.2696 -0.6494 0.5173 -0.7087 0.3586
##
## Relative conditional indirect effects of X on Y:
##
## INDIRECT EFFECT:
##
## protest -> respappr -> liking
##
## sexism Effect BootSE BootLLCI BootULCI
## X1 4.2500 0.2559 0.1393 -0.0035 0.5459
## X1 5.1200 0.5290 0.1331 0.2869 0.8099
## X1 5.8960 0.7726 0.2078 0.3831 1.2057
##
## Index of moderated mediation:
## Index BootSE BootLLCI BootULCI
## sexism 0.3139 0.1453 0.0472 0.6188
##
## sexism Effect BootSE BootLLCI BootULCI
## X2 4.2500 0.2326 0.1384 -0.0005 0.5376
## X2 5.1200 0.1548 0.0881 0.0059 0.3515
## X2 5.8960 0.0854 0.1094 -0.1118 0.3200
##
## Index of moderated mediation:
## Index BootSE BootLLCI BootULCI
## sexism -0.0894 0.1060 -0.3105 0.1089
##
## ******************** ANALYSIS NOTES AND ERRORS ************************
##
## Level of confidence for all confidence intervals in output: 95
##
## Number of bootstraps for percentile bootstrap confidence intervals: 5000
##
## W values in conditional tables are the 16th, 50th, and 84th percentiles.
이거에 대한 JN probing도 Psuedo로 Chapter 10, 11 결합해서 하면 될 듯 하다. 즉 밑에 Indirect Effect 결과는 W가 3개씩 있지만 이거 10000개 돌려서 D1, D2 각각에 대한 그래프 그리면 된다. 아마 D2는 유의하지 않겠지.
Bootstrapping code 원리
Plot 결과 나오는 거 프레임 바꾸는 코드
Psuedo JN Technique code 익히기
교수님이 종단매개에 대하여 언급하셨다. PROCESS의 한계도 있다.