我策划
set.seed(123)
X <- rnorm(100)
hist(X, freq = FALSE, main = "", xlab = "", ylab = "")
在 R 中,我尝试手动将
hist(X, freq = FALSE)
绘制为
breaks <- seq(-2.5, 2.5, by = 0.5)
freq_table <- table(cut(X, breaks = breaks, include.lowest = TRUE))
freq <- freq_table / sum(freq_table)
barplot(freq, main = "", xlab = "", ylab = "", names.arg = names(freq_table))
为什么两个图的ylabs不同?
顺便说一句,可以将它们绘制在一起进行比较
set.seed(123)
X <- rnorm(100)
par(mfrow = c(1, 2))
hist(X, freq = FALSE, main = "", xlab = "", ylab = "")
breaks <- seq(-2.5, 2.5, by = 0.5)
freq_table <- table(cut(X, breaks = breaks, include.lowest = TRUE))
freq <- freq_table / sum(freq_table)
barplot(freq, main = "", xlab = "", ylab = "", names.arg = names(freq_table))
当你计算
freq
时,你应该通过mean(diff(breaks))
标准化它
set.seed(123)
X <- rnorm(100)
par(mfrow = c(1, 2))
hist(X, freq = FALSE, main = "", xlab = "", ylab = "")
breaks <- seq(-2.5, 2.5, by = 0.5)
freq_table <- table(cut(X, breaks = breaks, include.lowest = TRUE))
freq <- freq_table / sum(freq_table) / mean(diff(breaks)) # this is the term that affects the `density`
barplot(freq, main = "", xlab = "", ylab = "", names.arg = names(freq_table))
你会看到的