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

使用rms包lrm函数拟合带offset的仅截距模型报错求助

解决rms包lrm函数拟合带offset的仅截距模型报错问题

我尝试用rms包的lrm()函数拟合带offset项的仅截距模型,但两次尝试都报错,而glm()能成功拟合等效模型。以下是复现代码及报错信息:

### 生成数据
# 安装并加载rms包
# install.packages("rms")
library(rms)

set.seed(1)
# 生成事件概率
p.true <- runif(1000, 0.2 , 0.8)
# 生成二分类结局变量
state1.bin <- rbinom(1000, 1, p.true)
# 构建数据集,包含结局变量和事件概率的logit转换值
data.raw.temp <- data.frame(
  "state1.bin" = state1.bin, 
  "p.true.logit1" = log(p.true/(1-p.true))
)

### 拟合带offset的仅截距模型
# glm成功拟合
glm(state1.bin ~ offset(p.true.logit1), data = data.raw.temp, family = binomial(link = "logit"))
# lrm尝试1:公式中用offset()
lrm(state1.bin ~ offset(p.true.logit1), data = data.raw.temp)
# lrm尝试2:使用函数的offset参数
lrm(state1.bin ~ 1, offset = p.true.logit1, data = data.raw.temp)

glm的拟合结果(符合预期):

Call:  glm(formula = state1.bin ~ offset(p.true.logit1), family = binomial(link = "logit"), 
    data = data.raw.temp)

Coefficients:
(Intercept)  
   -0.02642  

Degrees of Freedom: 999 Total (i.e. Null);  999 Residual
Null Deviance:      1270 
Residual Deviance: 1270     AIC: 1272

两次lrm尝试的报错:

  • 尝试1报错:
Error in lrm(state1.bin ~ offset(p.true.logit1), data = data.raw.temp) : 
  object 'nact' not found
  • 尝试2报错:
Error in fitter(X, Y, offset = offs, penalty.matrix = penalty.matrix,  : 
  formal argument "offset" matched by multiple actual arguments

解决方案

lrm()函数的内部机制要求模型至少有一个显式的自变量,才能正确初始化计算流程。针对仅截距+offset的场景,你可以给数据集添加一列无信息的虚拟变量(比如全1的列),再将这个变量加入公式,就能顺利拟合模型了。

步骤如下:

  1. 添加全1的虚拟变量到数据集:
data.raw.temp$dummy <- 1
  1. 拟合模型:
lrm_fit <- lrm(state1.bin ~ dummy + offset(p.true.logit1), data = data.raw.temp)

验证结果

拟合后的模型关键输出如下,其中dummy的系数与glm的截距系数几乎一致,符合预期:

Logistic Regression Model

lrm(formula = state1.bin ~ dummy + offset(p.true.logit1), data = data.raw.temp)

Coefficients:
            Coef    S.E.   Wald Z Pr(>|Z|)
dummy    -0.0264  0.0713 -0.370    0.7116

你也可以用~ 0 + dummy + offset(p.true.logit1)作为公式,此时dummy的系数直接对应截距项,结果完全相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:20:29