簡體   English   中英

如何在一個圖中繪制擬合圖和伽瑪分布的實際圖?

[英]How to draw fitted graph and actual graph of gamma distribution in one plot?

第1步。 加載所需的包。

library(ggplot2)
library(MASS)

第2步。 生成適合伽瑪分布的10,000個數字。

x <- round(rgamma(100000,shape = 2,rate = 0.2),1)
x <- x[which(x>0)]

STEP.3開始。 繪制pdf(概率密度函數),假設我們不知道哪個分布符合x

t1 <- as.data.frame(table(x))
names(t1) <- c("x","y")
t1 <- transform(t1,x=as.numeric(as.character(x)))
t1$y <- t1$y/sum(t1[,2])
ggplot() + geom_point(data = t1,aes(x = x,y = y)) + theme_classic()

在此輸入圖像描述

第四步。 從圖中我們可以知道x的分布與伽馬分布非常相似,因此我們在MASS包中使用fitdistr()來獲得shape和伽馬分布rate的參數。

fitdistr(x,"gamma") 
##       output 
##       shape           rate    
##   2.0108224880   0.2011198260 
##  (0.0083543575) (0.0009483429)

Step.5。 在同一個圖中繪制實際點(黑點)和擬合圖(紅線),這里是問題,請先查看圖。

ggplot() + geom_point(data = t1,aes(x = x,y = y)) +     
geom_line(aes(x=t1[,1],y=dgamma(t1[,1],2,0.2)),color="red") + 
theme_classic()

在此輸入圖像描述

問題1:實參數是shape=2rate=0.2 ,我使用函數fitdistr()得到的參數是shape=2.01rate=0.20 這兩個幾乎是一樣的,但為什么擬合圖不能很好地擬合實際點,在擬合圖中一定有問題,或者我繪制擬合圖的方式和實際點是完全錯誤的,我應該怎么做?

問題2:在我得到我建立的模型的參數后,我以哪種方式評估模型,如線性模型的RSS(residual square sum) ,或shapiro.test()ks.test()p-value ks.test()和其他測試? 我的統計知識很差,請幫我解決這兩個問題,謝謝!(ps:我在谷歌和stackoverflow上搜索了很多次,但它不起作用,所以不投票這個問題沒用,謝謝! )

由於某種原因,您的擬合線似乎正好是10倍到高:

ggplot() + geom_point(data = t1,aes(x = x,y = y)) +     
  geom_line(aes(x=t1[,1],y=(dgamma(t1[,1],2,0.2))/10),color="red") + 
  theme_classic()

給出了完美的契合: 在此輸入圖像描述

正如jbaums所說,這是由每個dx的密度在這種情況下為0.1引起的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM