test_that("ice wide and long return same result", {
Tt = 3
Beta = generate_parameters(Tt=Tt, range_ymeans=stats::qlogis(c(0.01, 0.05)))
N = 100
df_wide = generate_data(N, Tt, Beta)
df_wide_interv = df_wide %>% dplyr::mutate(dplyr::across(dplyr::starts_with('A'), ~ 0))
ice_wide = ice(df_obs=df_wide,
df_interv = df_wide_interv,
inside_formula_t = '~A{t}*(W1{t}+W2{t}+I(W2{t}^2))',
inside_formula_tmin1 = '~A{t}*(W1{t-1}+W2{t-1}+I(W2{t-1}^2))',
outside_formula = '~A{k}*(W1{k}+W2{k}+I(W2{k}^2))',
Tt=Tt,
models=FALSE,
suppress_rank_warnings=TRUE,
long=FALSE)
df_long = pivot_longer_gendata(df_wide) %>%
dplyr::mutate(W22=W2^2) %>%
dplyr::group_by(uid) %>%
append_lags(3, c('A','W1','W2','W22', 'Y'), default=NA) %>%
dplyr::ungroup() %>%
make_time_dummies('t')
ice_long = ice(df_long,
df_interv = df_long %>% dplyr::mutate(dplyr::across(dplyr::starts_with('A'), ~0)),
inside_formula_t = 'Y~-1 + {tvars}*(W1+W2+W22)*A - A*(W1+W2+W22)',
inside_formula_tmin1 ='Y_lag1~ -1 + {tvars}*(W1_lag1+W2_lag1+W22_lag1)*A - (W1_lag1+W2_lag1+W22_lag1)*A',
outside_formula = 'preds ~ -1 + {tvars}*(W1_lag{n}+W2_lag{n}+W22_lag{n})*A_lag{n} -(W1_lag{n}+W2_lag{n}+W22_lag{n})*A_lag{n} - t{n}:A_lag{n} - t{n}:(W1_lag{n}+W2_lag{n}+W22_lag{n}):A_lag{n} ',
inside_family=gaussian,
t_col=df_long$t,
Tt=Tt,
models=FALSE,
suppress_rank_warnings=TRUE,
long=TRUE)
expect_equal(ice_wide, ice_long)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.