Matchit 包中的警告 ("Glm.fit: fitted probabilities numerically 0 or 1 occurred") 如何处理?

Warning in the Matchit package ("Glm.fit: fitted probabilities numerically 0 or 1 occurred") How to deal with that?

我是 运行 一个具有大约 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 个不同的文本。所以,我的问题是这个警告是否是一个真正的问题,或者它是否只是因为这个变量中的选项太多,无法满足我的数据大小,因此,不可能找到 treatment/control 预测?无论如何,我可以做些什么来避免这个警告?

最佳,

MatchIt 默认情况下通过 glm 函数使用逻辑回归来估计倾向得分。这个警告意味着逻辑回归模型已经过度拟合,一些变量完美地预测了治疗状态。这可能表明违反了积极性(即,您的两组从根本上彼此不同),但是,正如您所提到的,可能只是一个相对不重要的特征有很多类别,其中一些与治疗完全重叠。有几种方法可以解决这个问题;其中之一确实是放弃 VAR5,但您也可以尝试使用不受此问题影响的方法在 MatchIt 之外估计自己的倾向得分,然后将这些倾向得分提供给 matchit() 通过distance 参数。

我想到了两种方法。第一种是使用 brglm2,这是一个实现拟合逻辑回归模型的替代方法的包,因此拟合概率永远不会为 0 或 1。这种方法很容易实现,因为它只使用 glm函数。

第二种是使用执行正则化(即变量选择)的机器学习方法,以便仅包括对分析重要的变量和因素水平。您可以使用 glmnet 执行套索或弹性网络逻辑回归,您可以使用 gbmtwang 进行广义增强建模,或者您可以使用 SuperLearner 堆叠多个机器学习方法并从中做出最好的预测。然后,您可以将预测值提供给 matchit().