causallib.estimation.MarginalOutcomeEstimator#
- class MarginalOutcomeEstimator(learner, use_stabilized=False, *args, **kwargs)[source]#
A marginal outcome predictor. Assumes the sample is marginally exchangeable, and therefore does not correct (adjust, control) for covariates. Predicts the outcome/effect as if the sample came from a randomized control trial: $Pr[Y|A]$.
- Parameters:
learner – Initialized sklearn model.
use_stabilized (
bool) – Whether to re-weigh the learned weights with the prevalence of the treatment. See Also: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4351790/#S6title
- compute_weight_matrix(X, a, use_stabilized=None, **kwargs)[source]#
Computes individual weight across all possible treatment values. f(Pr[A=a_j | X_i]) for all individual i and treatment j.
- Parameters:
X (
pandas.DataFrame) – Covariate matrix of size (num_subjects, num_features).a (
pandas.Series) – Treatment assignment of size (num_subjects,).use_stabilized (
bool) – Whether to re-weigh the learned weights with the prevalence of the treatment. This overrides the use_stabilized parameter provided at initialization. See Also: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4351790/#S6title**kwargs
- Returns:
- A matrix of size (num_subjects, num_treatments) with weight for every individual and every
treatment.
- Return type:
- compute_weights(X, a, treatment_values=None, use_stabilized=None, **kwargs)[source]#
Computes individual weight given the individual’s treatment assignment. f(Pr[A=a_i | X_i]) for each individual i.
- Parameters:
X (
pandas.DataFrame) – Covariate matrix of size (num_subjects, num_features).a (
pandas.Series) – Treatment assignment of size (num_subjects,).treatment_values (
Any | None) – A desired value/s to extract weights to (i.e. weights to what treatment value should be calculated). If not specified, then the weights are chosen by the individual’s actual treatment assignment.use_stabilized (
bool) – Whether to re-weigh the learned weights with the prevalence of the treatment. This overrides the use_stabilized parameter provided at initialization. See Also: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4351790/#S6title**kwargs
- Returns:
A vector of size (num_subjects,) with a weight for each individual
- Return type:
- fit(X=None, a=None, y=None)[source]#
Dummy implementation to match the API. MarginalOutcomeEstimator acts as a WeightEstimator that weights each sample as 1
- Parameters:
X (
pandas.DataFrame) – Covariate matrix of size (num_subjects, num_features).a (
pandas.Series) – Treatment assignment of size (num_subjects,).y (
pandas.Series) – Observed outcome of size (num_subjects,).
- Returns:
a fitted model.
- Return type:
- estimate_population_outcome(X, a, y, w=None, treatment_values=None)[source]#
Calculates potential population outcome for each treatment value.
- Parameters:
X (
pandas.DataFrame) – Covariate matrix of size (num_subjects, num_features).a (
pandas.Series) – Treatment assignment of size (num_subjects,).y (
pandas.Series) – Observed outcome of size (num_subjects,).w (
pandas.Series | None) – Individual (sample) weights calculated. Used to achieved unbiased average outcome. If not provided, will be calculated on the data.treatment_values (
Any) – Desired treatment value/s to stratify upon before aggregating individual into population outcome. If not supplied, calculates for all available treatment values.
- Returns:
- Series which index are treatment values, and the values are numbers - the
aggregated outcome for the strata of people whose assigned treatment is the key.
- Return type:
pandas.Series[Any, float]
- set_fit_request(*, a='$UNCHANGED$')#
Configure whether metadata should be requested to be passed to the
fitmethod.Note that this method is only relevant when this estimator is used as a sub-estimator within a meta-estimator and metadata routing is enabled with
enable_metadata_routing=True(seesklearn.set_config()). Please check the User Guide on how the routing mechanism works.The options for each parameter are:
True: metadata is requested, and passed tofitif provided. The request is ignored if metadata is not provided.False: metadata is not requested and the meta-estimator will not pass it tofit.None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.