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

使用ggpmisc::stat_poly_eq()报错! out[1]<=out[2] is not TRUE的原因咨询

解决stat_poly_eq()报错out[1] <= out[2] is not TRUE的问题

这个错误是stat_poly_eq()在计算R²的置信区间时触发的——当计算得到的置信区间下限大于上限时,内置的检查逻辑就会抛出该错误。

为什么NA位置会影响结果?

你遇到的NA位置不同、结果不同的情况,核心在于剩余有效数据的分布对多项式拟合的稳定性影响:

  • 第一个数据集df去掉首行NA后,剩余7个点的bar值波动极大(正负跳变),配合默认的二次多项式拟合,导致计算R²置信区间时,非中心F分布的参数搜索出现异常(从警告Upper limit outside search range也能佐证),最终得到上下限反转的置信区间,触发错误。
  • 第二个数据集df_2去掉中间行NA后,剩余数据的拟合结果更稳定,置信区间计算未出现异常,因此能正常生成方程和R²标签。

可行的解决方法

方法1:降低多项式阶数

如果你的数据不需要二次拟合,指定degree=1做线性拟合,能避免复杂拟合带来的异常:

df |> 
  ggplot(aes(x = foo, y = bar)) +
  stat_poly_line(degree = 1) +
  stat_poly_eq(use_label(c("eq", "R2")), degree = 1)

方法2:跳过R²置信区间计算

通过设置R2.conf.level = NA,让stat_poly_eq()不计算置信区间,直接输出R²值:

df |> 
  ggplot(aes(x = foo, y = bar)) +
  stat_poly_line() +
  stat_poly_eq(use_label(c("eq", "R2")), R2.conf.level = NA)

方法3:优化数据集

从数据分布看,bar列存在多个极端跳变值,这类数据本身不适合二次拟合。如果业务允许,可以过滤异常点或补充更多数据,提升拟合稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:35:10