18

如果我有一个向量(例如,v<-runif(1000)),我可以绘制它的直方图(它或多或少看起来像一条水平线,因为v它是来自均匀分布的样本)。

但是,假设我有一个向量及其相关的权重(例如,w<-seq(1,1000)除了v<-sort(runif(1000)))。例如,这是在table()更大数据集上的结果。

如何绘制新的直方图?(它应该看起来更像y=x本示例中的行)。

我想我可以table通过使用rep( hist(rep(v,w))) 来扭转效果,但这个“解决方案”看起来很丑陋且资源繁重(创建一个 size 的中间向量sum(w)),并且它只支持整数权重。

4

3 回答 3

33
library(ggplot2)
w <- seq(1,1000)
v <- sort(runif(1000))

foo <- data.frame(v, w)

ggplot(foo, aes(v, weight = w)) + geom_histogram()

在此处输入图像描述

于 2013-11-07T18:27:16.197 回答
14

plotrix有一个功能weighted.hist可以满足您的需求:

w<-seq(1,1000)
v<-sort(runif(1000))
weighted.hist(v, w)

<code>weighted.hist</code> 示例

于 2013-11-07T16:29:35.537 回答
5

weights包装中的另一种选择是wtd.hist()

w<-seq(1,1000) v<-sort(runif(1000)) wtd.hist(x=v,weight=w) 在此处输入图像描述

于 2016-03-22T12:26:36.503 回答