【发布时间】:2016-05-26 08:01:16
【问题描述】:
我正在尝试将 beta 分布拟合到根据经验数据创建的直方图。
我遇到的问题是拟合分布远高于原始直方图中的条形。
原始数据超出 [0,1] 的范围,这是可以评估 beta 分布的范围,因此我重新调整原始数据,使其位于区间 [0,1] 内。
这是我的代码:
load("https://www.dropbox.com/s/c3psxx8jjbc20mo/data.Rdata?dl=0")
#create histogram with values normalized between 0 and 1
h <- hist((data-min(data)) / (max(data)-min(data)),lty="blank",col="grey")
#normalize the density so the y-axis goes from 0 to 1
h$density <- h$counts/max(h$counts)
#plot the results
plot(h,freq=FALSE,cex.main=1,cex.axis=1,yaxt='n',ylim=c(0,1.5),col='grey',lty='blank',xaxt='n')
axis(2,at=seq(0,1,0.5),labels=seq(0,1,0.5))
axis(1,at=seq(0,1,0.5),labels=seq(0,1,0.5))
#fit beta distribution
a <- (data-min(data)) / (max(data)-min(data))
a[a==1] <- 0.9999
a[a==0] <- 0.0001
fit.beta <- suppressWarnings(fitdistr(a, "beta", start = list( shape1=0.1, shape2=0.1 ) ))
#overlay curve from beta distribution
alpha <- fit.beta$estimate[1]
beta <- fit.beta$estimate[2]
b <- rbeta(length(data),alpha,beta)
lines(density(b))
我错过了什么?
【问题讨论】:
-
"将密度归一化,使 y 轴从 0 变为 1" 为什么要这样做?密度值不限于区间 [0, 1]。
-
查看stackoverflow.com/questions/37375961/… 获取与 Roland 评论相关的帖子。支持(
x值)和范围(y值)之间存在区别。 beta 分布的支持度在 0-1 区间。
标签: r histogram distribution