首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从lrm()中获得OR和95%CI?

如何从lrm()中获得OR和95%CI?
EN

Stack Overflow用户
提问于 2021-09-19 11:56:14
回答 1查看 489关注 0票数 1

我想用rms软件包建立物流模型,但如何从lrm()中得到95%的OR值?我只知道如何获得OR的价值。

我的代码如下:

代码语言:javascript
复制
n <- 1000    # define sample size
set.seed(17) # so can reproduce the results
y              <- rep(0:1, 500)
age            <- rnorm(n, 50, 10)
sex            <- factor(sample(c('female','male'), n,TRUE))
label(age)            <- 'Age'
label(sex)            <- 'Sex'

f <- lrm(y ~ age + sex, x=TRUE, y=TRUE)
f

# OR
exp(coef(f))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-19 15:18:54

要获得每个变量的日志赔率比的95%的置信区间,您可以从估计值中减去1.96倍的标准误差。对数比数比的上置信区间是估计值的标准误差的1.96倍。当你把这些结果指数化时,你就有了优势比的置信区间。

使用这个数字1.96的原因是标准正态分布的2.5%分位数是在-1.96,其97.5%分位数是在+1.96。如果您想避免使用1.96作为“魔术数字”,可以使用qnorm函数(参见下面)。

lrm对象的困难在于,标准错误并不直接存储在模型对象中,每次打印到控制台时都会计算出来。但是,您可以通过获取矩阵var的对角线的平方根(它是f的一个成员)来轻松地获得它们。

代码语言:javascript
复制
sqrt(diag(f$var))
#>   Intercept         age    sex=male 
#> 0.326635446 0.006222249 0.126599055

您可以检查这是否与模型摘要中的标准错误列相同。

因此,要获得优势比及其置信区间的数据框架,您可以这样做:

代码语言:javascript
复制
df <- data.frame(variable  = colnames(f$var),
                 OR        = exp(f$coefficients),
                 OR_lower  = exp(f$coefficients + qnorm(0.025) * sqrt(diag(f$var))),
                 OR_upper  = exp(f$coefficients + qnorm(0.975) * sqrt(diag(f$var))),
                 row.names = NULL)

df
#>    variable        OR  OR_lower OR_upper
#> 1 Intercept 1.1107651 0.5855846 2.106953
#> 2       age 0.9990378 0.9869282 1.011296
#> 3  sex=male 0.8935087 0.6971681 1.145144
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69243033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档