## ------------------------------------------------
## 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
)
cov1 <- Covariance$new(
data = df,
formula = ~ (1|gr(cl)) + (1|gr(cl*t))
)
des <- Model$new(
covariance = cov1,
mean = mf1,
family = stats::gaussian(),
var_par = 1
)
#alternatively we can pass the data directly to Model
#here we will specify a cohort study and provide parameter values
df <- nelder(~ind(20) * t(6))
df$int <- 0
df[df$t > 3, 'int'] <- 1
des <- Model$new(
covariance = list(
formula = ~ (1|gr(ind)),
parameters = c(0.25)),
mean = list(
formula = ~ int,
parameters = c(1,0.5)),
data = df,
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( formula = ~(1|fexp(x,y)*ar1(t))),
mean = list(formula = ~ 1),
data = df,
family = stats::gaussian())
## ------------------------------------------------
## Method `Model$n_cluster`
## ------------------------------------------------
df <- nelder(~(cl(10)*t(5)) > ind(10))
df$int <- 0
df[df$cl > 5, 'int'] <- 1
des <- Model$new(
covariance = list(formula = ~ (1|gr(cl)) + (1|gr(cl*t))),
mean = list(formula = ~ factor(t) + int - 1),
data = df,
family = stats::gaussian(),
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(
formula = ~ (1|gr(cl)*ar1(t)),
parameters = c(0.25,0.8)),
mean = list(
formula = ~ factor(t) + int - 1,
parameters = c(rep(0,5),0.6)),
data = df,
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(
formula = ~ (1|gr(cl)*ar1(t)),
parameters = c(0.25,0.8)),
mean = list(
formula = ~ factor(t) + int - 1,
parameters = c(rep(0,5),0.6)),
data = df,
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
## ------------------------------------------------
## Method `Model$update_parameters`
## ------------------------------------------------
df <- nelder(~(cl(10)*t(5)) > ind(10))
df$int <- 0
df[df$cl > 5, 'int'] <- 1
des <- Model$new(
covariance = list(
formula = ~ (1|gr(cl)*ar1(t))),
mean = list(
formula = ~ factor(t) + int - 1),
data = df,
family = stats::binomial()
)
des$update_parameters(cov.pars = c(0.1,0.9))
## ------------------------------------------------
## Method `Model$power`
## ------------------------------------------------
df <- nelder(~(cl(10)*t(5)) > ind(10))
df$int <- 0
df[df$cl > 5, 'int'] <- 1
des <- Model$new(
covariance = list(
formula = ~ (1|gr(cl)) + (1|gr(cl*t)),
parameters = c(0.25,0.1)),
mean = list(
formula = ~ factor(t) + int - 1,
parameters = c(rep(0,5),0.6)),
data = df,
family = stats::gaussian(),
var_par = 1
)
des$power() #power of 0.90 for the int parameter
Run the code above in your browser using DataLab