moderndid.gen_cont_did_data#
- moderndid.gen_cont_did_data(n: int = 500, num_time_periods: int = 4, num_groups: int | None = None, p_group: list | None = None, p_untreated: float | None = None, dose_linear_effect: float = 0.5, dose_quadratic_effect: float = 0, seed: int = 42) DataFrame[source]#
Simulate panel data for difference-in-differences with continuous treatment.
- Parameters:
- n
int, default=500 Number of cross-sectional units.
- num_time_periods
int, default=4 Number of time periods.
- num_groups
int, optional Number of timing groups. Defaults to
num_time_periods. Groups consist of a never-treated group (G=0) and groups that become treated in periods 2, 3, …, num_time_periods.- p_group
list, optional Probabilities for each treated group. Defaults to equal probabilities.
- p_untreated
float, optional Probability of being in the never-treated group. Defaults to
1/num_groups.- dose_linear_effect
float, default=0.5 True linear effect of treatment dose on the outcome.
- dose_quadratic_effect
float, default=0 True quadratic effect of treatment dose on the outcome.
- seed
int, default=42 Random seed for reproducibility.
- n
- Returns:
polars.DataFrameA balanced panel DataFrame with columns:
id: Unit identifier
time_period: Time period (1, 2, …, num_time_periods)
Y: Outcome variable
G: Timing group (0 for never-treated, or period when treatment starts)
D: Treatment dose (0 for untreated unit-periods, positive otherwise)