detect_separation {brglm2}  R Documentation 
glm
that tests for data separation and
finds which parameters have infinite maximum likelihood estimates
in generalized linear models with binomial responsesdetect_separation
is a method for glm
that tests for the occurrence of complete or quasicomplete
separation in datasets for binomial response generalized linear
models, and finds which of the parameters will have infinite
maximum likelihood estimates. detect_separation
relies on the linear programming methods developed in Konis (2007).
detect_separation( x, y, weights = rep(1, nobs), start = NULL, etastart = NULL, mustart = NULL, offset = rep(0, nobs), family = gaussian(), control = list(), intercept = TRUE, singular.ok = TRUE ) detectSeparation( x, y, weights = rep(1, nobs), start = NULL, etastart = NULL, mustart = NULL, offset = rep(0, nobs), family = gaussian(), control = list(), intercept = TRUE, singular.ok = TRUE )
x 

y 

weights 
an optional vector of ‘prior weights’ to be used
in the fitting process. Should be 
start 
currently not used. 
etastart 
currently not used. 
mustart 
currently not used. 
offset 
this can be used to specify an a priori known
component to be included in the linear predictor during fitting.
This should be 
family 
a description of the error distribution and link
function to be used in the model. For 
control 
a list of parameters controlling separation
detection. See 
intercept 
logical. Should an intercept be included in the null model? 
singular.ok 
logical. If 
For the definition of complete and quasicomplete separation, see Albert and Anderson (1984).
detect_separation
is a wrapper to the separator
function from the **safeBinaryRegression** R package, that can be
passed directly as a method to the glm
function. See,
examples.
The interface to separator
was designed by Ioannis Kosmidis
after correspondence with Kjell Konis, and a port of
separator
has been included in **brglm2** under the
permission of Kjell Konis.
detectSeparation
is an alias for detect_separation
.
detect_separation
will be removed from brglm2 at
version 0.8. A new version of detect_separation
is now
maintained in the detectseparation R package at
https://cran.rproject.org/package=detectseparation. In order
to use the version in detect_separation
load first
brglm2 and then detectseparation, i.e.
library(brglm2); library(detectseparation)
.
Ioannis Kosmidis [aut, cre] ioannis.kosmidis@warwick.ac.uk, Kjell Konis [ctb] kjell.konis@me.com
Konis K (2007). *Linear Programming Algorithms for Detecting Separated Data in Binary Logistic Regression Models*. DPhil. University of Oxford. https://ora.ox.ac.uk/objects/uuid:8f9ee0d0d78e41019ab4f9cbceed2a2a
Konis K (2013). safeBinaryRegression: Safe Binary Regression. R package version 0.13. https://CRAN.Rproject.org/package=safeBinaryRegression
Kosmidis I, Firth D (2020). Jeffreysprior penalty, finiteness and shrinkage in binomialresponse generalized linear models. *Biometrika* doi: 10.1093/biomet/asaa052
## endometrial data from Heinze \& Schemper (2002) (see ?endometrial) data("endometrial", package = "brglm2") endometrial_sep < glm(HG ~ NV + PI + EH, data = endometrial, family = binomial("logit"), method = "detect_separation") endometrial_sep ## The maximum likelihood estimate for NV is infinite summary(update(endometrial_sep, method = "glm.fit")) ## Not run: ## Example inspired by unpublished microeconometrics lecture notes by ## Achim Zeileis https://eeecon.uibk.ac.at/~zeileis/ ## The maximum likelihood estimate of sourhernyes is infinite data("MurderRates", package = "AER") murder_sep < glm(I(executions > 0) ~ time + income + noncauc + lfp + southern, data = MurderRates, family = binomial(), method = "detect_separation") murder_sep ## which is also evident by the large estimated standard error for NV murder_glm < update(murder_sep, method = "glm.fit") summary(murder_glm) ## and is also reveal by the divergence of the NV column of the ## result from the more computationally intensive check check_infinite_estimates(murder_glm) ## Mean bias reduction via adjusted scores results in finite estimates update(murder_glm, method = "brglm_fit") ## End(Not run)