我试图了解逻辑回归在高维问题中的行为(即,当您将逻辑回归拟合到具有大量预测变量的数据时)。
每次我用大量预测变量拟合逻辑回归时,我都会在 R 中收到以下警告:
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
我在某处读到这被称为 Hauck-Donner 现象,这是因为拟合概率太接近 0/1。
但是,我的假设是,随着您增加预测变量的数量,您的拟合概率的方差必须在逻辑回归中增加。这是因为您的对数赔率估计本质上是随机变量的总和,并且 100 个类似分布的随机变量的总和将(可能)具有比 10 个 rvs 的总和更大的方差。因此,当您将逻辑回归应用于非常高维度的问题时,您的拟合概率将更接近 0/1(因为更高的方差),因此您的系数估计必须因为这个问题而有偏差(不正确)?这个假设正确吗?
我使用以下代码创建了一个模拟来尝试回答这个问题:
genLogit <- function(n,dimens){
dimens <- floor(dimens/2)*2 #make sure dimens is even
xdata <- cbind(replicate(dimens/2,runif(n)),replicate(dimens/2,runif(n,-1,0)))
ydata <- apply(xdata,1,sum)
prob <- exp(ydata)/(1+exp(ydata))
runis <- runif(length(prob))
ydata <- ifelse(runis<prob,1,0)
model <- glm(ydata~.,data = data.frame(cbind(ydata,xdata)),family = binomial(link =
return(summary(model))
}
代码所做的基本上是从以下模拟逻辑回归:
在哪里和. 您可以改变模型中预测变量的数量以及生成的数据点的数量。然后该函数将对模拟数据进行逻辑回归拟合,您可以检查系数、残差、拟合等。
我知道我所有的预测变量都具有相同的方差(在处理真实数据时不一定正确),但是这种模拟仍然足以证明我的假设吗?