我正在寻找关于直方图的一些指导。
让我们假设我有这个vecotr(称为CF)
[,1]
[1,] 2275.351
[2,] 2269.562
[3,] 1925.700
[4,] 1904.195
[5,] 1974.039
我使用以下公式在直方图中绘制此矢量。
hist(CF)
现在让我们假设我有一个属性的10 000个模拟值估计值。我想在直方图(或类似的图)中绘制那些,其中x轴返回概率。
这样的情节将使med有机会陈述如下:"概率为55%,财产价值超过1500万美元。
Suggerstions?
答案 0 :(得分:5)
您可能需要的是累积分布函数(CDF)。它在y轴上有概率(不是x,如你所说),但由于这是表示所需信息的标准方法,因此最好使用此曲线。
作为一个例子,我用标准正态分布产生了10'000个值,然后构造了CDF:
CF <- rnorm(10000)
breaks <- seq(-4,4,0.5)
CDF <- sapply(breaks,function(b) sum(CF<=b)/length(CF))
plot(breaks,CDF,type="l")
从情节中,您可以例如以50%的概率读出,已经绘制了低于零的值。
如果您喜欢条形图,可以使用
进行绘图barplot(CDF,names.arg=breaks)
我不太详细了解您的数据,因此我无法为您提供更准确的代码。但基本上,你必须选择一组合理的休息时间,然后应用上面的代码。
答案 1 :(得分:1)
我同意@Stibu你想要的CDF。当您谈论一组已实现的数据时,我们将其称为empirical cumulative distribution function(ECDF)。在R中,对此的基本函数调用是?ecdf:
CF <- read.table(text="[1,] 2275.351
[2,] 2269.562
[3,] 1925.700
[4,] 1904.195
[5,] 1974.039", header=F)
CF <- as.vector(CF[,-1])
CF # [1] 2275.351 2269.562 1925.700 1904.195 1974.039
windows()
plot(ecdf(CF))
如果您愿意下载fitdistrplus软件包,可以使用许多花哨的版本:
library(fitdistrplus)
windows()
plotdist(CF)
fdn <- fitdist(CF, "norm")
fdw <- fitdist(CF, "weibull")
summary(fdw)
# Fitting of the distribution ' weibull ' by maximum likelihood
# Parameters :
# estimate Std. Error
# shape 13.59732 4.833605
# scale 2149.24253 74.958140
# Loglikelihood: -32.89089 AIC: 69.78178 BIC: 69.00065
# Correlation matrix:
# shape scale
# shape 1.0000000 0.3328979
# scale 0.3328979 1.0000000
windows()
plot(fdn)
windows()
cdfcomp(list(fdn,fdw), legendtext=c("Normal","Weibull"), lwd=2)