【发布时间】:2017-12-05 12:18:51
【问题描述】:
我已经发现了很多问题,但不知何故它并没有真正帮助我。我不明白如何更改 ggplot2 中密度直方图中的 binwidth,以便概率总和为 1。似乎只有在 binwidth 正好为 1 时才有效。 这是一个例子:
set.seed(1)
df = data.frame("data" = runif(1000, min=0, max=100))
a = ggplot(data = df, aes(x = data))+
geom_histogram(aes(y=..density..),colour="black", fill = "white",
breaks=seq(0, 100, by = 50))
b = ggplot(data = df, aes(x = data))+
geom_histogram(aes(y =..density..),
breaks=seq(0, 100, by = 30),
col="black",
fill="white")
c = ggplot(data = df, aes(x = data))+
geom_histogram(aes(y =..density..),
breaks=seq(0, 100, by = 10),
col="black",
fill="white")
d = ggplot(data = df, aes(x = data))+
geom_histogram(aes(y =..density..),
breaks=seq(0, 100, by = 1),
col="black",
fill="white")
grid.arrange(a,b,c,d, ncol= 2)
如果你看概率轴,你可以看到前三个图肯定是错误的。这些不是正确的直方图,因为 bin 总和不等于 1。y 轴甚至不会根据直方图 a、b、c 或 d 发生显着变化。我还尝试用“binwidth”命令替换“breaks”命令,但情况更糟。 我还想知道如何计算直方图的单个 bin 的概率来证明它的总和是否为 1?
感谢您的帮助。
【问题讨论】:
-
您应该检查 y 轴上的密度值代表什么。这不是概率。在许多情况下,这些值可以是 1。请尝试改用
aes(y=..count../sum(..count..))。 -
这里有一些有用的信息:stats.stackexchange.com/questions/4220/…