fabricatr
fabricatr copied to clipboard
cross_levels issue
library(DeclareDesign)
library(dplyr)
# make baseline data
individuals_data <- fabricate(
individuals = add_level(N = 5, ind_shock = rnorm(N))
)
# use baseline, add a non-nested level (indivuals and months)
words <-
fabricate(
data = individuals_data,
period = add_level(N = 10, period_shock = rnorm(N), nest = FALSE),
lowerlevel_months = cross_levels(
by = join(individuals, period)
)
)
# can't modify the level first??? -- this is the issue
doesnotwork <-
fabricate(
data = individuals_data,
individuals = modify_level(new_ind_var = rbinom(N, 1, .5)),
period = add_level(N = 10, period_shock = rnorm(N), nest = FALSE),
lowerlevel_months = cross_levels(
by = join(individuals, period)
)
)
# these two tests demonstrate what the crossing does.
# We want a constant period shock AND a constant individual shock.
test_1 <-
fabricate(
individuals = add_level(N = 5, ind_shock = rnorm(N)),
period = add_level(N = 10, period_shock = rnorm(N), nest = FALSE),
lowerlevel_months = cross_levels(
by = join(individuals, period)
)
)
test_1 %>% head
test_1 %>% arrange(individuals) %>% head
test_1 %>% arrange(period) %>% head
test_2 <-
fabricate(
individuals = add_level(N = 5, ind_shock = rnorm(N)),
period = add_level(N = 10, period_shock = rnorm(N)),
)
test_2 %>% head
test_2 %>% arrange(individuals) %>% head
test_2 %>% arrange(period) %>% head