如何用 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 <- c(0, ..., ..)
,例如breaks = VectorOfBreakpoints
?
【参考方案1】:
按照以下步骤操作:
-
创建
h1
和h2
,
对中断向量进行组合和排序,
保留唯一值
并添加直方图。
使用问题中的(不可重现的)示例,
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绘制直方图或条形动画?