打印出对数回归 R 的系数
Print out coefficients of a log regression R
这是
的后续问题
我有一个如下所示的图,其中包含某些国家/地区的 x 和 y 的对数线性模型,我在 R 中使用 ggplot2
和 ggflags
:
问题是当我想在 stat_regline_equation
和 stat_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),但是当从中打印出系数时我也没有得到任何结果。
您需要做四件事:
- 将您的回归公式提供给
stat_regline_equation
的 formula
参数
- 使用
sub
将 eq.label
中的“x”更改为“log(x)”
- 将
stat_cor
的 x 美学更改为 log(x)
- 修复
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))
这是
我有一个如下所示的图,其中包含某些国家/地区的 x 和 y 的对数线性模型,我在 R 中使用 ggplot2
和 ggflags
:
问题是当我想在 stat_regline_equation
和 stat_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),但是当从中打印出系数时我也没有得到任何结果。
您需要做四件事:
- 将您的回归公式提供给
stat_regline_equation
的 - 使用
sub
将eq.label
中的“x”更改为“log(x)”
- 将
stat_cor
的 x 美学更改为log(x)
- 修复
coord_cartesian
内的 x 限制以补偿
formula
参数
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))