R中单预测变量有序logistic回归polr模型无法获取置信区间问题
问题解答
1 confint返回NA的原因
你调用默认的confint()得到NA,是因为MASS包的polr对象默认使用剖面似然法计算置信区间。从你的输出可以看到0|1截距的标准误显示为0.0000、t值极高,说明该类别阈值处存在近似完全分离的情况,剖面似然函数无法找到明确的置信区间边界,因此返回NA。
2 手动计算Wald置信区间的适用性
你提到的*估计值 ± (1.96 × 标准误)*属于Wald型置信区间,完全适用于有序logistic回归:
- 该方法的前提是参数估计的抽样分布近似服从正态分布,大样本下该假设成立,你这里核心预测变量prs的t值绝对值达20.53,说明样本量足够支撑正态近似假设,计算出的置信区间是可靠的。
- 如果你想通过函数直接得到Wald置信区间,不需要手动计算,可运行如下代码:
confint(telangiec_ordinal, method = "Wald")
输出结果会和你手动计算的结果完全一致。
3 补充说明
如果你的研究需要更严谨的置信区间,也可以使用bootstrap法计算,避免正态近似假设的限制,示例代码如下:
# 需先加载boot包 library(boot) # 自定义提取系数的函数 boot_polr <- function(data, indices) { d <- data[indices,] fit <- polr(telangiectasia_tumour_24_adj ~ prs, data = d, method = "logistic") return(coef(fit)) } # 运行bootstrap(可调整重抽样次数R) set.seed(123) res <- boot(data = PRS_covar_ordinal_wo_na, statistic = boot_polr, R = 1000) # 提取置信区间 boot.ci(res, type = "perc")
内容的提问来源于stack exchange,提问作者HKJ3
相关产品推荐
相关产品推荐

