计算窗口中的平均y值

时间:2014-02-10 13:08:55

标签: r plot ggplot2

使用mtcars数据集(ggplot2)我做了

library(ggplot2)
plot(mtcars$mpg, mtcars$qsec)

现在我想在不同的点计算sd但是使用windows。因此,要在10到15,15到20,20到25之间的间隔内获得sd估计,依此类推。 Afterwars我想在每个窗口中显示差异作为错误栏。

1 个答案:

答案 0 :(得分:0)

这是一种方法。您可以根据数据框中的新列计算所需的值。然后计算均值和标准。每个组的错误,然后绘制平均值并将错误栏覆盖在顶部。

buckets <- c(10,15,20,25,30,35)
mtcars$mpg_bucket <- cut(mtcars$mpg, buckets) #create a new column

#group by bucket and calculate mean qsec
mean_qsec <- tapply(mtcars$qsec, mtcars$mpg_bucket, mean)

#se for bucket = sd/ sqrt(count)
stderr <- tapply(mtcars$qsec, mtcars$mpg_bucket, function(x){sd(x)/sqrt(length(x))})

# Define the top and bottom of the errorbars
limits <- aes(ymax = mean_qsec + stderr, ymin= mean_qsec - stderr)

df <- data.frame( mean_qsec, stderr)
df$buckets <- row.names(df)
ggplot(df, aes(x=buckets, y=mean_qsec)) + geom_bar(stat="identity", fill="gray70") + 
  geom_errorbar(limits,width=0.25)

这会产生: enter image description here