【问题标题】:mean and standard deviation per bin in histogram直方图中每个 bin 的均值和标准差
【发布时间】:2012-10-15 01:41:27
【问题描述】:

我在 R 中有一些代码,可以在 R 中生成一个关于不同时间点机器的不同功率(瓦特)值频率的直方图。

直方图被划分为“n”个 bin 或单元格。

有没有一种简单的方法可以计算每个 bin 的平均值和标准差?

例如,

bin 1, mean = 0.5, sd=0.01
bin 2, mean = 3.5, sd=0.23
bin 3, mean = 4.5, sd=0.35

有什么想法吗?

【问题讨论】:

  • 你确定你有直方图吗?直方图绘制有多少个数据点落入特定区间。您的问题听起来像是拥有按时间箱索引的数据(频率)。在这种情况下,一个相当简单的by() 应该可以解决您的问题。您能否发布一个具有代表性的数据样本?

标签: r histogram mean bin standard-deviation


【解决方案1】:

是的。因此,假设您有一个数据框的向量或列,用于观察机器的功率,P

P <- c(100,80,100,120,80)

所以把它分成你想要的垃圾箱:

C <- cuts(P, breaks=3)

将中断标签分解为“数字”

> C <- as.numeric(C)
> C
[1] 2,1,3,2,1

现在您可以在每次休息时获取信息

by(P, C, mean)
by(P, C, sd)

或全部:

by(P, C, function(x) c(mean(x), sd(x))

而且对读者更友好:

by(P, C, function(x) paste(c("Mean : ", "SD : "), c(mean(x), sd(x)), sep=" | "))

【讨论】:

  • 谢谢!这是我最终做的...我是 R 的新手,所以这可能很奇怪... histmdata = hist(mdata$power, plot = FALSE) break = histmdata[[1]] averages = c(mean(子集(mdata$power, mdata$powerbreaks[1]))) stdevs = c(sd(subset(mdata$power, mdata$powerbreaks [1]))) bin_summary = data.frame(averages, stdevs)
猜你喜欢
  • 1970-01-01
  • 2014-01-07
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
相关资源
最近更新 更多