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

使用glm函数做泊松回归预测时出现log(time)错误的排查与解决

错误原因与修复方案

错误解释

Error in log(time) : non-numeric argument to mathematical function 本质是:你的模型公式包含offset(log(time)),调用predict时,传入的newdata里没有提供time变量,程序找不到这个变量来计算offset项,因此抛出错误。

修复方法

根据你的预测需求,有两种处理方式:

1. 预测特定时间长度下的失败数/事件数

如果你想预测随访时间为某一特定值时的失败事件数,只需在newdata中补充time的取值即可。比如预测随访100天的情况:

predict(poisson.fit, newdata = data.frame(ph.karno = 50, age = 55, time = 100), type="response")

2. 预测单位时间内的失败率

如果你的目标是预测单位时间的失败率,可以调整建模和预测的方式:

  • 首先调整建模代码(两种写法等价,选一种即可):
# 写法1:在公式外指定offset
poisson.fit = glm(status ~ ph.karno + age, offset = log(time), family = "poisson", data = lung)

# 写法2:保持公式内的offset,和原代码一致
poisson.fit = glm(status ~ offset(log(time)) + ph.karno + age, family = "poisson", data = lung)
  • 预测时,通过offset参数传入单位时间的log值(比如time=1,对应log(1)):
predict(poisson.fit, newdata = data.frame(ph.karno = 50, age = 55), offset = log(1), type="response")

如果需要预测其他时间长度的率,只需把offset里的log(1)换成对应时间的log值,比如log(200)代表随访200天的率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:40:19