私はlmerと混合モデリングを行っており、データのランダム化の効果を調査したいと思います。次のコードは速度の点で改善できますか?現状では、現在の仕様では実際のデータを実行するのに数日かかるでしょう...私が見つけたものから、sapplyが進むべき道です。私は間違っていると思っています。
library(lme4)
##Generate real data
real.data=data.frame(cat1=factor(rep(c("A","B","C","D"),500)),cat2=factor(rep(c("E","F","G","H"),500)), matrix(runif(12000),ncol=6))
##Apply lmer model for each data columm and extract variance estimates with VarCorr for 1000 randomizations of the real.data frame.
random=sapply(1:1000,function(z){print(z)
##Generate a randomized data set by sampling first two factor columns
sample=data.frame(cat1=factor(sample(real.data$cat1)),cat2=factor(sample(real.data$cat2)), real.data[,3:8])
sapply(3:dim(sample)[2],function(y){print(y)
##Apply REML to each column of data, with 'cat1' and 'cat2' as random effects, including cat1:cat2 interaction
model=lmer(sample[,y]~(1|cat1)+(1|cat2)+(1|cat1:cat2), data=sample)
##Extract the estimates of the random effect terms
c(as.numeric(VarCorr(model)$cat1),as.numeric(VarCorr(model)$cat2),as.numeric(VarCorr(model)$'cat1:cat2'))
})
})