5번 모델이다. 사실 쓰는 사람을 못봤다.
x<-rnorm(100)
me<-rnorm(100)+ x
w<- rnorm(100)
y<-rnorm(100, 0,1) + x*w +me
co1<-rnorm(100)
d<-data.frame(x,me,w,y,co1)
조건부 직접효과…. 이걸 써서 가설 검정을 할 게 있나…? 그래도 있으니 써본다…
boot5<-function(xxx,mmm,www,yyy,d,bootnum){
###estimate a*m
boot5_1<-function(xxx,mmm,www,yyy,d){
n<-sample(1:nrow(d),replace = T)
nnk<-d[n,]
nnk<-as.data.frame(nnk)
k1<-lm(nnk[,mmm]~ nnk[,xxx], data=nnk)
s1<-summary(k1)
coem<-s1$coefficients
eff<-as.data.frame(coem)
eff<-eff[nrow(eff),1]
k2<-lm(nnk[,yyy] ~ nnk[,xxx]+ nnk[,mmm] +nnk[,www] + nnk[,mmm]*nnk[,www], data = nnk)
s2<-summary(k2)
coem2<-s2$coefficients
eff2<-as.data.frame(coem2)
eff5<-eff2[nrow(eff2),1]
eff3<-eff2[nrow(eff2)-2,1]
meff<-eff*eff3
dieff<-eff5
efff<-c(meff, dieff)
efff<-matrix(efff, ncol = 2)
efff
}
k<-1
l<-matrix(rep(NA,bootnum*2),ncol = 2)
l<-as.data.frame(l)
repeat{
l[k,]<-boot5_1(xxx,mmm,www,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))
kmkmkmkm<-list(c(mean(l[,1]),sd(l[,1])),ci1, c(mean(l[,2]),sd(l[,2])),ci2)
names(kmkmkmkm)<-c("mediation_mean_BootSE", "mediation_CI","moderation_mean_BootSE", "moderation_CI" )
kmkmkmkm
}
boot5(1,2,3,4,d,1000)
## $mediation_mean_BootSE
## [1] 0.9125814 0.1421626
##
## $mediation_CI
## 0.1% 1% 5% 10% 90% 95% 99% 99.9%
## 0.5200137 0.5959402 0.6851873 0.7307531 1.1017179 1.1602623 1.2616851 1.4157780
##
## $moderation_mean_BootSE
## [1] 0.54499617 0.07554487
##
## $moderation_CI
## 0.1% 1% 5% 10% 90% 95% 99% 99.9%
## 0.2129353 0.3504143 0.4185618 0.4472728 0.6298707 0.6579393 0.7219044 0.7913313