我有一个数据集,为此我绘制了一个回归图(使用 ggplot2
的 stat_smooth
):
ggplot(data = mydf, aes(x=time, y=pdm)) + geom_point() + stat_smooth(col="red")
我还想使用相同的方法获得分位数(如果它更简单,只有四分位数就可以)。我设法得到的是以下内容:
ggplot(data = mydf, aes(x=time, y=pdm, z=surface)) + geom_point() + stat_smooth(col="red") + stat_quantile(quantiles = c(0.25,0.75))
不幸的是,我不能将
method="loess"
放在 stat_quantile()
中,如果我没记错的话,这将解决我的问题。(如果不清楚,所需的行为 = 分位数的非线性回归,因此 Q25 和 Q75 的回归(分别)低于和高于我的红色曲线(并且 Q50,如果绘制,将是我的红色曲线))。
谢谢
最佳答案
stat_quantile
默认情况下,为每个 x 值绘制第 25 个和第 75 个百分位数的最佳拟合线。 stat_quantile
使用 rq
包中的 quantreg
函数(隐式地,method="rq"
调用中的 stat_quantile
)。据我所知,rq
不做 loess 回归。但是,您可以使用其他灵活的函数进行分位数回归。这里有两个例子:
B样条:
library(splines)
stat_quantile(formula=y ~ bs(x, df=4), quantiles = c(0.25,0.75))
二阶多项式:
stat_quantile(formula=y ~ poly(x, 2), quantiles = c(0.25,0.75))
stat_quantile
仍在使用 rq
,但 rq
接受上面列出的类型的公式(如果您不提供公式,则 stat_quantile
隐式使用 formula=y~x
)。如果您在 geom_smooth
中使用与 stat_quantile
相同的公式,您将拥有用于分位数和平均期望的一致回归方法。关于r - 散点图的连续分位数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36315152/