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