我正在使用 stat_regline_equation 和 ggscatter。有没有办法指定系数的有效数字?
I'm using stat_regline_equation with ggscatter. Is there a way to specify the significant digits of coefficients?
我发现使用 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 ***
如您所见,D 的 ggscatter
中显示的截距偏移了 0.5。
生成方程式的基础函数是 .stat_lm
,ggpubr
包中未导出的函数。正如您所注意到的,它产生的术语都包含 2 个有效数字。这是硬编码到函数本身中的(您可以在打印绘图之前通过 运行ning debugonce(ggpubr:::.stat_lm)
自己查看,然后自己逐步执行函数)。
如果您使用的是RStudio,您可以在控制台中输入trace(ggpubr:::.stat_lm, edit = TRUE)
,然后在弹出窗口中修改函数代码window。我没有为 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)
.
我发现使用 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 ***
如您所见,D 的 ggscatter
中显示的截距偏移了 0.5。
生成方程式的基础函数是 .stat_lm
,ggpubr
包中未导出的函数。正如您所注意到的,它产生的术语都包含 2 个有效数字。这是硬编码到函数本身中的(您可以在打印绘图之前通过 运行ning debugonce(ggpubr:::.stat_lm)
自己查看,然后自己逐步执行函数)。
如果您使用的是RStudio,您可以在控制台中输入trace(ggpubr:::.stat_lm, edit = TRUE)
,然后在弹出窗口中修改函数代码window。我没有为 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)
.