fabricatr icon indicating copy to clipboard operation
fabricatr copied to clipboard

cross_levels issue

Open graemeblair opened this issue 6 years ago • 0 comments

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

graemeblair avatar Feb 01 '19 19:02 graemeblair