2015-05-09 152 views
2

我正在尋找一些有關直方圖的指導。直方圖在R

讓我們假設我有此vecotr(稱爲CF)

[,1]  
[1,] 2275.351 
[2,] 2269.562 
[3,] 1925.700 
[4,] 1904.195 
[5,] 1974.039  

我使用以下公式在直方圖繪製該矢量。

hist(CF) 

讓我們現在假設我有一個屬性的10 000個模擬值估計值。我想用直方圖(或類似的圖)繪製這些圖,其中x軸返回概率。

這樣的劇情將給配有機會說明是這樣的:「有55%的概率,該財產的價值超過$ 15萬

Suggerstions

回答

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) 

陰謀我不知道您的詳細數據,所以我不能給你更精確的代碼。但基本上,你將不得不選擇一組合適的休息時間,然後應用上面的代碼。

+0

感謝。 你有我可以用來得到確切概率的代碼嗎?例如:CF位於1.2以下的可能性? – Andreas

+0

由於您正在使用經驗數據,因此無法以這種方式獲得確切的概率。但是你可以從你的數據中估計出這個概率。這就是計算CDF(應該是ECDF ...)所做的工作。所以你通過總和(CF <= b)/長度(CF)'來估計CF位於'b'之下的概率。 – Stibu

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)) 

enter image description here

如果你願意下載fitdistrplus包,裏面有很多花哨的版本,你可以玩:

library(fitdistrplus) 
windows() 
    plotdist(CF) 

enter image description here

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) 

enter code here

windows() 
    cdfcomp(list(fdn,fdw), legendtext=c("Normal","Weibull"), lwd=2) 

enter image description here