我正在运行一个包含大约200.000个观察值的代码,其中10.000个观察值被处理,其余的我正在尝试使用MatchIt包进行匹配。
由于其中一个变量,出现了一条警告消息,我不知道是否应该忽略它。消息是: Glm.fit:数字为0或1的拟合概率
我运行的代码类似于下面的代码:
m.out <- matchit(var ~ VAR1 + VAR2 + VAR3 + VAR4 + VAR5, data = mydata, method = "nearest", exact = c("VAR1", "VAR3", "VAR5"))
为了举例说明,我们假设这个问题的变量是"VAR5“。这个变量是一个字符变量,大约有200个不同的文本。所以,我的问题是,这个警告是一个真正的问题,还是仅仅因为这个变量中有太多针对我的数据大小的选项,因此,无法找到治疗/控制预测?不管怎样,我能做些什么来避免这个警告吗?
最好的
发布于 2020-01-14 04:09:58
默认情况下,MatchIt
通过glm
函数使用逻辑回归来估计倾向分数。这一警告意味着logistic回归模型已经过拟合,一些变量可以很好地预测治疗状态。这可能表明违反了积极(即,你的两组根本不同),但正如你所提到的,可能只是一个相对不重要的特征有许多类别,其中一些与治疗完全重叠。有几种方法可以解决这个问题;其中之一确实是放弃VAR5,但您也可以尝试在MatchIt
之外使用一种不受此问题影响的方法来估计您自己的倾向分数,然后通过distance
参数将这些倾向分数提供给matchit()
。
我想到了两种方法。第一种是使用brglm2
,这是一个包,它实现了拟合逻辑回归模型的另一种方法,因此拟合的概率永远不会是0或1。这种方法很容易实现,因为它只使用了glm
函数的微小变化。
第二种是使用机器学习方法,该方法执行正则化(即变量选择),以便仅包括对分析重要的变量和因素水平。您可以使用glmnet
执行套索或弹性净逻辑回归,您可以使用gbm
或twang
进行广义boosted建模,或者您可以使用SuperLearner
堆叠几种机器学习方法并从中获取最佳预测。然后,您可以将预测值提供给matchit()
。
https://stackoverflow.com/questions/59683885
复制相似问题