6번 모델이다. 상담 하는 분들이 많이 쓰시는거 같다. 간접경로가 3개 나오기 때문에 하나는 걸리지 않을까 싶다.
#model 6
x<-rnorm(100)
me1<-rnorm(100)+ x
me2<-rnorm(100) +me1 + x
y<-rnorm(100, 0,1) + me2 -x
co1<-rnorm(100)
d<-data.frame(x,me1, me2,y,co1)
연속 매개에서 그래도 잘 안나오는 매개 변수 두개 거치는거 나오게 만들었다. 기분이 좋다. 그리고 좀 극적인 모습을 보이려고 직접효과는 부적 영향을 주게 만들었다.
boot6<-function(xxx,mmm1, mmm2, yyy,d,bootnum){
###estimate a*m
boot6_1<-function(xxx,mmm1, mmm2,yyy,d){
n<-sample(1:nrow(d),replace = T)
nnk<-d[n,]
nnk<-as.data.frame(nnk)
k1<-lm(nnk[,mmm1]~ nnk[,xxx], data=nnk)
s1<-summary(k1)
coem<-s1$coefficients
eff1<-as.data.frame(coem)
ceff1<-eff1[nrow(eff1),1]
k2<-lm(nnk[,mmm2] ~ nnk[,xxx]+ nnk[,mmm1], data = nnk)
s2<-summary(k2)
coem2<-s2$coefficients
eff2<-as.data.frame(coem2)
ceff2<-eff2[nrow(eff2),1]
ceff3<-eff2[nrow(eff2)-1,1]
k3<-lm(nnk[,yyy] ~ nnk[,xxx]+ nnk[,mmm1] + nnk[,mmm2], data = nnk)
s3<-summary(k3)
coem3<-s3$coefficients
eff3<-as.data.frame(coem3)
ceff4<-eff3[nrow(eff3),1]
ceff5<-eff3[nrow(eff3)-1,1]
ceff6<-eff3[nrow(eff3)-2,1]
indi1<-ceff1*ceff2*ceff4
indi2<-ceff1*ceff5
indi3<-ceff3*ceff4
di<-ceff6
inditotal<-indi1+indi2+indi3
total<-inditotal+di
efff<-c(indi1,indi2,indi3,di,inditotal,total)
efff<-matrix(efff, ncol = 6)
efff
}
k<-1
l<-matrix(rep(NA,bootnum*6),ncol = 6)
l<-as.data.frame(l)
repeat{
l[k,]<-boot6_1(xxx,mmm1,mmm2,yyy,d)
k<-k+1
if(k>=bootnum+1) break
}
estimates<-list(l)
ci1<-quantile(l[,1],probs = c(.001,0.01,0.05,0.10,0.90,0.95,0.99,.999))
ci2<-quantile(l[,2],probs = c(.001,0.01,0.05,0.10,0.90,0.95,0.99,.999))
ci3<-quantile(l[,3],probs = c(.001,0.01,0.05,0.10,0.90,0.95,0.99,.999))
ci4<-quantile(l[,4],probs = c(.001,0.01,0.05,0.10,0.90,0.95,0.99,.999))
ci5<-quantile(l[,5],probs = c(.001,0.01,0.05,0.10,0.90,0.95,0.99,.999))
ci6<-quantile(l[,6],probs = c(.001,0.01,0.05,0.10,0.90,0.95,0.99,.999))
kmkmkmkm<-list(c(mean(l[,1]),sd(l[,1])),ci1,c(mean(l[,2]),sd(l[,2])),ci2,c(mean(l[,3]),sd(l[,3])),ci3,c(mean(l[,4]),sd(l[,4])),ci4,c(mean(l[,5]),sd(l[,5])),ci5, c(mean(l[,6]),sd(l[,6])),ci6 )
names(kmkmkmkm)<-c("indirect1_mediation_mean_BootSE(x->m1->m2->y)", "mediation_CI(x->m1->m2->y)", "indirect2_mediation_mean_BootSE(x->m1->y)", "mediation_CI(x->m1->y)",
"indirect2_mediation_mean_BootSE(x->m2->y)", "mediation_CI(x->m2->y)", "direct_mean_BootSE(x->y)", "direct_CI(x->y)",
"indirect_total_mean_BootSE","indirect_total_CI", "total_mean_BootSE","total_CI" )
kmkmkmkm
}
boot6(1,2,3,4,d,1000)
## $`indirect1_mediation_mean_BootSE(x->m1->m2->y)`
## [1] 0.7325015 0.1330520
##
## $`mediation_CI(x->m1->m2->y)`
## 0.1% 1% 5% 10% 90% 95% 99% 99.9%
## 0.4146695 0.4441359 0.5243230 0.5699999 0.9163840 0.9773479 1.0535190 1.1109437
##
## $`indirect2_mediation_mean_BootSE(x->m1->y)`
## [1] 0.06152233 0.11436148
##
## $`mediation_CI(x->m1->y)`
## 0.1% 1% 5% 10% 90% 95%
## -0.29646563 -0.19039895 -0.11894479 -0.07253085 0.19651035 0.25584772
## 99% 99.9%
## 0.34184335 0.56496278
##
## $`indirect2_mediation_mean_BootSE(x->m2->y)`
## [1] 0.9232344 0.1566822
##
## $`mediation_CI(x->m2->y)`
## 0.1% 1% 5% 10% 90% 95% 99% 99.9%
## 0.5252644 0.5941857 0.6842417 0.7307664 1.1349033 1.1898097 1.3409775 1.3973509
##
## $`direct_mean_BootSE(x->y)`
## [1] -0.7108789 0.1659241
##
## $`direct_CI(x->y)`
## 0.1% 1% 5% 10% 90% 95% 99%
## -1.2095671 -1.0859869 -0.9776445 -0.9161979 -0.4933985 -0.4434442 -0.2836413
## 99.9%
## -0.1369124
##
## $indirect_total_mean_BootSE
## [1] 1.7172583 0.1671435
##
## $indirect_total_CI
## 0.1% 1% 5% 10% 90% 95% 99% 99.9%
## 1.307195 1.356324 1.448511 1.507997 1.935822 1.991579 2.141617 2.308914
##
## $total_mean_BootSE
## [1] 1.0063793 0.1818331
##
## $total_CI
## 0.1% 1% 5% 10% 90% 95% 99% 99.9%
## 0.5182558 0.6292892 0.7138525 0.7800876 1.2570925 1.3300074 1.4430025 1.5150231