model.frame.default 中的错误:变量长度不同,R 预测函数

Error in model.frame.default: variable lengths differ, R predict function

这不是一个新问题,我在其他地方看到了几个建议的解决方案并尝试了它们,none有效,所以我问。

我该如何解决这个错误?我正在使用 R version 3.5.3 (2019-03-11)

Error in model.frame.default(data = ov_val, formula = Surv(time = ov_dev$futime,  : variable lengths differ (found for 'rx')

这是一个可重现的例子:

library(survival)
library(survminer)
library(dplyr)

# Create fake development dataset
ov_dev <- ovarian[1:13,]

# Create fake validation dataset
ov_val <- ovarian[13:26,]

# Run cox model
fit.coxph <- coxph(Surv(time = ov_dev$futime, event = ov_dev$fustat) ~ rx + resid.ds + age + ecog.ps, data = ov_dev)

summary(fit.coxph)

# Where error occurs
p <- log(predict(fit.coxph, newdata = ov_val, type = "expected"))

我认为发生这种情况是因为您在模型规范中使用了 ov_dev$futimeov_dev$fustat,而不仅仅是使用 futimefustat。这意味着当您进行预测时,模型使用 ov_dev 数据作为因变量,但使用 ov_val 作为自变量,它们的长度不同(13 对 14)。只需删除数据帧前缀并信任 data 参数:

library(survival)
library(survminer)
library(dplyr)

# Create fake development dataset
ov_dev <- ovarian[1:13,]

# Create fake validation dataset
ov_val <- ovarian[13:26,]

# Run cox model
fit.coxph <- coxph(Surv(futime, fustat) ~ rx + resid.ds + age + ecog.ps, 
                   data = ov_dev)

p <- log(predict(fit.coxph, newdata = ov_val, type = "expected"))

p
#>  [1]  0.4272783 -0.1486577 -1.8988833 -1.1887086 -0.8849632 -1.3374428
#>  [7] -1.2294725 -1.5021708 -0.3264792  0.5633839 -3.0457613 -2.2476071
#> [13] -1.6754877 -3.0691996

reprex package (v0.3.0)

于 2020-08-19 创建