ステップ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. x
どの分布に適合するかわからない場合、pdf(確率密度関数)を描画します。
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()
Step.4. グラフから、 の分布がx
ガンマ分布に非常に似ていることがわかるため、 fitdistr()
in パッケージを使用しておよびガンマ分布MASS
のパラメーターを取得します。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つはほぼ同じですが、なぜ当てはめグラフが実際の点にうまく当てはまらないのか、当てはめグラフに何か問題があるに違いないか、当てはめグラフと実際の点の描き方がまったく間違っています。 ?
質問 2: 確立したモデルのパラメーターを取得した後、どの方法でモデルを評価しますか?RSS(residual square sum)
線形モデルのようなもの、または のp-value
、shapiro.test()
およびks.test()
その他のテスト? 私は統計の知識が乏しいので、両方の質問から私を助けてください、ありがとう!(ps: 私は Google とスタックオーバーフローで何度も検索していますが、うまくいかないので、この質問は役に立たないので投票しないでください,Thx! )