[英]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=2
, rate=0.2
,我使用函數fitdistr()
得到的參數是shape=2.01
, rate=0.20
。 這兩個幾乎是一樣的,但為什么擬合圖不能很好地擬合實際點,在擬合圖中一定有問題,或者我繪制擬合圖的方式和實際點是完全錯誤的,我應該怎么做?
問題2:在我得到我建立的模型的參數后,我以哪種方式評估模型,如線性模型的RSS(residual square sum)
,或shapiro.test()
, ks.test()
的p-value
ks.test()
和其他測試? 我的統計知識很差,請幫我解決這兩個問題,謝謝!(ps:我在谷歌和stackoverflow上搜索了很多次,但它不起作用,所以不投票這個問題沒用,謝謝! )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.