MatchIt中调用glm出现‘object Call not found’错误及语法疑问
倾向得分匹配(MatchIt)报错
Error: object 'Call' not found解决办法 问题背景
基于赵钦宇等人的《Propensity score matching with R: conventional methods and new features》开展倾向得分分析,使用MatchIt包执行logistic回归匹配时,运行下述代码后触发错误:
# MatchIt函数语法参考(非可运行代码) matchit(formula, data, method = "nearest", distance = "logit", distance.options = list(), discard = "none", reestimate = FALSE) # 实际运行的匹配代码 m.out <- matchit(Smoke~x.Age+x.Gender, data=data.complete, distance='logit') # 尝试提取内部拟合的logistic模型 m.out$model
报错内容:Error: object 'Call' not found
问题原因
你看到的call: glm(formula = formula, family = binomial(logit), data = data)并非需要编写的代码,而是MatchIt内部拟合glm模型时的调用记录。报错根源在于:
m.out$model返回的是MatchIt函数内部生成的glm对象,这个对象的调用信息里引用了函数内部的局部变量formula和data,这些变量在你的全局环境中不存在,直接访问时就会触发“对象未找到”的错误。
正确操作方式
若要查看或使用拟合的logistic回归模型,不要直接调用m.out$model,改用以下方法:
- 查看模型详细摘要
summary(m.out$model)
- 提取模型系数
coef(m.out$model)
- 单独赋值后操作(更稳妥)
先将模型赋值给全局环境中的变量,再进行后续操作:
ps_logit_model <- m.out$model summary(ps_logit_model)
通过以上方式就能正常访问模型的所有结果,不会再触发报错。
内容的提问来源于stack exchange,提问作者Lunde
相关产品推荐
相关产品推荐

