如何用 R 平均两个(或多个直方图)

Posted

技术标签:

【中文标题】如何用 R 平均两个(或多个直方图)【英文标题】:How to average two (or multiple histograms) with R 【发布时间】:2021-11-07 01:50:17 【问题描述】:

谁能告诉我如何用 R 平均两个直方图?

我遇到了 HistogramTools 包和 AddHistograms 函数:

h1<-hist(na.omit(a[,1]),breaks = 100,plot=F)
h2<-hist(na.omit(a[,2]),breaks = 100,plot=F)
> AddHistograms(h1,h2)
Error in .AddManyHistograms(x, main = main) : 
  Histograms must have identical breakpoints for this operation.

但我总是遇到同样的错误 Histograms must have identical breakpoints for this operation?有人可以解释为什么吗? 我猜是 a[,1] 和 a[,2] 的长度不同,与 h1 和 h2 的输出相同(即 我没有相同的长度用于 h1 和 h2 之间的“breaks”、“mids”、“counts”)。

你能告诉我如何使用这个函数或其他任何 R 函数来平均我的两个直方图吗?

【问题讨论】:

也许你可以试试hist(c(a[,1],a[,2])),但如果没有可重现的例子,很难说。您还应该通过“平均两个直方图”来指定您的意图。 您能提供一些数据吗?您是否尝试为每个直方图设置相同的断点向量VectorOfBreakpoints &lt;- c(0, ..., ..),例如breaks = VectorOfBreakpoints 【参考方案1】:

按照以下步骤操作:

    创建h1h2, 对中断向量进行组合和排序, 保留唯一值 并添加直方图。

使用问题中的(不可重现的)示例,

h1 <- hist(na.omit(a[,1]), plot = FALSE)
h2 <- hist(na.omit(a[,2]), plot = FALSE)

brks <- sort(c(h1$breaks, h2$breaks))
brks <- unique(brks)

h1 <- hist(na.omit(a[,1]), breaks = brks, plot = FALSE)
h2 <- hist(na.omit(a[,2]), breaks = brks, plot = FALSE)

h12 <- AddHistograms(h1, h2)
plot(h12)

还要注意na.omit 并不是真正需要的,hist 无论如何都会丢弃它们。

【讨论】:

以上是关于如何用 R 平均两个(或多个直方图)的主要内容,如果未能解决你的问题,请参考以下文章

如何用matplotlib ArtistAnimation绘制直方图或条形动画?

如何用matplotlib ArtistAnimation绘制直方图或条形动画?

如何用matlab画直方图

如何用excel做频数分布直方图和频数分布折线图

如何用Excel画直方图

如何用 sklearn 制作一维高斯混合的直方图?