You need to enable JavaScript to run this app. 线性混合加权回归R²的95%CI计算时bootstrap上下界相同问题求助
优惠活动
大模型
产品
解决方案
定价
更多

线性混合加权回归R²的95%CI计算时bootstrap上下界相同问题求助

问题核心原因

你写的bootstrap统计函数存在逻辑错误:函数定义中接收了data(原始数据集)和indices(重抽样索引)两个参数,但拟合混合模型时硬编码调用了全局的原始数据集mtcars,完全没有使用重抽样得到的索引对应的子样本。每次迭代拟合的都是同一个完整数据集的模型,所有重复计算得到的R²值完全一致,最终得到的置信区间上下界自然相等。

另外你的示例代码还存在一个隐藏问题:lme()函数属于nlme包,但你只加载了lme4包,运行时会报错。

修正后可正常运行的代码
library(nlme)
library(boot)
library(MuMIn)

# 修正统计函数逻辑:使用重抽样得到的子样本拟合模型
foo <- boot(mtcars, function(data, indices) {
  # 提取重抽样子样本
  sub_data <- data[indices, ]
  mod <- lme(mpg ~ wt, data = sub_data, 
             random = ~1|gear, weights = ~carb)
  # 此处取边际R²,如需条件R²改为取索引[2]即可
  return(r.squaredGLMM(mod)[1])
}, R = 1000)

# 原始全样本的R²值
foo$t0
# 计算95%分位数置信区间
quantile(foo$t, c(0.025, 0.975))
优化方案建议
  • 可以采用分层bootstrap提升结果稳定性:按照随机效应的分组变量gear分层抽样,避免重抽样时某组完全没有样本导致模型拟合失败,只需要在boot()函数中添加参数strata = mtcars$gear即可。
  • 除了MuMIn包的r.squaredGLMM(),你也可以使用performance包的r2()函数计算混合模型的R²,二者计算逻辑一致,输出结果没有差异。
  • 加权混合模型的R²为加权后的拟合优度,不要直接和非加权模型的R²做横向对比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 23:45:03