简体   繁体   English

在 simr package 中模拟 makeLmer function 的数据

[英]Simulating data for makeLmer function in simr package

I'm trying to create some simulated data for use in the simr package via the makeLmer function.我正在尝试通过makeLmer function创建一些用于simr package的模拟数据。 I'm trying to produce a data set with 110 participants in a 2 x 2 x 2 within subjects factorial model.我正在尝试在主题阶乘 model 中生成一个包含 110 个参与者的数据集,其中 2 x 2 x 2。 This makes 156 trials on a computerized task per participant.这使得每个参与者对计算机化任务进行了 156 次试验。 I keep getting this error:我不断收到此错误:

"Error in model.frame.default(data = newdata, weights = weights, offset = offset, : variable lengths differ (found for 'subject')" “model.frame.default 中的错误(数据 = 新数据,权重 = 权重,偏移量 = 偏移量,:可变长度不同(为‘主题’找到)”

My code is below (sorry for the clunky bits).我的代码在下面(对不起,笨重的位)。 If anyone knows what I'm doing wrong, any help would be very much appreciated.如果有人知道我做错了什么,任何帮助将不胜感激。 Thanks so much, Cheers, Tom非常感谢,干杯,汤姆

#110 participants
subj <- factor(1:110)
## 2 sizes
size<- factor(c("one", "twelve"))
## alcohol prime
alcohol <- factor(c("alcohol", "noalcohol"))
## gender of faces
crowdgender <- factor(c("Male", "Female"))

subj_full <- rep(subj, times = 156)

size_full1 <- rep(rep("one", each=78), 110)
size_full2 <- rep(rep("twelve", each=78), 110)
size_full1<-data.frame(size_full1)
size_full2<-data.frame(size_full2)
size_full2 <- dplyr::rename(size_full2, size_full1 = size_full2)
size_full<-rbind(size_full1,size_full2)
size_full <- dplyr::rename(size_full, size_full = size_full1)
head(size_full)

alcohol_full <- data.frame(rep(rep(alcohol, each = 78), 110))
head(alcohol_full)
#R gave the column a weird name.
alcohol_full <- dplyr::rename(alcohol_full, alcohol_full = rep.rep.alcohol..each...78...110.) 
head(alcohol_full)

crowdgender_full1 <- data.frame(rep(rep(rep(crowdgender, each = 39), 110),2))
head(crowdgender_full1)
crowdgender_full <- dplyr::rename(crowdgender_full1, crowdgender_full = rep.rep.rep.crowdgender..each...39...110...2.)
head(crowdgender_full)

## Combine all the variables together into one data frame
covars <- data.frame(subject=subj_full, size= size_full, 
                     alcohol =alcohol_full, crowdgender=crowdgender_full)
covars


#set fixed effect sizes (intercept and slopes)
fixed<-list(c(.1, .2, .15, .6, .9, .3, .12, .25))
#random intercept for participants
rand<-1
#residual variance
res<-2.5

#make model
model<-makeLmer(y ~ size*alcohol*crowdgender + (1|subject), fixef = fixed, VarCorr = rand, sigma = res, data = covars)
summary(model)

install.packages("simr") library(simr) install.packages("simr") 库(simr)

#5 participants
subj <- factor(1:5)
## 2 sizes
size<- factor(c("one", "twelve"))
## alcohol prime
alcohol <- factor(c("alcohol", "noalcohol"))
## gender of faces
crowdgender <- factor(c("Male", "Female"))
#creates all combinations
data <- expand.grid(subject = factor(1:5), size = size, alcohol = alcohol, crowdgender = crowdgender)
#add correct number of repetitions per trial type; in this experiment, there were 156 trials; 
#the exact number of trials within each type was randomized to approximately 19 per type
data_rep <- data[rep(seq_len(nrow(data)), each = 19),] 
covars<-data_rep


#set fixed effect sizes from Experiment 1 (intercept and slopes)
fixed<-c(0.23, 0.16, 0.59, 0.67, -0.08, -0.02, -0.42, 0.06)
#random intercept for participants
rand<-13.08
#residual variance
res<-7.74

#make model
model<-makeLmer(y ~ size*alcohol*crowdgender + (1|subject), fixef = fixed, VarCorr = rand, 
                sigma = res, data = covars)
summary(model)

model_150subs <- extend(model, along="subject", n=150)
model_150subs

#test power for 3-way based on 3 different effect sizes.
fixef(model_150subs)["sizetwelve:alcoholnoalcohol:crowdgenderMale"] <- 0.50 #change effect sizes 19%
fixef(model_150subs)["sizetwelve:alcoholnoalcohol:crowdgenderMale"] <- 0.75 #change effect sizes 40%
fixef(model_150subs)["sizetwelve:alcoholnoalcohol:crowdgenderMale"] <- 1.00 #change effect sizes 62%
#run this after each "fixef" command:
sim <- powerSim(model_150subs, fixed("sizetwelve:alcoholnoalcohol:crowdgenderMale", "t"), nsim = 100, seed = 888)
sim

fixef(model_150subs)["sizetwelve:alcoholnoalcohol"] <- 0.50 #change effect sizes 46%
fixef(model_150subs)["sizetwelve:alcoholnoalcohol"] <- 0.75 #change effect sizes 82%
fixef(model_150subs)["sizetwelve:alcoholnoalcohol"] <- 1.00 #change effect sizes 98%
sim <- powerSim(model_150subs, fixed("sizetwelve:alcoholnoalcohol", "t"), nsim = 100, seed = 888)
sim

fixef(model_150subs)["alcoholnoalcohol:crowdgenderMale"] <- 0.50 #change effect sizes 47%
fixef(model_150subs)["alcoholnoalcohol:crowdgenderMale"] <- 0.75 #change effect sizes 79%
fixef(model_150subs)["alcoholnoalcohol:crowdgenderMale"] <- 1.00 #change effect sizes 94%
sim <- powerSim(model_150subs, fixed("alcoholnoalcohol:crowdgenderMale", "t"), nsim = 100, seed = 888)
sim

fixef(model_150subs)["sizetwelve:crowdgenderMale"] <- 0.50 #change effect sizes 49%
fixef(model_150subs)["sizetwelve:crowdgenderMale"] <- 0.75 #change effect sizes 77%
fixef(model_150subs)["sizetwelve:crowdgenderMale"] <- 1.00 #change effect sizes 94%
sim <- powerSim(model_150subs, fixed("sizetwelve:crowdgenderMale", "t"), nsim = 100, seed = 888)
sim

fixef(model_150subs)["sizetwelve"] <- 0.50 #change effect sizes 65%
fixef(model_150subs)["sizetwelve"] <- 0.75 #change effect sizes 93%
fixef(model_150subs)["sizetwelve"] <- 1.00 #change effect sizes 100%
sim <- powerSim(model_150subs, fixed("sizetwelve", "t"), nsim = 100, seed = 888)
sim

fixef(model_150subs)["crowdgenderMale"] <- 0.50 #change effect sizes 58%
fixef(model_150subs)["crowdgenderMale"] <- 0.75 #change effect sizes 95%
fixef(model_150subs)["crowdgenderMale"] <- 1.00 #change effect sizes 100%
sim <- powerSim(model_150subs, fixed("crowdgenderMale", "t"), nsim = 100, seed = 
888)
sim

fixef(model_150subs)["alcoholnoalcohol"] <- 0.50 #change effect sizes 65%
fixef(model_150subs)["alcoholnoalcohol"] <- 0.75 #change effect sizes 94%
fixef(model_150subs)["alcoholnoalcohol"] <- 1.00 #change effect sizes 100%
sim <- powerSim(model_150subs, fixed("alcoholnoalcohol", "t"), nsim = 100, seed 
= 888)
sim

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM