我对这个直方图有些问题。 我正在运行一定数量的beta模拟。然后我将结果的总和存储到一个数组中。然后我用直方图绘制数组,这显然分布为正常曲线。现在我想做的是取这个组合图的均值和标准差,并在其顶部绘制相应的正态分布图。 这是我到目前为止的代码:
simulation = function (n,days,alpha,beta,limsx,limdx) {
vec= rep(NA, n)
for (i in 1:n) {
w=rbeta(days,alpha,beta,ncp=0)
vec[i] = sum(limsx+w*(limdx-limsx))
}
hh=hist(
vec,
breaks=round(n/10),
freq=TRUE,
xlim=c(
floor(min(vec)),
ceiling(max(vec)),
col="grey"
)
sample_mean=mean(vec)
sample_sd=sd(vec)
ss=sum (diff (hh$breaks)*hh$counts)
curve(
dnorm(
x/(limdx-limsx),
mean(vec),
sd(vec),
)*ss/(limdx-limsx),
add=TRUE,
col="red"
)
}
结果我得到了这个
底部的扁线应该是我的正态分布。 谁能让它发挥作用并告诉我我做错了什么?
非常感谢你提前和抱歉,如果这个问题很愚蠢:我是R的初学者并且很快就会完成我的论文,所以我真的不能完成R的各个方面。
答案 0 :(得分:1)
你的问题只是缩放!
您只需将freq
的{{1}}参数从hist
更改为TRUE
:
FALSE
)
通过这样做,您可以在y轴上绘制密度而不是频率(每个箱子的出现次数)。