diff_diff.compute_pretrends_power#
- diff_diff.compute_pretrends_power(results, M=None, alpha=0.05, target_power=0.8, violation_type='linear', pre_periods=None, violation_weights=None, pretest_form='nis')[source]
Convenience function for pre-trends power analysis.
- Parameters:
results (results object) – Event study results.
M (float, optional) – Violation magnitude to evaluate.
alpha (float, default=0.05) – Significance level.
target_power (float, default=0.80) – Target power for MDV calculation.
violation_type (str, default='linear') – Type of violation pattern:
linear/constant/last_period/custom. Forcustom, also passviolation_weights.pre_periods (list of int, optional) – Explicit list of pre-treatment periods. If None, attempts to infer from results. Use when you’ve estimated all periods as post_periods.
violation_weights (np.ndarray, optional) – Custom violation pattern weights. Required when
violation_type='custom'; ignored for other violation types.pretest_form ({'nis', 'wald'}, default='nis') – Pretest acceptance-region form.
'nis'(default) implements Roth (2022) Section II.A-B no-individually-significant box probability viascipy.stats.multivariate_normal.cdf;'wald'is the noncentral-chi-squared form retained for backwards compatibility with the pre-PR-B shipped numerical output (also a paper-supported alternative under Propositions 1+3+4).
- Returns:
Power analysis results.
- Return type:
Examples
>>> from diff_diff import MultiPeriodDiD >>> from diff_diff.pretrends import compute_pretrends_power >>> >>> results = MultiPeriodDiD().fit(data, ...) >>> power_results = compute_pretrends_power(results, pre_periods=[0, 1, 2, 3]) >>> print(f"MDV: {power_results.mdv:.3f}") >>> print(f"Power: {power_results.power:.1%}")