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

R语言flexplot包的R²与ICC结果为何与其他包存在差异?

关于flexplot包中iestimates()的ICC与R²计算逻辑解析

一、ICC差异的原因

你的猜测完全正确:flexplot::iestimates()输出的ICC始终基于仅截距的空模型,而非当前拟合的带预测变量的混合模型。

可以通过空模型验证这一点:

# 拟合仅截距的空模型
null_model <- lmer(darkness ~ 1 + (1|dojo_id), data = jedi)
# 手动计算空模型的ICC
null_var <- data.frame(VarCorr(null_model))$vcov
null_var[1]/sum(null_var)  # 结果为0.177,与iestimates输出完全一致

而performance::icc()计算的是当前模型下的ICC,即组间方差(dojo_id)占总方差(组间+固定效应解释方差+残差)的比例,这也是混合模型领域ICC的常规定义。

二、R²的计算逻辑与含义

flexplot的iestimates()输出的R²并非传统的边际/条件R²,而是将总方差分解到模型各成分(截距、固定效应、随机效应、残差)的比例,核心逻辑基于方差的平方和分解:

  • Residual R²:输出的0.390是残差方差占总方差的比例,代表模型未解释的变异部分。
  • (Intercept)的负R²:当加入预测变量(anger)后,截距的方差贡献被固定效应的解释力抵消,flexplot在计算单个成分的方差贡献时,会考虑变量加入后的增量影响,若某个成分(如截距)在引入其他变量后导致可解释方差减少,就会出现负的R²值,属于该分解方法下的正常现象。

对比performance包的R²定义:

  • 边际R²:仅统计固定效应(anger)解释的方差占总方差的比例
  • 条件R²:统计固定效应+随机效应共同解释的方差占总方差的比例

两者统计逻辑完全不同,因此结果不具备直接可比性。

三、总结

  • flexplot的ICC:反映无预测变量时组间变异的占比,而非当前模型的ICC。
  • flexplot的R²:是模型各组成部分的方差分解比例,与边际/条件R²定义差异显著,负截距R²是成分间方差抵消的结果。

内容的提问来源于stack exchange,提问作者hanna-without-h

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:42:11