Ответ 1
Пакет plotrix
имеет функцию weighted.hist
, которая делает то, что вы хотите:
w<-seq(1,1000)
v<-sort(runif(1000))
weighted.hist(v, w)
Если у меня есть вектор (например, v<-runif(1000)
), я могу построить его гистограмму (которая будет выглядеть более или менее как горизонтальная линия, потому что v
является образцом из равномерного распределения).
Однако предположим, что у меня есть вектор и связанные с ним веса (например, w<-seq(1,1000)
в дополнение к v<-sort(runif(1000))
). Например, это результат table()
в гораздо большем наборе данных.
Как построить новую гистограмму? (в этом примере он должен выглядеть не так, как строка y=x
).
Я думаю, что я мог бы изменить эффекты table
, используя rep
(hist(rep(v,w))
), но это "решение" кажется уродливым и ресурсоемким (создает промежуточный вектор размера sum(w)
), и это только поддерживает целые веса.
Пакет plotrix
имеет функцию weighted.hist
, которая делает то, что вы хотите:
w<-seq(1,1000)
v<-sort(runif(1000))
weighted.hist(v, w)
library(ggplot2)
w <- seq(1,1000)
v <- sort(runif(1000))
foo <- data.frame(v, w)
ggplot(foo, aes(v, weight = w)) + geom_histogram()
Альтернативой из пакета weights
является wtd.hist()