output.type="numeric" 在 ggpmisc::stat_poly_eq 中每个方面的系数
Coefficients per facet with output.type="numeric" in ggpmisc::stat_poly_eq
ggpmisc::stat_poly_eq
有一个选项 output.type = "numeric"
允许获得拟合模型参数的估计值。下面是我尝试将它与 facet_wrap
一起使用。每个方面我得到不同的 R²
,但两个方面的系数相同。我做错了什么,还是一个错误?
library(ggpmisc)
set.seed(4321)
x <- 1:100
y <- (x + x^2 + x^3) + rnorm(length(x), mean = 0, sd = mean(x^3) / 4)
my.data <- data.frame(x = x,
y = y,
group = c("A", "B"))
my.data[my.data$group=="A",]$y <- my.data[my.data$group=="A",]$y + 200000
formula <- y ~ poly(x, 1, raw = TRUE)
myformat <- "Intercept: %s\nSlope: %s\nR²: %s"
ggplot(my.data, aes(x, y)) +
facet_wrap(~ group) +
geom_point() +
geom_smooth(method = "lm", formula = formula) +
stat_poly_eq(formula = formula, output.type = "numeric",
mapping = aes(label =
sprintf(myformat,
formatC(stat(coef.ls)[[1]][[1, "Estimate"]]),
formatC(stat(coef.ls)[[1]][[2, "Estimate"]]),
formatC(stat(r.squared)))))
编辑
我们必须抓到面板号。奇怪的是 formatC(stat(as.integer(PANEL)))
returns 每个面的面板数:
但是 formatC(stat(coef.ls)[[stat(as.integer(PANEL))]][[1, "Estimate"]])
不起作用,因为这里 PANEL = c(1,2)
.
好的,我明白了。
ggplot(my.data, aes(x, y)) +
facet_wrap(~ group) +
geom_point() +
geom_smooth(method = "lm", formula = formula) +
stat_poly_eq(
formula = formula, output.type = "numeric",
mapping = aes(label =
sprintf(myformat,
c(formatC(stat(coef.ls)[[1]][[1, "Estimate"]]),
formatC(stat(coef.ls)[[2]][[1, "Estimate"]])),
c(formatC(stat(coef.ls)[[1]][[2, "Estimate"]]),
formatC(stat(coef.ls)[[2]][[2, "Estimate"]])),
formatC(stat(r.squared)))))
'ggpmisc' 的 0.3.2 版现已在 CRAN 中。本周早些时候提交。在文档中,我现在给出了一些使用包 'gginnards' 中的 geom_debug()
的示例,以查看 stats 返回的数据框(可与任何 ggplot stat 一起使用或单独使用)。对于您的示例,它将像这样工作:
library(ggpmisc)
library(gginnards)
set.seed(4321)
x <- 1:100
y <- (x + x^2 + x^3) + rnorm(length(x), mean = 0, sd = mean(x^3) / 4)
my.data <- data.frame(x = x,
y = y,
group = c("A", "B"))
my.data[my.data$group=="A",]$y <- my.data[my.data$group=="A",]$y + 200000
formula <- y ~ poly(x, 1, raw = TRUE)
myformat <- "Intercept: %s\nSlope: %s\nR²: %s"
ggplot(my.data, aes(x, y)) +
facet_wrap(~ group) +
geom_point() +
geom_smooth(method = "lm", formula = formula) +
stat_poly_eq(formula = formula, output.type = "numeric",
aes(label = ""),
geom = "debug")
地址注释中添加了以下示例:
ggplot(my.data, aes(x, y)) +
facet_wrap(~ group) +
geom_point() +
geom_smooth(method = "lm", formula = formula) +
stat_poly_eq(formula = formula, output.type = "numeric",
aes(label = ""),
summary.fun = function(x) {x[["coef.ls"]][[1]]})
仅打印 coefs.ls
.
我最近添加了 "numeric"
选项以响应建议,并且在这个例子中我注意到一个错误:aes(label = "")
不应该被需要,但是因为 aes(label = "")
的默认映射是需要的=16=]审美不对。我会在下一个版本中解决这个问题。
ggpmisc::stat_poly_eq
有一个选项 output.type = "numeric"
允许获得拟合模型参数的估计值。下面是我尝试将它与 facet_wrap
一起使用。每个方面我得到不同的 R²
,但两个方面的系数相同。我做错了什么,还是一个错误?
library(ggpmisc)
set.seed(4321)
x <- 1:100
y <- (x + x^2 + x^3) + rnorm(length(x), mean = 0, sd = mean(x^3) / 4)
my.data <- data.frame(x = x,
y = y,
group = c("A", "B"))
my.data[my.data$group=="A",]$y <- my.data[my.data$group=="A",]$y + 200000
formula <- y ~ poly(x, 1, raw = TRUE)
myformat <- "Intercept: %s\nSlope: %s\nR²: %s"
ggplot(my.data, aes(x, y)) +
facet_wrap(~ group) +
geom_point() +
geom_smooth(method = "lm", formula = formula) +
stat_poly_eq(formula = formula, output.type = "numeric",
mapping = aes(label =
sprintf(myformat,
formatC(stat(coef.ls)[[1]][[1, "Estimate"]]),
formatC(stat(coef.ls)[[1]][[2, "Estimate"]]),
formatC(stat(r.squared)))))
编辑
我们必须抓到面板号。奇怪的是 formatC(stat(as.integer(PANEL)))
returns 每个面的面板数:
但是 formatC(stat(coef.ls)[[stat(as.integer(PANEL))]][[1, "Estimate"]])
不起作用,因为这里 PANEL = c(1,2)
.
好的,我明白了。
ggplot(my.data, aes(x, y)) +
facet_wrap(~ group) +
geom_point() +
geom_smooth(method = "lm", formula = formula) +
stat_poly_eq(
formula = formula, output.type = "numeric",
mapping = aes(label =
sprintf(myformat,
c(formatC(stat(coef.ls)[[1]][[1, "Estimate"]]),
formatC(stat(coef.ls)[[2]][[1, "Estimate"]])),
c(formatC(stat(coef.ls)[[1]][[2, "Estimate"]]),
formatC(stat(coef.ls)[[2]][[2, "Estimate"]])),
formatC(stat(r.squared)))))
'ggpmisc' 的 0.3.2 版现已在 CRAN 中。本周早些时候提交。在文档中,我现在给出了一些使用包 'gginnards' 中的 geom_debug()
的示例,以查看 stats 返回的数据框(可与任何 ggplot stat 一起使用或单独使用)。对于您的示例,它将像这样工作:
library(ggpmisc)
library(gginnards)
set.seed(4321)
x <- 1:100
y <- (x + x^2 + x^3) + rnorm(length(x), mean = 0, sd = mean(x^3) / 4)
my.data <- data.frame(x = x,
y = y,
group = c("A", "B"))
my.data[my.data$group=="A",]$y <- my.data[my.data$group=="A",]$y + 200000
formula <- y ~ poly(x, 1, raw = TRUE)
myformat <- "Intercept: %s\nSlope: %s\nR²: %s"
ggplot(my.data, aes(x, y)) +
facet_wrap(~ group) +
geom_point() +
geom_smooth(method = "lm", formula = formula) +
stat_poly_eq(formula = formula, output.type = "numeric",
aes(label = ""),
geom = "debug")
地址注释中添加了以下示例:
ggplot(my.data, aes(x, y)) +
facet_wrap(~ group) +
geom_point() +
geom_smooth(method = "lm", formula = formula) +
stat_poly_eq(formula = formula, output.type = "numeric",
aes(label = ""),
summary.fun = function(x) {x[["coef.ls"]][[1]]})
仅打印 coefs.ls
.
我最近添加了 "numeric"
选项以响应建议,并且在这个例子中我注意到一个错误:aes(label = "")
不应该被需要,但是因为 aes(label = "")
的默认映射是需要的=16=]审美不对。我会在下一个版本中解决这个问题。