## Marginal Effects (on Binary Outcome)

In regression models, the marginal effect of a explanatory variable X is the partial derivative of the prediction with respect to X and measures the expected change in the response variable as a function of the change in X with the other explanatory variables held constant. In the interpretation of a regression model, presenting marginal effects often brings more information than just looking at coefficients. Below, I will use 2 types of regression models, e.g. logit and probit, for binary outcomes to show that although coefficients estimated from the same set of Xs might differ substantially in 2 models, marginal effects of each X in both model actually look very similar.

As shown below, parameter estimates from logit and probit look very different due to different model specification and assumptions. As a result, it is not possible to compare the effect and sensitivity of each predictor across 2 models.

proc qlim data = one; model bad = bureau_score ltv / discrete(d = logit); output out = out1 marginal; run; /* logit estimates Standard Approx Parameter Estimate Error t Value Pr > |t| Intercept 7.080229 0.506910 13.97 <.0001 bureau_score -0.016705 0.000735 -22.74 <.0001 ltv 0.028055 0.002361 11.88 <.0001 */ proc qlim data = one; model bad = bureau_score ltv / discrete(d = probit); output out = out2 marginal; run; /* probit estimates Standard Approx Parameter Estimate Error t Value Pr > |t| Intercept 4.023515 0.285587 14.09 <.0001 bureau_score -0.009500 0.000403 -23.56 <.0001 ltv 0.015690 0.001316 11.93 <.0001 */

However, are these 2 models so much different from each other? Comparing marginal effects instead of parameter estimates might be table to bring us more useful information.

proc means data = out1 mean; var meff_p2_:; run; /* marginal effects from logit Variable Mean ---------------------------------------- Meff_P2_bureau_score -0.0022705 Meff_P2_ltv 0.0038132 ---------------------------------------- */ proc means data = out2 mean; var meff_p2_:; run; /* marginal effects from probit Variable Mean ---------------------------------------- Meff_P2_bureau_score -0.0022553 Meff_P2_ltv 0.0037249 ---------------------------------------- */

It turns out that marginal effects of each predictor between two models are reasonably close.

Although it is easy to calculate marginal effects with SAS QLIM procedure, it might still be better to understand the underlying math and then compute them yourself with SAS data steps. Below is a demo on how to manually calculate marginal effects of a logit model following the formulation:

**MF_x_i = EXP(XB) / ((1 + EXP(XB)) ^ 2) * beta_i for the ith predictor.**

proc logistic data = one desc; model bad = bureau_score ltv; output out = out3 xbeta = xb; run; /* model estimates: Standard Wald Parameter DF Estimate Error Chi-Square Pr > ChiSq Intercept 1 7.0802 0.5069 195.0857 <.0001 bureau_score 1 -0.0167 0.000735 516.8737 <.0001 ltv 1 0.0281 0.00236 141.1962 <.0001 */ data out3; set out3; margin_bureau_score = exp(xb) / ((1 + exp(xb)) ** 2) * (-0.0167); margin_ltv = exp(xb) / ((1 + exp(xb)) ** 2) * (0.0281); run; proc means data = out3 mean; var margin_bureau_score margin_ltv; run; /* manual calculated marginal effects: Variable Mean ----------------------------------- margin_bureau_score -0.0022698 margin_ltv 0.0038193 ----------------------------------- */