我发现使用stat_regline_equation
(与ggscatter
一起)对于快速将回归方程添加到绘图中非常有用,特别是当我对多个方面进行多个回归时。然而,它似乎停留在两个重要数字的条件下。我知道从lm
中提取系数并用注释显示它们是可能的。但是对于多个方面来说,这似乎是令人畏惧和挑剔的。是否有可能在工作中(或者已经有一个我不知道的特性)来使用stat_regline_eq
来完成这个任务?我有希望,因为您可以指定数字与stat_cor
的事情,如r-平方和p-值!如有任何建议或帮助,将不胜感激。可复制的例子如下:
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。
发布于 2021-02-13 08:44:33
生成方程的底层函数是.stat_lm
,它是来自ggpubr
包的未导出函数。正如您已经注意到的,它产生的术语都包含两个重要的数字。这是硬编码到函数本身(您可以通过运行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)
。
https://stackoverflow.com/questions/66177005
复制相似问题