Я выполняю многоуровневое моделирование в R, но я застрял в том, как генерировать соответствующие значения для переменной. Значение должно быть разным для каждого года и штата, но одинаковым для отдельных лиц в штате. Код ниже. Любая помощь приветствуется. Спасибо, я прокомментировал код ниже для ясности
#--------Parameters---------#
seed <- 476;
n_state <- length(state.name[1:4]);
years <- 2007:2012
n_time <- length(years);
n_id <- 3;
#---------ID variables-------#
state <- rep(state.name[1:n_state], each=n_time*n_id)
time <- rep(years, time=n_state*n_id)
id <- rep(1:n_id, each=n_time, time=n_state)
idvar <- data.frame(state, time, id)
head(idvar, n=18)
#---------pre and post variable-------#
#first three years, the value of prepost_id (intervention) is 0 and the rest NA
prepost_id <- c(rep(0,3), rep(NA,(n_time - 3)))
# Creating a function to generate whether or not there was an intervention
# within a state at a certain year
prepost <- function(prepost_val = prepost_id, n=1, prob =0.5,
start=4, end =n_time){
for (i in start: end) {
prepost_val[i] <- ifelse(
prepost_val[i-1] == 0,
rbinom(n,1,prob=prob),
prepost_val[i-1])
}
return(prepost_val)
}
prepost(prepost_val = prepost_id)
# repeating the process for all states
# Note that the value of the prepost() function should be somewhat different
# for the different state but the same for individuals within that state
prepostdata <- rep(replicate(n_state, prepost(prepost_val = prepost_id)),
time=n_id)
#------------dataset----------#
dta <- data.frame(state,time, id, prepostdata)
head(dta, n=18)
Это то, что я получил
# state time id prepostdata
# Alabama 2007 1 0
# Alabama 2008 1 0
# Alabama 2009 1 0
# Alabama 2010 1 0
# Alabama 2011 1 1
# Alabama 2012 1 1
# Alabama 2007 2 0
# Alabama 2008 2 0
# Alabama 2009 2 0
# Alabama 2010 2 1 <---The problem: should be the same for all ids
# Alabama 2011 2 1
# Alabama 2012 2 1
# Alabama 2007 3 0
# Alabama 2008 3 0
# Alabama 2009 3 0
# Alabama 2010 3 0
# Alabama 2011 3 1
# Alabama 2012 3 1
Но это то, что я хочу
# state time id prepostdata
# Alabama 2007 1 0
# Alabama 2008 1 0
# Alabama 2009 1 0
# Alabama 2010 1 0
# Alabama 2011 1 1
# Alabama 2012 1 1
# Alabama 2007 2 0
# Alabama 2008 2 0
# Alabama 2009 2 0
# Alabama 2010 2 0
# Alabama 2011 2 1
# Alabama 2012 2 1
# Alabama 2007 3 0
# Alabama 2008 3 0
# Alabama 2009 3 0
# Alabama 2010 3 0
# Alabama 2011 3 1
# Alabama 2012 3 1