我正在尝试在ggplot的geom_smooth中实现一个theil-sen运算符。在一个理想的世界中,它会读到:geom_smooth(..., methods= "mblm")
。我似乎无法找到答案,也无法弄清楚如何为此自定义方法。任何建议,指针或代码帮助将不胜感激。
我想有效地将“mblm”替换为geom_smooth中的方法选项:
library(tidyverse)
library(mblm)
# Option 1 - adding 'mblm' into the methods directly
ggplot(mtcars, aes(qsec, wt))+
geom_point() +
geom_smooth(method='mblm')
# Option 2 - defining the Theil-Sen function outside
ts_fit <- mblm(qsec ~ wt, data = mtcars)
ggplot(mtcars, aes(qsec, wt))+
geom_point() +
geom_smooth( alpha=0,method=ts_fit)
两者都不起作用。我生成警告Warning message:
Computation failed in stat_smooth(): unused argument (weights = weight)
,这是geom_smooth行中的一个错误。任何帮助将不胜感激。
提前致谢, 内特
答案 0 :(得分:1)
我明白了。这是完成的答案。
# Option 2 - defining the Theil-Sen function outside
ts_fit <- mblm(qsec ~ wt, data = mtcars)
ggplot(mtcars, aes(qsec, wt))+
geom_point() +
geom_abline(intercept = coef(ts_fit)[1], slope = coef(ts_fit)[2])
更新: 找出了一种更可重复的方法来实现这一目标。
sen <- function(..., weights = NULL) {
mblm::mblm(...)
}
mtcars %>%
ggplot(aes(qsec, wt)) +
geom_point() +
geom_smooth(method = sen)