2016-10-17 14 views
-1

私の観測データがポアソン分布に適合するかどうかを確認するためにQ-Qプロットを作成する必要があります。ポアソンを理論的分布として作成する方法

df = read.table(text = 'Var1 Freq 
1975 10 
1976 12 
1977 9 
1978 14 
1979 14 
1980 11 
1981 8 
1982 7 
1983 10 
1984 8 
1985 12 
1986 9 
1987 10 
1988 9 
1989 10 
1990 9 
1991 11 
1992 12 
1993 9 
1994 10', header = TRUE) 

df$Freq列が観測は年あたりのイベント数を表すとして私を興味いずれかになります。

は、ここに私のdata.frameです。

私はqqplot関数とqpoisを理論的な分位数を作成するために使用しなければならないことを知っていますが、どうですか?

+0

あなたのデータはポアソン分布ではありません。あなたはそれが何であると思いますか? –

+0

ありがとうございます。私はちょうどあなたが言ったの統計的な確認が必要です:) –

+0

私はあなたがしようとしていることを理解していません。あなたのデータは*明らかに*ポアソンではありません。たとえばラムダ= 1 'x < - seq(1975,1994)のCDFで、 plot(x、ppois(x、1)); 'またはPMF' plot(x、rpois(x、1)) 'になります。 –

答えて

0

ggplot2にはこれを行うための素晴らしいインターフェースがあります。ここでは赤色の合意ステップラインのQQプロットがあります。 QQプロットはstat_qqを使用し、distribution引数を変更して作成されます。 dparams引数にlambdaを指定する必要があります。

ggplot(data = df, 
     mapping = aes(sample = Freq)) + 
    stat_qq(distribution = stats::qpois, 
      dparams = list(lambda = mean(df$Freq))) + 
    geom_step(data = data.frame(x = 6:16, 
           Freq = 6:16), 
      mapping = aes(x = x, 
          y = Freq), 
      colour = "red", 
      alpha = 0.5) 
+0

ありがとう@ベンジャミン!私はちょうど私の自身の答えを掲示しました。あなたが見て、あなたが間違いを見つけたら教えてくれたら。 –

0

ここに私の可能な答えは:あなたがどんな間違いを見つけた場合は

#calculate Frequencies 
tbl = as.data.frame(table(df$Freq)) 

#create theoretical poisson distr 
dist = dpois(1:7, lambda = mean(tbl$Freq)) 
dist = dist * 20    #make values in the same scale as tbl$Freq (20 = sum(tbl$Freq)) 
dist = as.data.frame(dist) 
dist$Var1 = tbl$Var1 

#qqplot 
qqplot(dist$dist, tbl$Freq, xlab = 'Theoretical Quantiles', ylab = 'Empirical Quantiles', 
     main = 'Q-Q plot Poisson', xlim = c(0,5), ylim = c(0,5)) 
abline(0,1) #create 45° line 

私に知らせてください。ありがとう

1

また、fitdistrplusパッケージでは、コードを大幅に減らすことができます。経験的および理論的密度およびCDFを比較する。

library('fitdistrplus') 
plot(fitdist(df$Freq,"pois")) 

ラムダなどを取得して、他のディストリビューションと照合することもできます。 ggplotアプローチほど柔軟ではありませんが、すばやく確認できます。

関連する問題