diff_diff.CallawaySantAnnaResults

class diff_diff.CallawaySantAnnaResults[source]

Bases: object

Results from Callaway-Sant’Anna (2021) staggered DiD estimation.

This class stores group-time average treatment effects ATT(g,t) and provides methods for aggregation into summary measures.

group_time_effects

Dictionary mapping (group, time) tuples to effect dictionaries.

Type:

dict

overall_att

Overall average treatment effect (weighted average of ATT(g,t)).

Type:

float

overall_se

Standard error of overall ATT.

Type:

float

overall_p_value

P-value for overall ATT.

Type:

float

overall_conf_int

Confidence interval for overall ATT.

Type:

tuple

groups

List of treatment cohorts (first treatment periods).

Type:

list

time_periods

List of all time periods.

Type:

list

n_obs

Total number of observations.

Type:

int

n_treated_units

Number of ever-treated units.

Type:

int

n_control_units

Number of never-treated units.

Type:

int

event_study_effects

Effects aggregated by relative time (event study).

Type:

dict, optional

group_effects

Effects aggregated by treatment cohort.

Type:

dict, optional

__init__(group_time_effects, overall_att, overall_se, overall_t_stat, overall_p_value, overall_conf_int, groups, time_periods, n_obs, n_treated_units, n_control_units, alpha=0.05, control_group='never_treated', base_period='varying', event_study_effects=None, group_effects=None, influence_functions=None, bootstrap_results=None)
Parameters:
Return type:

None

Methods

__init__(group_time_effects, overall_att, ...)

print_summary([alpha])

Print summary to stdout.

summary([alpha])

Generate formatted summary of estimation results.

to_dataframe([level])

Convert results to DataFrame.

Attributes

alpha

base_period

bootstrap_results

control_group

event_study_effects

group_effects

influence_functions

is_significant

Check if overall ATT is significant.

significance_stars

Significance stars for overall ATT.

group_time_effects

overall_att

overall_se

overall_t_stat

overall_p_value

overall_conf_int

groups

time_periods

n_obs

n_treated_units

n_control_units

group_time_effects: Dict[Tuple[Any, Any], Dict[str, Any]]
overall_att: float
overall_se: float
overall_t_stat: float
overall_p_value: float
overall_conf_int: Tuple[float, float]
groups: List[Any]
time_periods: List[Any]
n_obs: int
n_treated_units: int
n_control_units: int
alpha: float = 0.05
control_group: str = 'never_treated'
base_period: str = 'varying'
event_study_effects: Dict[int, Dict[str, Any]] | None = None
group_effects: Dict[Any, Dict[str, Any]] | None = None
influence_functions: np.ndarray | None = None
bootstrap_results: CSBootstrapResults | None = None
__repr__()[source]

Concise string representation.

Return type:

str

summary(alpha=None)[source]

Generate formatted summary of estimation results.

Parameters:

alpha (float, optional) – Significance level. Defaults to alpha used in estimation.

Returns:

Formatted summary.

Return type:

str

print_summary(alpha=None)[source]

Print summary to stdout.

Parameters:

alpha (float | None)

Return type:

None

to_dataframe(level='group_time')[source]

Convert results to DataFrame.

Parameters:

level (str, default="group_time") – Level of aggregation: “group_time”, “event_study”, or “group”.

Returns:

Results as DataFrame.

Return type:

pd.DataFrame

property is_significant: bool

Check if overall ATT is significant.

property significance_stars: str

Significance stars for overall ATT.

__init__(group_time_effects, overall_att, overall_se, overall_t_stat, overall_p_value, overall_conf_int, groups, time_periods, n_obs, n_treated_units, n_control_units, alpha=0.05, control_group='never_treated', base_period='varying', event_study_effects=None, group_effects=None, influence_functions=None, bootstrap_results=None)
Parameters:
Return type:

None