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

使用drop.test函数构建仅截距rfit模型报错求助

解决rfit仅截距模型构建与drop.test报错问题

问题根源

你之前的写法错误在于:

  • 使用全1列INT加intercept=F时,模型实际拟合的是totaltriglevel = β*INT(无截距),这种参数化方式与全模型f1(带截距+多个变量)的参数空间不兼容,导致drop.test无法进行模型比较。
  • 直接用~1时可能因对rfit语法理解偏差导致操作失误,rfit默认支持~1构建仅截距模型。

正确解决方案

方法1:使用公式~1构建仅截距模型

rfit支持通过~1直接指定仅截距模型,无需额外构造全1列:

# 拟合仅截距的秩回归模型
r4 <- rfit(totaltriglevel ~ 1, data = table9.11)
# 全模型保持不变
f1 <- rfit(totaltriglevel ~ sex + obese + chylomicrons + VLDL + LDL + HDL + Age, data = table9.11)
# 执行模型比较检验
drop.test(f1, r4)

方法2:手动构造设计矩阵(适用于特殊版本兼容)

若方法1因版本问题仍报错,可直接传入全1设计矩阵拟合:

# 构造仅含截距的设计矩阵(全1列)
intercept_mat <- matrix(1, nrow = nrow(table9.11), ncol = 1)
# 拟合仅截距模型(intercept设为FALSE,因为设计矩阵已包含全1列)
r4 <- rfit(x = intercept_mat, y = table9.11$totaltriglevel, intercept = FALSE)
# 全模型与检验代码不变
f1 <- rfit(totaltriglevel ~ sex + obese + chylomicrons + VLDL + LDL + HDL + Age, data = table9.11)
drop.test(f1, r4)

关键说明

  • rfit的intercept参数默认值为TRUE,当公式为~1时,模型会自动拟合截距,这与lm的行为一致,是构建仅截距模型的标准方式。
  • drop.test要求两个模型的响应变量一致,且简化模型是全模型的嵌套子集,上述两种方法都能保证模型嵌套关系正确,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:36:23