パッケージ「vcd」には、「離散データの適合度テスト」として説明されている「goodfit」機能があります。
G.fit <- goodfit(x, type = "nbinomial", par = list(size = 1))
以前の質問で投稿したコードを使用するつもりでしたが、そのコードを削除したようです。私はそれが攻撃的だと思います。このフォーラムを使用して宿題の回答を収集し、それを改ざんして証拠を削除していますか? (削除された質問は、十分な担当者がいる私たちには引き続き表示されます。インターフェースは、賛成票のある回答を含む質問の削除を防止するため、この質問を削除することはできません。)
幾何学的に分布したサンプルをテストするための QQ プロットを生成する
- - 質問 - -
Rで生成されたn要素のサンプルがあります
sim.geometric <- function(nvals)
{
p <- 0.3
u <- runif(nvals)
ceiling(log(u)/log(1-p))
}
具体的には、実際に幾何学的分布に従うかどうか、その分布をテストしたいと思います。QQ Plot を生成したいのですが、方法がわかりません。
------再投稿された回答----------
QQ プロットは、同じ確率パラメーターを持つ幾何分布から抽出された「真の」サンプルと比較すると、直線になるはずです。1 つは関数に 2 つのベクトルを与え、基本的に各分位点で逆 ECDF を比較します。(あなたの試みはあまり成功していません:)
sim.res <- sim.geometric(100) sim.rgeom <- rgeom(100, 0.3) qqplot(sim.res, sim.rgeom)
ここでは、qqplot のヘルプ ページの作成者の指示に従います (これにより、上の曲線が同一線上で反転します)。
png("QQ.png")
qqplot(qgeom(ppoints(100),prob=0.3), sim.res,
main = expression("Q-Q plot for" ~~ {G}[n == 100]))
dev.off()
---画像は含まれていません---
各分布の 25 パーセンタイル ポイントと 75 パーセンタイル ポイントを通る線をプロットすることで、「適合線」を追加できます。(「確率質量」がどこにあるかをよりよく理解するために、これにジッター機能を追加しました:)
sim.res <- sim.geometric(500)
qqplot(jitter(qgeom(ppoints(500),prob=0.3)), jitter(sim.res),
main = expression("Q-Q plot for" ~~ {G}[n == 100]), ylim=c(0,max( qgeom(ppoints(500),prob=0.3),sim.res )),
xlim=c(0,max( qgeom(ppoints(500),prob=0.3),sim.res )))
qqline(sim.res, distribution = function(p) qgeom(p, 0.3),
prob = c(0.25, 0.75), col = "red")