I'm working on building a logistic model which will be used to estimate the probability that an account will skip on their monthly payment. My dataset roughly includes 50,000 observations with 15% of the observations skipping their regularly scheduled payment. My explanatory variables include the age of the account, Incentive (which is described as the account's interest rate minus the market rate) and finally their original balance amount.
My first attempt: My logit model results below
Call:
glm(formula = Level ~ Age + Incentive + log(OriginalBalance),
family = binomial(link = "logit"), data = df)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.7633 -0.5788 -0.5335 -0.4777 2.3131
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.226113 0.138865 -1.628 0.103
Age -0.009313 0.001007 -9.245 < 2e-16 ***
Incentive 0.043627 0.009537 4.574 4.78e-06 ***
log(OriginalBalance) -0.124829 0.012034 -10.373 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 36449 on 44945 degrees of freedom
Residual deviance: 36168 on 44942 degrees of freedom
AIC: 36176
Number of Fisher Scoring iterations: 4
I then proceeded to plot the individual explanatory variables against the dependent variable using a gam smoothing function within R's ggplot2
package. See plot 1. Looking at this plot suggest nonlinearity and thus the need for transformations or to use splines. My question is whether these plots are evidence enough for needing to transform/include splines? Are there any statistical tests that I may find useful?
Additionally I ran an HL test and the results indicate that my current model fits poorly or my model is not well specified. This further leads me to believe that I need to transform/include splines or that I may potentially need to use interaction variables.
hl <- ResourceSelection::hoslem.test(q6$Level, fitted(m))
> hl
Hosmer and Lemeshow goodness of fit (GOF) test
data: q6$Level, fitted(m)
X-squared = 31.238, df = 8, p-value = 0.0001274