与えられたデータセットの確率分布を自動的に決定する


12

データセットが与えられた場合:

x <- c(4.9958942,5.9730174,9.8642732,11.5609671,10.1178216,6.6279774,9.2441754,9.9419299,13.4710469,6.0601435,8.2095239,7.9456672,12.7039825,7.4197810,9.5928275,8.2267352,2.8314614,11.5653497,6.0828073,11.3926117,10.5403929,14.9751607,11.7647580,8.2867261,10.0291522,7.7132033,6.3337642,14.6066222,11.3436587,11.2717791,10.8818323,8.0320657,6.7354041,9.1871676,13.4381778,7.4353197,8.9210043,10.2010750,11.9442048,11.0081195,4.3369520,13.2562675,15.9945674,8.7528248,14.4948086,14.3577443,6.7438382,9.1434984,15.4599419,13.1424011,7.0481925,7.4823108,10.5743730,6.4166006,11.8225244,8.9388744,10.3698150,10.3965596,13.5226492,16.0069239,6.1139247,11.0838351,9.1659242,7.9896031,10.7282936,14.2666492,13.6478802,10.6248561,15.3834373,11.5096033,14.5806570,10.7648690,5.3407430,7.7535042,7.1942866,9.8867927,12.7413156,10.8127809,8.1726772,8.3965665)

..パラメータの推定により、最も適切な確率分布(ガンマ、ベータ、正規、指数、ポアソン、カイ2乗など)を決定したいと思います。Rを使用して解決策が提供されている次のリンクの質問をすでに知っています:https : //stackoverflow.com/questions/2661402/given-a-set-of-random-numbers-drawn-from-a-連続一変量分布-f 最適な提案ソリューションは次のとおりです。

> library(MASS)
> fitdistr(x, 't')$loglik                                                              #$
> fitdistr(x, 'normal')$loglik                                                         #$
> fitdistr(x, 'logistic')$loglik                                                       #$
> fitdistr(x, 'weibull')$loglik                                                        #$
> fitdistr(x, 'gamma')$loglik                                                          #$
> fitdistr(x, 'lognormal')$loglik                                                      #$
> fitdistr(x, 'exponential')$loglik                                                    #$

そして、loglik値が最小の分布が選択されます。ただし、ベータ分布などの他の分布では、fitdistr()関数でいくつかの追加パラメーターを指定する必要があります。

   fitdistr(x, 'beta', list(shape1 = some value, shape2= some value)).

事前情報なしで最適な分布を決定しようとしていることを考えると、各分布のパラメーターの値がどのようになる可能性があるのか​​わかりません。この要件を考慮に入れる別のソリューションはありますか?Rにある必要はありません。

回答:


18

リストにない分布の無限大についてどうしますか?

とき、あなたは何をしますかどれあなたのリストにあるもののは、適切にフィットしていませんか?たとえば、分布が強く二峰性である場合

指数関数はガンマの特別な場合であり、そのため、ガンマは追加のパラメーターを持ち、したがってより高い尤度を持たなければならないので、ガンマは常にデータのセットによりよく適合しなければならないという事実にどのように対処しますか? ?

尤度は乗法定数までしか定義されておらず、一貫して定義しない限り、異なる分布の尤度は自動的に比較できないという事実にどのように対処しますか?

これらが必ずしも不溶性であるというわけではありませんが、このようなことを賢明な方法で行うことは重要です。確かに、MLEの計算と尤度の比較を通してすべてを束ねるよりも、もっと多くの考えが必要です。


3
リストにある分布のみに注意を払い、どの分布にも当てはまらない場合は、次にその問題に対処します。しかし、今のところ、そのポイントに到達することは私にとって十分です。ガンマ分布に関する最後の質問については、はい、それはいくつかのパラメーターによく合うことができます、私の質問はこれについて正確です、リスト上の異なる分布の異なるパラメーター値をループできるアルゴリズムはありますか?適切なパラメータで最も適切な分布を返しますか?

1
はい、そうです。どのパラメータセットが最適かを計算する「性能指数」を考え出し、性能指数の値を最適化する「山登り」ループを書くことができます。FOMの1つの例は、回帰近似のR値です。
カールウィットフト

この+1を購読します。

4
@shachemガンマに関するポイントを見逃しました。パラメーターが少ない分布からデータが取得される場合でも、パラメーターが追加された分布の方が常に尤度が高くなります。これを考慮する必要があります。いくつかの適合度は、この効果に合わせて調整されます。正直に言うと、私はあなたがやろうとしている事は多少「私は、このネジでドキドキのための最高の一つであり、これらのハンマーのどの把握んか」尋ねるような、「間違った質問に答える」そうだと思う
Glen_b -Reinstateモニカ

1
「尤度が乗法定数までしか定義されていない場合」グレンは、「追加のパラメーターを持つ分布は常により良い尤度を持つ」というステートメントをどのように理解できますか?確かに、どうすればそれほど明確に定義されていない可能性を比較できるでしょうか?いくつかの重要なアイデアが述べられていないのではないかと思います...
whuber

3

matlabを使用して私の質問に答える関数を見つけました。このリンクで見つけることができます:http : //www.mathworks.com/matlabcentral/fileexchange/34943

入力としてデータベクトルを使用します

   allfitdist(data)

最適な分布の次の情報を返します。

   DistName- the name of the distribution
   NLogL - Negative of the log likelihood
   BIC - Bayesian information criterion (default)
   AIC - Akaike information criterion
   AICc - AIC with a correction for finite sample sizes 
   ParamNames
   ParamDescription
   Params
   etc.

1
OK、mファイルをRファイルに移植するだけです。:
カールウィトフト

でもない!前述したように、Rファイルである必要はないため、matlab関数は私の問題を完全に解決します:

AIC、BIC、AICcなどは決定の1つの方法かもしれませんが、それが理にかなっているかどうかは、あなたが何をしようとしているかによって本当に異なります。例えば、ある分布が対数Lに関して他の分布に本当に近い場合はどうしますか?あなたがやろうとしていることを予測することであるなら、通常、あなたの基準に関して近いモデルを無視することは、単に捨てられるべきではありません。たとえば、モデル平均化は、それらを考慮する1つの方法です。
ビョルン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.