sim_dat: Simulate data

View source: R/dat_sim.R

sim_datR Documentation

Simulate data

Description

Simulates data with common treatment date (sim_dat_common), staggered date (sim_staggered) or reversible treatment, i.e. units might loose their treatment status (sim_dat).

Usage

sim_dat(
  N = 1000,
  Time = 15,
  beta = 1,
  gamma = 0.7,
  seed = NULL,
  prob_treat = 0.25,
  as_mdd = FALSE
)

sim_dat_common(
  N = 1000,
  Time = 10,
  timing_treatment = 2:Time,
  beta = 1,
  seed = NULL,
  perc_treat = 0.25,
  beta_dyn = NULL,
  as_mdd = FALSE
)

sim_dat_staggered(
  N = 1000,
  Time = 15,
  beta = 1,
  gamma = 0,
  seed = NULL,
  perc_never = 0.2,
  perc_treat = 0.8,
  perc_always = 1 - perc_treat - perc_never,
  timing_treatment = 2:Time,
  trend_diff = 0,
  as_mdd = FALSE
)

Arguments

N

number of distinct units

Time

number of distinct time

beta

coef

gamma

To generate the series y_asym, which has longer dynamics. Gamma is the coefficients for observations that were not treated (0) the previous period, while the standard beta will apply for values currently treated.

seed

seed

prob_treat

Probability of treatment

as_mdd

Should output object be formatted of class mdd? Default is FALSE for now.

timing_treatment

Staggered: In what periods can treatment start?

beta_dyn

optional coefficients for post-treatment periods in sim_dat_common. Its length should be equal to the number of post-treatment periods, or 1.

perc_never, perc_always, perc_treat

Staggered: Percentage of (during-sample) treated, never and always

trend_diff

differential trend

Examples

## Standard 2 x 2: 2 groups, 2 time periods
dat_DiD_1 <- sim_dat_staggered(Time=2, timing_treatment=2)
DD_manu(data=dat_DiD_1)

## estimate with panel
library(lfe)
felm(y~tr|unit+Time, data=dat_DiD_1)

## Long 2 x 2: two  groups, 5 before, 5 after
dat_DiD_2 <- sim_dat_staggered(Time=10, timing_treatment=5, as_mdd = TRUE)
dat_DiD_2
mdd_DD_simple(dat_DiD_2)

## DiD with variation in treatment
dat_DiD_3 <- sim_dat_staggered(Time=10, timing_treatment=c(2, 10))

## DiD with dynamic effects post-treatment
dyn_eff <- seq(1.1, by = 0.1, length.out = 5)
dat_DiD_dyn <- sim_dat_common(N=10000, timing_treatment = 5, beta_dyn = dyn_eff, as_mdd = TRUE)
mdd_event_study(dat_DiD_dyn)

MatthieuStigler/multiDiff documentation built on Oct. 21, 2023, 8:13 a.m.