@@ -613,13 +613,13 @@ def fit_outcome_model(
613613        coords ,
614614        priors = {
615615            "b_outcome" : [0 , 1 ],
616-             "a_outcome" : [0 , 1 ],
617616            "sigma" : 1 ,
618617            "beta_ps" : [0 , 1 ],
619618        },
620619        noncentred = True ,
621620        normal_outcome = True ,
622621        spline_component = False ,
622+         winsorize_boundary = 0.0 ,
623623    ):
624624        """ 
625625        Fit a Bayesian outcome model using covariates and previously estimated propensity scores. 
@@ -643,7 +643,6 @@ def fit_outcome_model(
643643        priors : dict, optional 
644644            Dictionary specifying priors for outcome model parameters: 
645645                - "b_outcome": list [mean, std] for regression coefficients. 
646-                 - "a_outcome": list [mean, std] for the intercept. 
647646                - "sigma": standard deviation of the outcome noise (default 1). 
648647
649648        noncentred : bool, default True 
@@ -657,6 +656,10 @@ def fit_outcome_model(
657656            If True, include a spline basis expansion on the propensity score to allow 
658657            flexible (nonlinear) adjustment. Uses B-splines with 30 internal knots. 
659658
659+         winsorize_boundary : float, default 0.0 
660+             If we wish to winsorize the propensity score this can be set to clip the high 
661+             and low values of the propensity at 0 + winsorize_boundary and 1-winsorize_boundary 
662+ 
660663        Returns 
661664        ------- 
662665        idata_outcome : arviz.InferenceData 
@@ -677,8 +680,8 @@ def fit_outcome_model(
677680        posterior of the treatment model, randomly selecting one posterior draw 
678681        per call. This term is estimated initially in the InversePropensity 
679682        class initialisation. 
680-         - The term `beta_ps[0] * p + beta_ps[1] * (p * treatment) ` captures both 
681-         main and interaction  effects of the propensity score. 
683+         - The term `beta_ps[0] * p` captures both 
684+         main effects of the propensity score. 
682685        - Including spline adjustment enables modeling nonlinear relationships 
683686        between the propensity score and the outcome. 
684687
@@ -711,6 +714,7 @@ class initialisation.
711714
712715            chosen  =  np .random .choice (range (propensity_scores .shape [1 ]))
713716            p  =  propensity_scores [:, chosen ].values 
717+             p  =  np .clip (p , winsorize_boundary , 1  -  winsorize_boundary )
714718
715719            mu_outcome  =  pm .math .dot (X_data_outcome , beta ) +  beta_ps  *  p 
716720
0 commit comments