首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matchit包中的警告("Glm.fit:拟合概率数值为0或1“)如何处理?

Matchit包中的警告("Glm.fit:拟合概率数值为0或1“)如何处理?
EN

Stack Overflow用户
提问于 2020-01-10 22:41:03
回答 1查看 560关注 0票数 1

我正在运行一个包含大约200.000个观察值的代码,其中10.000个观察值被处理,其余的我正在尝试使用MatchIt包进行匹配。

由于其中一个变量,出现了一条警告消息,我不知道是否应该忽略它。消息是: Glm.fit:数字为0或1的拟合概率

我运行的代码类似于下面的代码:

代码语言:javascript
运行
复制
m.out <- matchit(var ~ VAR1 + VAR2 + VAR3 + VAR4 + VAR5, data = mydata, method = "nearest", exact = c("VAR1", "VAR3", "VAR5"))

为了举例说明,我们假设这个问题的变量是"VAR5“。这个变量是一个字符变量,大约有200个不同的文本。所以,我的问题是,这个警告是一个真正的问题,还是仅仅因为这个变量中有太多针对我的数据大小的选项,因此,无法找到治疗/控制预测?不管怎样,我能做些什么来避免这个警告吗?

最好的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-14 04:09:58

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59683885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档