3

我正在尝试为一组数据绘制分位数回归线。我想扩展分位数回归线geom_quantile(),以显示它们如何预测类似于使用stat_smooth()设置为 TRUE 的全范围参数。但是,对于geom_quantile(). 例如,请参见下文:

data("mpg")
library(ggplot2)
library(dplyr)

m <-
   ggplot(mpg, aes(displ,1/ hwy)) +
   geom_point()
m + geom_quantile() +
   scale_x_continuous(limits = c(1,9),
                      breaks = waiver(),
                      n.breaks = 8)

p <-
   ggplot(mpg, aes(displ,1/ hwy)) +
   geom_point()
p + stat_smooth(method = lm, fullrange = TRUE, se = FALSE, color = "red") +
   scale_x_continuous(limits = c(1,9),
                      breaks = waiver(),
                      n.breaks = 8)

m1 <-
   ggplot(mpg, aes(displ,1/ hwy)) +
   geom_point()
m1 + geom_quantile(fullrange = TRUE) +
   scale_x_continuous(limits = c(1,9),
                      breaks = waiver(),
                      n.breaks = 8)

第一部分m给出了数据集的分位数回归线。对于p,我可以将预测的线性回归线显示为 9 的位移。m1尽管如此,我无法扩展回归线。我有办法告诉我ggplot做这种预测吗?当然,更简单是可取的,但我会考虑任何建议。提前致谢!

4

1 回答 1

2

在引擎盖下,geom_quantile使用quantreg::rq,并且直接使用它来产生相同的效果非常简单geom_abline

mod  <- quantreg::rq(I(1/hwy) ~ displ, tau = c(0.25, 0.5, 0.75), data = mpg)
r_df <- setNames(as.data.frame(t(coef(mod))), c("intercept", "gradient"))

m1 + geom_abline(data = r_df, aes(slope = gradient, intercept = intercept)) +
     scale_x_continuous(limits = c(1,9),
                      breaks = waiver(),
                      n.breaks = 8)

在此处输入图像描述

于 2022-02-17T20:24:52.877 回答