缩放回归变量后如何用visreg绘制预测响应、95%CIs及条件图?
关于visreg处理缩放变量及绘制预测响应的问题
1. 缩放变量后能否用visreg绘制条件图?
完全可以。visreg支持处理经scale()缩放的自变量,只要模型拟合正常,就能生成包含预测曲线、95%置信区间、偏残差的条件图,核心注意点如下:
- 模型中使用
scale(x1)/scale(x2)不影响visreg的绘图逻辑,工具会自动识别缩放后的变量作为x轴 - 通过
scale="response"参数,可将链接尺度的预测结果转换回原始响应尺度(对应你模型的负二项计数尺度) - 偏残差的展示通过
partial=TRUE实现,会自动计算并绘制偏残差点 - 95%置信区间默认自动以阴影区域展示,无需额外开启
针对你的示例代码,优化后的可运行版本:
# 安装并加载所需包 install.packages(c("lme4", "visreg")) library(lme4) library(visreg) # 原始数据 y <- c(18, 0, 2, 0, 0, 0, 2, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0) x1 <- c(501, 1597, 1156, 1134, 1924, 507, 1022, 0, 92, 1729, 85, 963, 544, 1315, 2250, 1366, 458, 385, 930) x2 <- c(0, 92, 959, 1146, 900, 0, 276, 210, 980, 8, 0, 473, 0, 255, 1194, 542, 983, 331, 923) x3 <- c("site1", "site1", "site2","site2","site3","site3","site4","site4","site5","site5","site6","site7","site8","site9","site10","site11","site12","site13","site14") offset_1 <- c(59, 34, 33, 35, 60, 58, 59, 33, 34, 61, 58, 58, 55, 26, 26, 18, 26, 26, 26) data_1 <- data.frame(y,x1,x2,offset_1) # 拟合包含缩放变量的负二项混合模型 m1 <- glmer.nb(y ~ -1 + scale(x1) + scale(x2) + (1|x3) + offset(log(offset_1)), data=data_1) # 绘制包含所有需求元素的条件图 visreg(m1, "x1", # 直接指定原始变量名,visreg会自动匹配模型中的缩放版本 scale="response", # 展示原始响应尺度的结果 cond=list(offset_1=1), # 固定offset值 partial=TRUE, # 显示偏残差 rug=2, # 添加x轴数据分布rug图 line=list(lwd=0.5, col="black"), # 预测曲线样式 points=list(cex=1.4, lwd=0.1, col="black", pch=21), # 偏残差点样式 fill=list(col="lightgray")) # 置信区间填充色,增强可读性
2. 如何用visreg绘制预测响应及95%置信区间?
若只需展示预测曲线和95%置信区间,去掉partial=TRUE参数即可:
# 仅绘制预测曲线与95%置信区间 visreg(m1, "x1", scale="response", cond=list(offset_1=1), partial=FALSE, # 关闭偏残差展示 rug=2, line=list(lwd=1, col="darkblue"), fill=list(col="lightblue"))
如果需要按分组(如你的x3随机效应)分别绘制预测曲线,可使用by参数:
# 按site分组绘制预测曲线与置信区间 visreg(m1, "x1", scale="response", cond=list(offset_1=1), by="x3", line=list(lwd=0.8), fill=list(col="lightgray", alpha=0.5)) # 调整CI透明度,避免重叠杂乱
内容的提问来源于stack exchange,提问作者Sergio Nolazco
相关产品推荐
相关产品推荐

