[英]Histogram plot in R
我正在尋找有關直方圖的一些指導。
假設我有這個vecotr(稱為CF)
[,1]
[1,] 2275.351
[2,] 2269.562
[3,] 1925.700
[4,] 1904.195
[5,] 1974.039
我使用以下公式將此向量繪制為直方圖。
hist(CF)
現在讓我們假設我有一個屬性的10000個模擬值估計。 我想在x軸返回概率的直方圖(或類似圖)中繪制這些圖。
這樣的陰謀將使我有機會陳述類似的東西:“以55%的概率,該房產的價值超過了1500萬美元。
Suggerstions?
您可能想要的是累積分布函數(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)
我不了解您的詳細數據,因此我無法為您提供更精確的代碼。 但基本上,您將必須選擇一組合理的中斷,然后應用上面的代碼。
我同意@Stibu,您想要CDF。 當您談論一組已實現的數據時,我們將其稱為經驗累積分布函數 (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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.