You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:02:07