sim.experiment: Simulate data of an experiment with a given linear design

View source: R/sim.experiment.r

sim.experimentR Documentation

Simulate data of an experiment with a given linear design

Description

Simulate data of an experiment with a given linear design

Usage

sim.experiment(
  design,
  subj,
  repetitions,
  family = "gaussian",
  random_seed = F,
  return_data = T
)

Arguments

design

an object of the class mu.exp.design produced with the function design.experiment

subj

number of subjects

repetitions

number of repetitions per subject

family

response type. Default is "gaussian". Use "binomial" for binary responses

random_seed

logical. When FALSE (default) the data is simulated using the seed passed via the design object. Set to TRUE to generate a random seed (ignores the seed parameter passed by the design object)

return_data

default to TRUE. Use FALSE to produce just a trials sequence

Value

An object of the class mu.exp.design with the following values

seed the seed that was used during the simulation

exp the simulated data

coef.matrix the subj-by-subj coefficient matrix

Examples

libraries()

# set a seed
trial.seed <- 9000

# initialize the factors list
lIV <- list(
  Var1 = factor(1:2, labels = c("a","b"))
  ,
  Var2 = factor(1:2)
)

tIV <- c("w","b")

# describe the model
exp.formula <- ~ Var1*Var2

# initialize the coefficients
cus.beta <- c(3, 6, 9, 12) # means of the fixed effects
cus.theta <- c(1, 2, 3, 4)  # standard errors of the random components
cus.sigma <- 3 # sigma of the model

# few examples
(r <- design.experiment(lIV, tIV, betas = cus.beta, thetas = cus.theta, s = cus.sigma, exp.formula, seed=trial.seed))

# start the simulation
exp.info <- sim.experiment(design = r,
                           subj = 10,
                           repetitions = 10)

# extract the simulated data
exp <- exp.info$exp

# plot the results
ggplot(aes(Var1, y, color=Var2, group=Var2), data=exp) + facet_wrap(~subjName) +
  geom_point(size=3, alpha=.4) +                                                  # draw raw scores
  stat_smooth(method=lm, level=.68, se=F, linewidth=1, formula = y ~ x) +         # draw fit line
  stat_summary(fun.data = mean_se, geom='point', size=3, color='black') +         # draw mean points
  stat_summary(fun.data = mean_se, geom='errorbar', width=.2, linewidth=1.2) +    # draw errorbars
  theme_bw()

# check a fit of the data (with more subjects)
exp.info <- sim.experiment(design = r,
                           subj = 100,
                           repetitions = 10)
exp <- exp.info$exp
(lmod1 <- lme4::lmer(y ~ Var1*Var2 + (1 + Var1*Var2|subjName), data=exp,
                     control = lmerControl(optimizer = "bobyqa")))

ccamp83/mu documentation built on July 4, 2025, 6:20 p.m.