根据safeBinaryRegression的文档,该软件包将屏蔽 glm 函数,并在发生准分离或完全分离时发出错误消息。通过指定separation = "find"
,它将列出导致问题的预测变量。
但是,当我使用此包并对我的数据使用glm
时,它无法正确找到实际上是准分离结果变量的唯一预测变量的术语。
例如:
y <- c(1, 0, 1, 1, 1, 1, 1, 1, 0, 0)
x2 <- c(3, 2, 3, 1, 3, 1, 2, 2, 3, 3)
x1 <- c(0, 0, 0, 1, 1, 1, 0, 0, 0, 2)
x0 <- c(1, 0, 1, 0, 1, 0, 0, 0, 0, 0) # This causes separation
test.data <- cbind(y,x0,x1,x2)
test.data <- as.data.frame(test.data)
library(safeBinaryRegression)
glm(y ~ x0 + x1 + x2, data = test.data, family=binomial, separation="find")
# Error in ... The following terms are causing separation among the sample points: (Intercept), x0, x1, x2
glm(y ~ x0, data = test.data, family=binomial, separation="find")
# Error in ... The following terms are causing separation among the sample points: (Intercept), x0
glm(y ~ x1, data = test.data, family=binomial, separation="find")
# No error message
glm(y ~ x2, data = test.data, family=binomial, separation="find")
# No error message
我不明白为什么所有预测变量都列在错误消息中,而只有一个预测变量导致分离。我误解了什么吗?
(在R 3.4.0下使用safeBinaryRegression 0.1-3运行)