#本程式碼之使用請參考《傻瓜也會跑統計Ⅱ》單元44

#每次執行本程式前，都請先按Ctrl+L，清空R console視窗，再執行程式

#***** 需注意處 *****
#讀檔案
dta <- read.csv('hlm2_data.csv',header=T, fileEncoding = 'UTF-8-BOM')

#載入HLM所需套件。
library(lme4)
library(lmerTest)
library(MuMIn)

#***** 需修改處1 *****
#計算 ICC
result0 <- lmer(y ~ 1+(1|group),data = dta)
r.squaredGLMM(result0)[2]

#***** 需修改處2 *****
#進行HLM分析
result <- lmer(y ~ p1+p2+g+p1_p2+p1_g+p2_g

#***** 需修改處3 *****
+(1+p1+p2+p1_p2|group),data = dta)
summary(result)

#取小數點三位，作表格用
write.csv(round(coef(summary(result)),3),'hlm2_table1.csv')

#輸出畫交互作用圖所需數值
estcov <- as.matrix(vcov(result)[-1,-1])
npar <- dim(estcov)[2]
nvar <- dim(dta)[2]
outdata <- matrix("",max(nvar,npar),npar+5)
outdata[1:nvar,1] <- names(dta)
outdata[1:nvar,2] <- apply(dta,2,mean)
outdata[1:nvar,3] <- apply(dta,2,sd)
outdata[1:npar,6:(npar+5)] <- estcov
outdata[1:npar,5] <- colnames(outdata)[6:(npar+5)]<- colnames(estcov)
colnames(outdata)[1:5] <- c('var','mean','sd','','var')
write.csv(outdata,'hlm2_table2.csv',row.names=F)
