library(simDAG)
set.seed(5425)
# zero-inflated poisson regression
dag <- empty_dag() +
node(c("A", "B"), type="rnorm", mean=0, sd=1) +
node("Y", type="zeroinfl",
formula_count= ~ -2 + A*0.2 + B*0.1 + A:B*0.4,
formula_zero= ~ 1 + A*1 + B*2,
family_count="poisson",
parents=c("A", "B"))
data <- sim_from_dag(dag, n_sim=100)
# above is functionally the same as:
dag <- empty_dag() +
node(c("A", "B"), type="rnorm", mean=0, sd=1) +
node("Y_count", type="poisson", formula= ~ -2 + A*0.2 + B*0.1 + A:B*0.4) +
node("Y_zero", type="binomial", formula= ~ 1 + A*1 + B*2) +
node("Y", type="identity", formula= ~ Y_zero * Y_count)
data <- sim_from_dag(dag, n_sim=100)
# same as above, but specifying each individual component instead of formulas
dag <- empty_dag() +
node(c("A", "B", "C"), type="rnorm", mean=0, sd=1) +
node("Y", type="zeroinfl",
parents_count=c("A", "B"),
betas_count=c(0.2, 0.1),
intercept_count=-2,
parents_zero=c("A", "B"),
betas_zero=c(1, 2),
intercept_zero=1,
family_count="poisson",
parents=c("A", "B"))
data <- sim_from_dag(dag, n_sim=100)
# zero-inflated negative-binomial regression
dag <- empty_dag() +
node(c("A", "B"), type="rnorm", mean=0, sd=1) +
node("Y", type="zeroinfl",
formula_count= ~ -2 + A*0.2 + B*3 + A:B*0.4,
formula_zero= ~ 3 + A*0.1 + B*0.3,
family_count="negative_binomial", theta=1,
parents=c("A", "B"))
data <- sim_from_dag(dag, n_sim=100)
Run the code above in your browser using DataLab