如何解决我将 stat_regline_equation 与 ggscatter 一起使用有没有办法指定系数的有效数字?
我发现使用 stat_regline_equation
(与 ggscatter
)对于快速将回归方程添加到图中非常有用,尤其是当我在多个方面进行多重回归时。但是,它似乎停留在 2 个有效数字上。我知道可以从 lm
中提取系数,然后用注释显示它们。但有多个方面似乎真的令人生畏和挑剔。工作中是否有一个功能(或已经在这里,我不知道)可以用 stat_regline_eq
来做到这一点?我有希望,因为您可以使用 stat_cor
为 r-square 和 p-values 之类的东西指定数字!任何建议或帮助将不胜感激。下面可重现的示例:
library(tidyverse)
library(ggpubr)
ggscatter(diamonds,x="carat",y="table",add="reg.line") +
facet_wrap(~color) +
stat_regline_equation(label.y=90)
summary(lm(table ~ carat,data=filter(diamonds,color=="D")))
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 56.46453 0.05438 1038.3 <2e-16 ***
carat 1.42911 0.07255 19.7 <2e-16 ***
如您所见,ggscatter
中 D 的截距偏离了 0.5。
解决方法
产生方程的底层函数是 .stat_lm
,这是 ggpubr
包中的一个未导出的函数。正如您所指出的,它产生的术语都包含 2 个有效数字。这被硬编码到函数本身中(您可以通过在打印绘图之前运行 debugonce(ggpubr:::.stat_lm)
亲自查看,并自己逐步执行该函数)。
如果您使用的是 RStudio,您可以在控制台中输入 trace(ggpubr:::.stat_lm,edit = TRUE)
并在弹出窗口中修改函数的代码。我没有为 R 使用其他 GUI,但我认为过程应该是相似的。您要更改的行是第 13-14 行。
使用钻石数据集进行演示。
diamonds %>%
filter(color == "D") %>%
ggscatter(x = "carat",y = "table",add = "reg.line") +
stat_regline_equation(label.y = 90)
函数中的原始第 13-14 行:
eq.char <- as.character(signif(polynom::as.polynomial(coefs),2))
替代方案(如果你想用小数点指定):
eq.char <- as.character(round(polynom::as.polynomial(coefs),1))
另一种选择(如果您想要 5 个有效数字而不是 2 个):
eq.char <- as.character(signif(polynom::as.polynomial(coefs),5))
当不再需要修改时,运行untrace(ggpubr:::.stat_lm)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。