library(simDAG)
set.seed(12455432)
#### using kind = "expr" ####
# define a DAG
dag <- empty_dag() +
node("age", type="rnorm", mean=50, sd=4) +
node("sex", type="rbernoulli", p=0.5) +
node("something", type="identity", formula= ~ age + sex + 2)
sim_dat <- sim_from_dag(dag=dag, n_sim=100)
head(sim_dat)
# more complex alternative
dag <- empty_dag() +
node("age", type="rnorm", mean=50, sd=4) +
node("sex", type="rbernoulli", p=0.5) +
node("something", type="identity",
formula= ~ age / 2 + age^2 - ifelse(sex, 2, 3) + 2)
sim_dat <- sim_from_dag(dag=dag, n_sim=100)
head(sim_dat)
#### using kind = "linpred" ####
# this would work with both kind="expr" and kind="linpred"
dag <- empty_dag() +
node("age", type="rnorm", mean=50, sd=4) +
node("sex", type="rbernoulli", p=0.5) +
node("pred", type="identity", formula= ~ 1 + age*0.2 + sex*1.2,
kind="linpred")
sim_dat <- sim_from_dag(dag=dag, n_sim=10)
head(sim_dat)
# this only works with kind="linpred", due to the presence of a special term
dag <- empty_dag() +
node("age", type="rnorm", mean=50, sd=4) +
node("sex", type="rbernoulli", p=0.5, output="numeric") +
node("pred", type="identity", formula= ~ 1 + age*0.2 + sex*1.2 + age:sex*-2,
kind="linpred")
sim_dat <- sim_from_dag(dag=dag, n_sim=10)
head(sim_dat)
#### using kind = "data" ####
# simply return the transformed data, useful if the terms are used
# frequently in multiple nodes in the DAG to save computation time
# using only a single interaction term
dag <- empty_dag() +
node("age", type="rnorm", mean=50, sd=4) +
node("sex", type="rbernoulli", p=0.5, output="numeric") +
node("age_sex_interact", type="identity", formula= ~ age:sex, kind="data")
sim_dat <- sim_from_dag(dag=dag, n_sim=10)
head(sim_dat)
# using multiple terms
dag <- empty_dag() +
node("age", type="rnorm", mean=50, sd=4) +
node("sex", type="rbernoulli", p=0.5, output="numeric") +
node("name_not_used", type="identity", formula= ~ age:sex + I(age^2),
kind="data", var_names=c("age_sex_interact", "age_squared"))
sim_dat <- sim_from_dag(dag=dag, n_sim=10)
head(sim_dat)
Run the code above in your browser using DataLab