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

使用survIDINRI包计算NRI/IDI时报NA/NaN/Inf错误的解决求助

报错原因排查与解决方案

该报错本质是IDI.INF函数调用底层unoecdf计算时,传入的风险差值向量中存在NA、NaN或无穷大值,触发了C语言函数的参数校验规则,常见诱因及修复方法如下:

常见报错诱因

  • 模型不符合嵌套要求:survIDINRI包计算IDI/NRI要求两个对比模型为嵌套结构,即新模型仅比旧模型新增待验证的目标变量,其余协变量完全一致。你当前构造的covs0和covs1分别包含glst_new和lvef_low,两套协变量无嵌套关系,Cox模型拟合时会出现异常风险值,是最可能的报错原因。
  • 输入数据存在异常值:生存时间存在负数、事件变量非0/1取值、协变量矩阵存在缺失值或无穷大值,都会导致模型预测风险异常。
  • 样本量或事件数不足:你当前仅使用75例样本进行计算,若365天节点的终点事件发生数不足10例,Cox模型拟合会出现收敛失败,回归系数偏大甚至为NA,最终衍生出无穷大的风险差值。

修复步骤

  1. 修正协变量矩阵构造,保证模型嵌套:
    若你的验证目标是判断glst_new能否在lvef_low的基础上提升预测效果,旧模型为包含lvef_low的基础模型,新模型为基础模型加glst_new,构造代码如下:
# indata固定为两列:第一列生存时间,第二列事件指示
indata <- mydata[, c("admission_fu_event", "cvdeath_vf_shock_chb_arr")]
# 旧模型(基础模型)协变量:不含待验证的glst_new
covs0 <- as.matrix(mydata[, c("age_ici", "sex___1", "lvef_low")])
# 新模型(拓展模型)协变量:旧模型基础上新增glst_new
covs1 <- as.matrix(mydata[, c("age_ici", "sex___1", "lvef_low", "glst_new")])
  1. 排查数据异常值:
    运行以下代码确认输入数据无异常:
# 检查生存时间无缺失、无负数
summary(mydata$admission_fu_event)
# 检查事件变量仅含0和1,无缺失
table(mydata$cvdeath_vf_shock_chb_arr, useNA = "ifany")
# 检查协变量矩阵无缺失、无无穷大值
sum(is.na(covs0), is.na(covs1), is.infinite(covs0), is.infinite(covs1))
  1. 验证模型收敛性:
    单独拟合两个Cox模型,确认无收敛报错、回归系数无NA:
library(survival)
# 拟合基础模型
cox_base <- coxph(Surv(admission_fu_event, cvdeath_vf_shock_chb_arr) ~ age_ici + sex___1 + lvef_low, data = mydata)
# 拟合拓展模型
cox_ext <- coxph(Surv(admission_fu_event, cvdeath_vf_shock_chb_arr) ~ age_ici + sex___1 + lvef_low + glst_new, data = mydata)
# 查看模型结果
summary(cox_base)
summary(cox_ext)
  1. 若事件数不足,可适当降低t0的取值(比如调整为180天),或扩大分析样本量,保证t0节点有足够的事件发生数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 04:27:04