绘制r中每个x的平均y线

时间:2018-11-15 23:23:10

标签: r plot

例如,让我们使用来自airquality的臭氧数据。我有离散的x值(风)和y值(臭氧)。臭氧中的某些y值具有相同的x值,因此我想取其中y值的平均值并作图。 例如

(5,10)

(5,20)

(5,40)

我们将绘制(5,23.33)。我将对所有x值执行此操作,并将它们全部连接。

我尝试了此操作,但是由于某种原因我看不到该行。

data(airquality)
plot(Ozone ~ Wind, data = airquality)
lines(weighted.mean(airquality$Ozone, airquality$Wind))

2 个答案:

答案 0 :(得分:1)

不清楚您为什么使用weighted.mean。但是,您可以看到为什么没有行:

weighted.mean(airquality$Ozone, airquality$Wind)
[1] NA

添加na.rm = TRUE参数仍将仅返回一个值:

weighted.mean(airquality$Ozone, airquality$Wind, na.rm = TRUE)
[1] 34.99825

也许直到现在我们对数据有了更好的了解之前,我们还是会坚持使用mean

ggplot2中使用stat_summary通过平均值绘制摘要非常简单:

library(ggplot2)

ggplot(airquality, aes(Wind, Ozone)) + 
  stat_summary(geom = "point", fun.y = mean)

我建议进行一些增强:

  • 显示原始数据点,以便我们知道有多少观测值进入平均值
  • 添加平滑线

    ggplot(airquality, aes(Wind, Ozone)) + 
      geom_point(color = "grey90") + 
      stat_summary(geom = "point", 
                   fun.y = mean, 
                   color = "red") + 
      geom_smooth()
    

结果:

enter image description here

答案 1 :(得分:1)

我不确定这是否是您要寻找的东西。

由于Wind是连续的,因此如果要按其分组,则必须以某种方式离散化。我选择通过将Wind按分位数或更具体地说是十分位数进行分组来实现。然后,我计算了Ozone的均值,并按这些Wind分位数进行分组。

data(airquality)

br <- quantile(airquality$Wind, seq(0, 1, length=11))

mid <- br[-length(br)] + diff(br)/2

wind.bin <- cut(airquality$Wind, breaks=br)

agg.oz <- aggregate(airquality$Ozone, list(wind.bin), mean, na.rm=TRUE)

colnames(agg.oz) <- c("Wind.mean", "Ozone.mean")
agg.oz[1] <- mid

plot(Ozone ~ Wind, data=airquality, pch=16, cex=0.6)
abline(v=br, col="#00000022", lty=2)
lines(agg.oz, col="red", type="o", pch=16)
legend("topright", legend="Mean ozone by \nwind quantile", 
  col="red", lwd=1.1, bty="n", cex=0.8)

enter image description here

如果您坚持将Wind视为离散值,则可以这样做

data(airquality)

airquality <- airquality[complete.cases(airquality),]

agg.oz <- aggregate(Ozone ~ Wind, data=airquality, mean, na.rm=TRUE)

colnames(agg.oz) <- c("Wind.mean", "Ozone.mean")

plot(Ozone ~ Wind, data=airquality, pch=16, cex=0.6)
lines(agg.oz, col="red", type="o", pch=16)

enter image description here