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

R中glm用'-'排除变量后predict报错的原因解析

问题原因解析

核心差异源于R中公式的保存与解析逻辑:

  • 用Direction ~ . - Today - Year构建模型时,R仅在拟合阶段临时将.展开为Weekly数据集的所有变量,再移除Year和Today来计算模型系数,但模型对象中保存的公式仍然是~ . - Today - Year这个原始写法,并未自动展开为具体的变量列表。
  • 调用predict()函数时,R会在newdata的环境下重新解析这个公式:首先将.展开为newdata中的所有变量(即你选取的Lag1到Volume),接着执行- Today - Year的操作——此时会尝试查找Year变量,但newdata中并不包含该变量,因此抛出"找不到对象'Year'"的错误。
  • 而手动指定变量的模型logregall2,公式明确列出了所有需要用到的变量,predict()时直接在newdata中查找这些已存在的变量,不会触发对Year的查找操作,因此可以正常运行。

你可以通过以下代码验证两个模型的公式差异:

# 查看logregall的公式
formula(logregall)
# 输出:Direction ~ . - Today - Year

# 查看logregall2的公式
formula(logregall2)
# 输出:Direction ~ Lag1 + Lag2 + Lag3 + Lag4 + Lag5 + Volume

内容的提问来源于stack exchange,提问作者jojorabbit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:40:38