mutlievel data simulation using simglm: how to i simulate random effects at level 1

Viewed 6

I want to add random effects at level 1. Below is the working code with level 2 simulated. I have two questions i hope folks can help with

  1. How do i get a reasonable estimate of level 2 variance (assuming i have sample data). Can i just square the between person SD on the dv?

  2. how do simulate level 1 variance and how do i determine a reasonable value at level 1. I've tried: randomeffect = list(int_neighborhood = list(variance = 8, var_level = 2), weight= list(variance = 8, var_level = 1 )) but that kicks an error

This code works without level 1

ctrl <- lmeControl(opt='optim');

sim_arguments <- list(
  formula = y ~ 1 + weight + age + sex + (1 | neighborhood),
  reg_weights = c(4, -0.03, 0.2, 0.33),
  fixed = list(weight = list(var_type = 'continuous', mean = 180, sd = 30),
               age = list(var_type = 'ordinal', levels = 30:60),
               sex = list(var_type = 'factor', levels = c('male', 'female'))),
  randomeffect = list(int_neighborhood = list(variance = 8, var_level = 2)),
  sample_size = list(level1 = 62, level2 = 60)
)




nested_data <- sim_arguments %>%
  simulate_fixed(data = NULL, .) %>%
  simulate_randomeffect(sim_arguments) %>%
  simulate_error(sim_arguments) %>%
  generate_response(sim_arguments)




RandomIntercept <- lme(fixed= y ~1 + weight + age + sex , 
                       random= ~ 1 | neighborhood,
                       correlation = corAR1(),
                       data=nested_data,
                       control=ctrl,
                       na.action=na.exclude)
summary(RandomIntercept)

RandomSlope <-lme(fixed= y ~1 + weight + age + sex , 
                  random= ~ 1 +weight| neighborhood,
                  correlation = corAR1(),
                  data=nested_data,
                  control=ctrl,
                  na.action=na.exclude)
summary(RandomSlope)



anova(RandomIntercept,RandomSlope)
0 Answers
Related