## ------------------------------------------------
## Method `Model$new`
## ------------------------------------------------
#create a data frame describing a cross-sectional parallel cluster
#randomised trial
df <- nelder(~(cl(10)*t(5)) > ind(10))
df$int <- 0
df[df$cl > 5, 'int'] <- 1
mf1 <- MeanFunction$new(
formula = ~ factor(t) + int - 1,
data=df,
parameters = c(rep(0,5),0.6),
family = stats::gaussian()
)
cov1 <- Covariance$new(
data = df,
formula = ~ (1|gr(cl)) + (1|gr(cl*t)),
parameters = c(0.25,0.1)
)
des <- Model$new(
covariance = cov1,
mean.function = mf1,
var_par = 1
)
#alternatively we can pass the data directly to Model
#here we will specify a cohort study
df <- nelder(~ind(20) * t(6))
df$int <- 0
df[df$t > 3, 'int'] <- 1
des <- Model$new(
covariance = list(
data=df,
formula = ~ (1|gr(ind)*ar1(t)),
parameters = c(0.25,0.8)),
mean.function = list(
formula = ~factor(t) + int - 1,
data=df,
parameters = rep(0,7),
family = stats::poisson()))
#an example of a spatial grid with two time points
df <- nelder(~ (x(10)*y(10))*t(2))
spt_design <- Model$new(covariance = list(data=df,
formula = ~(1|fexp(x,y)*ar1(t)),
parameters =c(0.2,0.1,0.8)),
mean.function = list(data=df,
formula = ~ 1,
parameters = c(0.5),
family=stats::poisson()))
## ------------------------------------------------
## Method `Model$n_cluster`
## ------------------------------------------------
df <- nelder(~(cl(10)*t(5)) > ind(10))
df$int <- 0
df[df$cl > 5, 'int'] <- 1
mf1 <- MeanFunction$new(
formula = ~ factor(t) + int - 1,
data=df,
parameters = c(rep(0,5),0.6),
family = stats::gaussian()
)
cov1 <- Covariance$new(
data = df,
formula = ~ (1|gr(cl)) + (1|gr(cl*t)),
parameters = c(0.25,0.1)
)
des <- Model$new(
covariance = cov1,
mean.function = mf1,
var_par = 1
)
des$n_cluster() ## returns two levels of 10 and 50
## ------------------------------------------------
## Method `Model$subset_rows`
## ------------------------------------------------
#generate a stepped wedge design and remove the first sequence
des <- stepped_wedge(8,10,icc=0.05)
ids_to_keep <- which(des$mean_function$data$J!=1)
des$subset_rows(ids_to_keep)
## ------------------------------------------------
## Method `Model$subset_cols`
## ------------------------------------------------
#generate a stepped wedge design and remove first and last time periods
des <- stepped_wedge(8,10,icc=0.05)
des$subset_cols(c(2:8,10))
## ------------------------------------------------
## Method `Model$sim_data`
## ------------------------------------------------
df <- nelder(~(cl(10)*t(5)) > ind(10))
df$int <- 0
df[df$cl > 5, 'int'] <- 1
des <- Model$new(
covariance = list(
data = df,
formula = ~ (1|gr(cl)*ar1(t)),
parameters = c(0.25,0.8)),
mean.function = list(
formula = ~ factor(t) + int - 1,
data=df,
parameters = c(rep(0,5),0.6),
family = stats::binomial())
)
ysim <- des$sim_data()
## ------------------------------------------------
## Method `Model$check`
## ------------------------------------------------
df <- nelder(~(cl(10)*t(5)) > ind(10))
df$int <- 0
df[df$cl > 5, 'int'] <- 1
des <- Model$new(
covariance = list(
data = df,
formula = ~ (1|gr(cl)*ar1(t)),
parameters = c(0.25,0.8)),
mean.function = list(
formula = ~ factor(t) + int - 1,
data=df,
parameters = c(rep(0,5),0.6),
family = stats::binomial())
)
des$check() #does nothing
des$covariance$parameters <- c(0.1,0.9)
des$check() #updates
des$mean_function$parameters <- c(rnorm(5),0.1)
des$check() #updates
Run the code above in your browser using DataLab