@@ -185,12 +185,16 @@ def __init__(self, df, exposure, outcome, alpha=0.05, continuous_bound=0.0005):
185
185
186
186
self .risk_difference = None
187
187
self .risk_difference_ci = None
188
+ self .risk_difference_se = None
188
189
self .risk_ratio = None
189
190
self .risk_ratio_ci = None
191
+ self .risk_ratio_se = None
190
192
self .odds_ratio = None
191
193
self .odds_ratio_ci = None
194
+ self .odds_ratio_se = None
192
195
self .average_treatment_effect = None
193
196
self .average_treatment_effect_ci = None
197
+ self .average_treatment_effect_se = None
194
198
195
199
def exposure_model (self , model , custom_model = None , bound = False , print_results = True ):
196
200
"""Estimation of Pr(A=1|L), which is termed as g(A=1|L) in the literature
@@ -437,19 +441,21 @@ def fit(self):
437
441
ic = np .where (delta == 1 ,
438
442
HAW * (y_unbound - Qstar ) + (Qstar1 - Qstar0 ) - self .average_treatment_effect ,
439
443
Qstar1 - Qstar0 - self .average_treatment_effect )
440
- varIC = np .nanvar (ic , ddof = 1 ) / self .df .shape [0 ]
441
- self .average_treatment_effect_ci = [self .average_treatment_effect - zalpha * math .sqrt (varIC ),
442
- self .average_treatment_effect + zalpha * math .sqrt (varIC )]
444
+ seIC = np .sqrt (np .nanvar (ic , ddof = 1 ) / self .df .shape [0 ])
445
+ self .average_treatment_effect_se = seIC
446
+ self .average_treatment_effect_ci = [self .average_treatment_effect - zalpha * seIC ,
447
+ self .average_treatment_effect + zalpha * seIC ]
443
448
else :
444
449
# Calculating Risk Difference
445
450
self .risk_difference = np .nanmean (Qstar1 - Qstar0 )
446
451
# Influence Curve for CL
447
452
ic = np .where (delta == 1 ,
448
453
HAW * (self .df [self .outcome ] - Qstar ) + (Qstar1 - Qstar0 ) - self .risk_difference ,
449
454
(Qstar1 - Qstar0 ) - self .risk_difference )
450
- varIC = np .nanvar (ic , ddof = 1 ) / self .df .shape [0 ]
451
- self .risk_difference_ci = [self .risk_difference - zalpha * np .sqrt (varIC ),
452
- self .risk_difference + zalpha * np .sqrt (varIC )]
455
+ seIC = np .sqrt (np .nanvar (ic , ddof = 1 ) / self .df .shape [0 ])
456
+ self .risk_difference_se = seIC
457
+ self .risk_difference_ci = [self .risk_difference - zalpha * seIC ,
458
+ self .risk_difference + zalpha * seIC ]
453
459
454
460
# Calculating Risk Ratio
455
461
self .risk_ratio = np .nanmean (Qstar1 ) / np .nanmean (Qstar0 )
@@ -459,9 +465,10 @@ def fit(self):
459
465
(1 / np .mean (Qstar0 )) * (- 1 * H0W * (self .df [self .outcome ] - Qstar ) + Qstar0 - np .mean (Qstar0 ))),
460
466
(Qstar1 - np .mean (Qstar1 )) + Qstar0 - np .mean (Qstar0 ))
461
467
462
- varIC = np .nanvar (ic , ddof = 1 ) / self .df .shape [0 ]
463
- self .risk_ratio_ci = [np .exp (np .log (self .risk_ratio ) - zalpha * np .sqrt (varIC )),
464
- np .exp (np .log (self .risk_ratio ) + zalpha * np .sqrt (varIC ))]
468
+ seIC = np .sqrt (np .nanvar (ic , ddof = 1 ) / self .df .shape [0 ])
469
+ self .risk_ratio_se = seIC
470
+ self .risk_ratio_ci = [np .exp (np .log (self .risk_ratio ) - zalpha * seIC ),
471
+ np .exp (np .log (self .risk_ratio ) + zalpha * seIC )]
465
472
466
473
# Calculating Odds Ratio
467
474
self .odds_ratio = (np .nanmean (Qstar1 ) / (1 - np .nanmean (Qstar1 )
@@ -475,9 +482,10 @@ def fit(self):
475
482
476
483
((1 / (np .nanmean (Qstar1 ) * (1 - np .nanmean (Qstar1 ))) * Qstar1 -
477
484
(1 / (np .nanmean (Qstar0 ) * (1 - np .nanmean (Qstar0 ))) * Qstar0 ))))
478
- varIC = np .nanvar (ic , ddof = 1 ) / self .df .shape [0 ]
479
- self .odds_ratio_ci = [np .exp (np .log (self .odds_ratio ) - zalpha * np .sqrt (varIC )),
480
- np .exp (np .log (self .odds_ratio ) + zalpha * np .sqrt (varIC ))]
485
+ seIC = np .sqrt (np .nanvar (ic , ddof = 1 ) / self .df .shape [0 ])
486
+ self .odds_ratio_se = seIC
487
+ self .odds_ratio_ci = [np .exp (np .log (self .odds_ratio ) - zalpha * seIC ),
488
+ np .exp (np .log (self .odds_ratio ) + zalpha * seIC )]
481
489
482
490
def summary (self , decimal = 3 ):
483
491
"""Prints summary of model results
0 commit comments