【问题标题】:median regression line in ggplot2ggplot2中的中值回归线
【发布时间】:2018-10-13 03:24:53
【问题描述】:

我正在尝试使用 ggplot 来拟合中值回归线。这使用了 quantreg 包的 rq() 函数。数据是来自 HSAUR3 包的云数据。这是我的代码:

seeding.no <- predict(rq(rainfall ~ sne, data = clouds, subset = seeding == "no"))
seeding.yes <- predict(rq(rainfall ~ sne, data = clouds, subset = seeding == "yes"))
clouds.predcit <- data.frame(Rainfall=clouds$rainfall, No=seeding.no, Yes=seeding.yes)

ggplot(clouds, aes(x=sne, y=rainfall, colour=clouds$seeding, shape=clouds$seeding)) + 
  geom_point(size=2) +
  labs(title="Rainfall vs S-Ne Criterion", x="S-Ne Criterion", y="Rainfall") +
  scale_color_manual(values=c("blue", "red")) + 
  scale_shape_manual(values=c(1,2)) +
  geom_line(color="blue",data=clouds.predcit, aes(x=No, y=Rainfall)) +
  geom_line(color="red",data=clouds.predcit, aes(x=Yes, y=Rainfall)) +
  theme_minimal()

这是我得到的:

这就是我想要得到的:

我的代码有什么问题?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    我用过:

    geom_quantile(quantiles = 0.5)
    

    并让它工作。毕竟不需要预测。

    【讨论】:

      【解决方案2】:

      我认为你使用了错误的 geom,使用 geom_smooth 会更幸运。这有很多选项,但您可能需要 +geom_smooth(method="lm")。即使安装了 HSAUR3 包,我也无法让您的代码按原样运行。

      试试这个

      seeding.no <- predict(rq(rainfall ~ sne, data = clouds, subset = seeding == "no"))
      seeding.yes <- predict(rq(rainfall ~ sne, data = clouds, subset = seeding == "yes"))
      clouds.predcit <- data.frame(Rainfall=clouds$rainfall, No=seeding.no, Yes=seeding.yes)
      
      ggplot(clouds, aes(x=sne, y=rainfall, colour=clouds$seeding, shape=clouds$seeding) + 
        geom_point(size=2) +
        labs(title="Rainfall vs S-Ne Criterion", x="S-Ne Criterion", y="Rainfall") +
        scale_color_manual(values=c("blue", "red")) + 
        scale_shape_manual(values=c(1,2)) +
        geom_smooth(method="lm") +
        theme_minimal()
      

      如果您想轻松地重命名您的图例,只需将 colour = "your legend title" 添加到 labs() 参数中。

      【讨论】:

      • Using method="lm" 创建一个使用均值的线性回归模型,而我希望使用中值回归模型。你附上云数据了吗? data("clouds")
      • 我的错,你是对的,我误读了你的原始帖子。附上数据,只是找不到函数“rq”,我假设它来自包“quantreg”。使用 quantreg 包,我可以让它在没有错误的情况下运行,然后我会使用 geom_quantile() 而不是 geom_smooth。 edit 我看到您自己已经找到了解决方案。干得好!
      猜你喜欢
      • 1970-01-01
      • 2016-11-07
      • 2020-01-12
      • 2015-01-02
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      相关资源
      最近更新 更多