def run_diagnostics(self, decimal=3): """Run all currently implemented diagnostics for the exposure and outcome models. Each `run_diagnostics` provides results for all implemented diagnostics for ease of the user. For publication quality presentations, I recommend calling each diagnostic function individually and utilizing the optional parameters Note ---- The plot presented cannot be edited. To edit the plots, call `plot_kde` or `plot_love` directly. Those functions return an axes object Parameters ---------- decimal : int, optional Number of decimal places to display. Default is 3 Returns ------- None """ if not self._fit_outcome_ or not self._fit_exposure_: raise ValueError("The exposure_model and outcome_model function must be ran before any diagnostics") # Weight diagnostics print('\tExposure Model Diagnostics') self.positivity(decimal=decimal) print('\n======================================================================') print(' Standardized Mean Differences') print('======================================================================') print(self.standardized_mean_differences().set_index(keys='labels')) print('======================================================================\n') # Outcome accuracy diagnostics print('\tOutcome Model Diagnostics') v = self._predicted_y_ - self.df[self.outcome] outcome_accuracy(true=self.df[self.outcome], predicted=self._predicted_y_, decimal=decimal) df = self.df.copy() df['_ipw_'] = np.where(df[self.exposure] == 1, 1 / df['_g1_'], 1 / (1 - df['_g1_'])) plt.figure(figsize=[8, 6]) plt.subplot(221) plot_love(df=df, treatment=self.exposure, weight='_ipw_', formula=self.__mweight) plt.title("Love Plot") plt.subplot(223) plot_kde(df=df, treatment=self.exposure, probability='_g1_') plt.title("Kernel Density of Propensity Scores") plt.subplot(222) plot_kde_accuracy(values=v.dropna(), color='green') plt.title("Kernel Density of Accuracy") plt.tight_layout() plt.show()
def run_diagnostics(self, decimal=3): """Runs diagnostics for the g-formula regression model used. Diagnostics include summary statistics and a Kernel Density plot for the predictive accuracy of the model. The model compares the model predicted value to the observed outcome value. """ # Summary statistics of prediction accuracy outcome_accuracy(true=self.gf[self.outcome], predicted=self._predicted_y_, decimal=decimal) # Distribution plot of accuracy self.plot_kde() plt.title("Kernel Density of Accuracy") plt.tight_layout() plt.show()