ebrahim.gof - Goodness-of-Fit and Calibration Tests for Logistic Regression
Provides a unified battery of goodness-of-fit and
calibration tests for binary logistic regression, runnable in a
single call via 'run.all.gof()'. Around twenty-five tests
spanning five decades of literature are aggregated and grouped
by the departure each is built to detect: global and
standardized statistics, partition tests such as
Hosmer-Lemeshow, directed and covariate-space tests, smoothing
and resampling tests, and calibration tests. Each is obtained
from its own package where installed and attributed to its
authors. The package also implements the author's own
procedures for sparse data, where the Hosmer-Lemeshow test
loses power: the omnibus Ebrahim-Farrington test 'ef.gof()',
the directed 'edge.gof()' and its covariate-space variant
'cdef.gof()', the Cauchy-combination ensemble 'edges.gof()',
'DeepGOF-1' (a pretrained convolutional statistic whose level
comes from the analyst's own parametric bootstrap rather than
from the network), and 'legoft()' (a frozen-weight combination
whose weights are fixed offline and ship frozen, so two
analysts obtain the same p-value). For penalized (ridge)
logistic regression, where shrinkage biases the fitted
probabilities and invalidates the usual chi-squared references,
the corrected statistics are referred either to a prepivoting
bootstrap by 'shrink.gof()' or to a closed-form reference by
'calm.gof()', which needs a single fit and is validated for
designs in which the number of predictors is a sizeable
fraction of the sample size. For a model fitted elsewhere,
'run.all.external()' tests frozen predictions on validation
data, and 'edge.stream()' updates the 'EDGE' test as validation
records arrive. 'localize.gof()' and 'localize.external()' name
which part of the model is wrong (the intercept, the slope, the
link or the covariates) with familywise error control. For
comparison, the projection test of Liu et al. is implemented as
'projection.gof()' and a fast implementation of the
adaptive-partition test 'BAGofT' as 'bagoft.fast()'. For more
details see Hosmer (1980) <doi:10.1080/03610928008827941> and
Farrington (1996) <doi:10.1111/j.2517-6161.1996.tb02086.x>.