causalis.scenarios.classic_rct.model¶
Difference-in-Means (RCT) scenario.
This module provides the DiffInMeans model, which implements standard inference
methods for Randomized Controlled Trials (RCTs). It supports absolute and relative
treatment effect estimation using t-tests, permutation tests, and z-tests for
proportions.
Module Contents¶
Classes¶
Difference-in-means model for Randomized Controlled Trials (RCT). |
API¶
- class causalis.scenarios.classic_rct.model.DiffInMeans¶
Difference-in-means model for Randomized Controlled Trials (RCT).
The difference-in-means estimator is the simplest way to estimate the Average Treatment Effect (ATE) in a randomized experiment. Because treatment assignment is random, the difference in sample means between the treated and control groups is an unbiased estimator of the ATE.
Notes
The Average Treatment Effect (ATE) is defined as:
.. math::
\tau = E[Y(1) - Y(0)]
In an RCT, $D \perp (Y(0), Y(1))$, so:
.. math::
\tau = E[Y | D=1] - E[Y | D=0]
The estimator implemented here is the simple difference in sample means:
.. math::
\hat{\tau} = \frac{1}{n_1} \sum_{i: D_i=1} Y_i - \frac{1}{n_0} \sum_{i: D_i=0} Y_iStandard errors and confidence intervals are computed using Welch’s t-test by default, which does not assume equal variances between groups:
.. math::
SE(\hat{\tau}) = \sqrt{\frac{s_1^2}{n_1} + \frac{s_0^2}{n_0}}where $s_g^2$ is the sample variance in group $g$.
Examples
from causalis.scenarios.classic_rct.dgp import generate_classic_rct_26 from causalis.scenarios.classic_rct.model import DiffInMeans
Generate synthetic RCT data
data = generate_classic_rct_26(seed=42)
Fit the model
model = DiffInMeans().fit(data)
Estimate ATE using standard t-test
estimate = model.estimate(method=”ttest”) print(f”ATE: {estimate.value:.4f}”) ATE: 0.0339 print(f”P-value: {estimate.p_value:.4f}”) P-value: 0.0000
Attributes
data : CausalData or None The dataset used for fitting and estimation.
Initialization
- fit(data: causalis.dgp.causaldata.CausalData) causalis.scenarios.classic_rct.model.DiffInMeans¶
Fit the model by storing the CausalData object.
In the
DiffInMeansscenario, “fitting” primarily involves validating the data structure and storing it for subsequent estimation.Parameters
data : CausalData The CausalData object containing treatment and outcome variables. Treatment must be binary (0/1).
Returns
DiffInMeans The fitted model instance.
Raises
ValueError If the input is not a
CausalDataobject.
- estimate(method: Literal[causalis.scenarios.classic_rct.inference.ttest, causalis.scenarios.classic_rct.inference.welch_permutation_t_test, causalis.scenarios.classic_rct.inference.conversion_ztest] = 'ttest', alpha: float = 0.05, diagnostic_data: bool = True, **kwargs: Any) causalis.data_contracts.causal_estimate.CausalEstimate¶
Compute the treatment effect using the specified method.
Parameters
method : {“ttest”, “welch_permutation_t_test”, “conversion_ztest”}, default “ttest” The inference method to use: - “ttest”: Standard Welch’s two-sample t-test (handles unequal variances). - “welch_permutation_t_test”: Permutation-based p-value using the Welch statistic. - “conversion_ztest”: Z-test for proportions, suitable for binary (0/1) outcomes. alpha : float, default 0.05 Significance level for calculating confidence intervals. diagnostic_data : bool, default True Whether to include diagnostic data in the result (e.g., covariate balance if confounders exist). **kwargs : Any Additional arguments passed to the underlying inference function: - For “welch_permutation_t_test”:
B(iterations),alternative,seed. - For “conversion_ztest”:ci_method,se_for_test.Returns
CausalEstimate A results object containing: -
value: The estimated ATE (absolute difference). -p_value: The statistical significance. -ci_lower_absolute,ci_upper_absolute: Confidence interval bounds. -value_relative: The relative effect (% lift).Raises
RuntimeError If the model has not been fitted yet. ValueError If an unsupported method is specified.
- __repr__() str¶