打印出对数回归 R 的系数

Print out coefficients of a log regression R

这是

的后续问题

我有一个如下所示的图,其中包含某些国家/地区的 x 和 y 的对数线性模型,我在 R 中使用 ggplot2ggflags:

问题是当我想在 stat_regline_equationstat_cor 的帮助下打印出回归方程、R2 和 p 值时,我得到的是线性模型的值,而不是我想使用的对数线性模型。

我该如何解决这个问题?

library(ggplot2)
library(ggflags)
library(ggpubr)
library(SciViews)
    
set.seed(123)

Data <- data.frame(
  country = c("at", "be", "dk", "fr", "it"),
  x = runif(5),
  y = runif(5)
)

ggplot(Data, aes(x = x, y = y, country = country, size = 11)) +
  geom_flag() +
  scale_country() +
  scale_size(range = c(10, 10)) +
  geom_smooth(aes(group = 1), method = "lm", , formula = y ~ log(x), se = FALSE, size = 1) +
  stat_regline_equation(label.y = 0.695, 
                          aes(group = 1, label = ..eq.label..), size = 5.5) +
  stat_cor(aes(group = 1,
                 label =paste(..rr.label.., ..p.label.., sep = "~`,`~")),
             label.y = 0.685, size = 5.5, digits= 1) 

编辑:我也曾尝试使用 ln(x) 而不是 log(x),但是当从中打印出系数时我也没有得到任何结果。

您需要做四件事:

  1. 将您的回归公式提供给 stat_regline_equation
  2. formula 参数
  3. 使用 subeq.label
  4. 中的“x”更改为“log(x)”
  5. stat_cor 的 x 美学更改为 log(x)
  6. 修复 coord_cartesian 内的 x 限制以补偿

ggplot(Data, aes(x = x, y = y, country = country, size = 11)) +
  geom_flag() +
  scale_country() +
  scale_size(range = c(10, 10)) +
  geom_smooth(aes(group = 1), method = "lm", , formula = y ~ log(x), 
              se = FALSE, size = 1) +
  stat_regline_equation(label.y = 0.695, label.x = 0.25,
                          aes(group = 1, label = sub("x", "log(x)", ..eq.label..)), 
                          size = 5.5,
                          formula = y ~ log(x),
                          check_overlap = TRUE, output.type = "latex") +
  stat_cor(aes(group = 1, x = log(x),
                 label =paste(..rr.label.., ..p.label.., sep = "~`,`~")),
             label.x = 0.25,
             label.y = 0.65, size = 5.5, digits= 1, check_overlap = TRUE) +
  coord_cartesian(xlim = c(0.2, 1))