我想创建一个正态分布的直方图。我所知道的是,我有 120名学生,可以在考试中达到从0到70分。如何绘制这样的直方图?
答案 0 :(得分:1)
基本上你在谈论截断分发。有关详细信息,建议您阅读this,this和this。
要回答你的问题,这就是你需要做的事情(我给出了任意选择的均值和标准差。Reference manual说如果没有指定均值或标准差,则该函数假设默认值为0和1,分别),
install.packages("truncnorm")
library(truncnorm)
grades <- rtruncnorm(120, a=0, b=70, mean=68, sd=2)
hist(grades)
如果要在正态分布后生成一组随机整数,可以对它们进行舍入。或者,在大n的情况下,您可以近似正态分布到二项分布,这是观察的数量。 This回答了这个问题。
编辑:
set.seed(123)
df <- data.frame(grades = rtruncnorm(120, a=0, b=70, mean=35, sd=5))
ggplot(df, aes(grades)) +
geom_histogram(aes(y = ..density..)) +
stat_function(fun = dnorm,
args = list(mean = mean(df$grades), sd = sd(df$grades)),
lwd = 2,
col = 'red')