向我的数据集添加标准误差列,以便绘制误差线

Posted

技术标签:

【中文标题】向我的数据集添加标准误差列,以便绘制误差线【英文标题】:Adding a standard error column to my data set so error bars can be plotted 【发布时间】:2019-12-04 18:16:44 【问题描述】:
Data <- data.frame(id, consumption, Day, Hour)
#The data is a large time series data set with thousands of valued per household id.
#eg. 
consumption <- c(99, 119, 130, 110, 109, 118) etc.
#Hour and Day were calculated from the Date Time of the dataset.

我使用 ggplot2 创建了两个单独的折线图,用于表示一系列家庭的总平均能源消耗和下午 4 点到 8 点之间的平均能源消耗。我希望添加与每个值的标准误差相对应的值特定(非恒定)误差线。我不确定如何将标准错误列添加到与每个单独值相对应的数据集中。如果你能使用管道那就太好了!

我在网上寻找了不同的方法来计算单个标准误差并用它们添加一列,但是没有任何效果。这可能是因为我没有绘制原始数据,而是绘制了已汇总的数据(总和和平均值)。两个图 1) 和 2) 对于相同的日期会有不同的误差线。我已经在最后的情节中添加了一张图片。

这些是我的情节: 1) 总体每日平均消费量

Data %>%
 group_by(id, Day)%>% 
#id is household identification
  summarise(DailyCons = sum(consumption))%>% 
#Sum for total daily consumption per household
group_by(Day)%>%
 summarise(MeanDailyCons = mean(DailyCons))%>% 
#Find mean daily consumption for all households
  ggplot()+
  geom_line(aes(x= Day, y= MeanDailyCons))

2) 16:00-20:00 之间的每日平均值

Data %>%
  mutate(TimeInt = ifelse(Hour %in% c(16, 17, 18, 19, 20), Hour, NA))%>% 
#removing Hours outside of range 16-20
  group_by(id, TimeInt, Day) %>%
  na.omit(TimeInt)%>%
  summarise(sumPeakCons = sum(consumption)) %>% 
#sum for total consumption for each hour in interval for each house
  group_by(bmg_id, Day) %>%
  summarise(PeakCons = sum(sumPeakCons)) %>% 
#sum for total daily consumption in interval for each house
  group_by(Day) %>%
  summarise(DailyPeakCons = mean(PeakCons)) %>% 
# Daily mean consumption for all houses
  ggplot()+
  geom_line(aes(x= Day, y= DailyPeakCons))

包含一张图片以显示所需的结果。

https://i.stack.imgur.com/WDT8Z.png

【问题讨论】:

【参考方案1】:

按天汇总数据后无法添加标准误差是正确的。任何尝试的函数都只会收到平均值和日期时间,不足以产生错误。对原始数据进行汇总时,必须加上标准误差。

在您的总结语句中添加另一列:

summarise(DailyPeakCons = mean(PeakCons),DailyPeakConsErr = sd(PeakCons)) %>%

这将给出每天高峰消费的标准偏差。

【讨论】:

您好,感谢您的回复。我已经尝试过了,但由于某种原因,它给出了错误消息“summarise_impl(.data,dots)中的错误:未找到评估错误'PeakCons'”。我对此有点困惑,好像我删除了代码运行的行并且它识别了 PeakCons。 如果我用 summarise(sd()) 替换 summarise(mean()) 它会运行,但它不能一起工作。 @EllisR8 我更正了答案的语法,您可以将多个列定义放在一个汇总函数中。 我刚刚用你编辑过的代码试了一下,它成功了!非常感谢!

以上是关于向我的数据集添加标准误差列,以便绘制误差线的主要内容,如果未能解决你的问题,请参考以下文章

三种工具绘制errorbar图

r语言计算均方误差怎么判断

【R语言】绘制误差线图+数据分布+显著性分析

犰狳函数的不同最小二乘误差

非常小的负均方误差

epoch 内的平均误差和误差标准差未正确更新 - PyTorch