Veri kümesi verildiğinde olasılık dağılımını otomatik olarak belirleme


12

Bir veri kümesi verildi:

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)

.. Parametrelerin bir tahminiyle en uygun olasılık dağılımını (gama, beta, normal, üstel, poisson, ki-kare, vb.) Belirlemek istiyorum. R kullanarak bir çözümün sağlandığı aşağıdaki bağlantıdaki sorunun zaten farkındayım: /programming/2661402/given-a-set-of-random-numbers-drawn-from-a- sürekli-tek-değişken-dağılım-f en iyi önerilen çözüm şudur:

> 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                                                    #$

Ve en küçük loglik değerine sahip dağıtım seçilir. Bununla birlikte, beta dağıtımı gibi diğer dağıtımlar, fitdistr () işlevindeki bazı ekleme parametrelerinin belirtilmesini gerektirir:

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

Herhangi bir ön bilgi olmadan en iyi dağılımı belirlemeye çalışıyorum göz önüne alındığında, parametrelerin değeri muhtemelen her dağıtım için ne olabilir bilmiyorum. Bu gereksinimi dikkate alan başka bir çözüm var mı? R'de olması gerekmez.

Yanıtlar:


18

Listede bulunmayan dağıtımların sonsuzluğu hakkında ne yaparsınız?

Listenizdekilerden hiçbiri yeterince uymadığında ne yaparsınız ? örneğin dağıtımınız güçlü bir şekilde bimodal ise

Üstel olanın gama için sadece özel bir durum olduğu gerçeğiyle nasıl başa çıkacaksınız ve bu nedenle, gama her zaman bir veri kümesine daha iyi uymalıdır, çünkü ek bir parametreye sahiptir ve bu nedenle daha iyi bir olasılığa sahip olmalıdır ?

Olasılığın sadece çarpımsal bir sabite kadar tanımlanmış olması ve farklı dağılımların tutarlı bir şekilde tanımlanmadığı sürece otomatik olarak karşılaştırılamayabileceği gerçeğiyle nasıl başa çıkıyorsunuz?

Bunlar mutlaka çözünmez değildir, ancak bu şeyleri mantıklı bir şekilde yapmak önemsiz değildir; kesinlikle bir MLE'nin hesaplanması ve olasılıkların karşılaştırılması yoluyla her şeyi tıklatmaktan daha fazla düşünmek gerekir.


3
Sadece listedeki dağıtımları önemsiyorum ve dağıtımların hiçbiri uygun değilse, o zaman bu sorunla ilgileneceğim. ama şimdilik bu noktaya ulaşmak benim için yeterince iyi. Gama dağılımı ile ilgili son soruya gelince, evet bazı parametrelere daha iyi uyabilir, sorum tam olarak bununla ilgili, listedeki farklı dağılımlar için farklı parametre değerleri arasında geçiş yapmamı sağlayan bir algoritma var mı? ve en uygun dağılımı uygun paramatörler ile geri döndürür?

1
Evet, hayır. Hangi parametre setinin size en uygun olduğunu hesaplamak için bir "liyakat figürü" ile karşılaşabilir ve liyakat figürünün değerini optimize etmek için bir "tepe tırmanma" döngüsü yazabilirsiniz. Bir FOM örneği, regresyon uyumu için R-değeridir.
Carl Witthoft

bu + 1'e abone oldum.

4
@shachem Gamma hakkındaki noktayı kaçırdınız. Ek parametreli dağıtımlar, veriler daha az parametreli dağıtımdan gelse bile her zaman daha iyi bir olasılık olacaktır . Bunu düşünmelisin. Bazı uyum ölçütleri bu etki için ayarlanır. Dürüst olmak gerekirse, yapmaya çalıştığınız şeyin muhtemelen 'yanlış soruyu cevaplamak' olduğunu düşünüyorum, bir şekilde 'bu çekiçlerden hangisinin bu vidada vurmak için en iyi olduğunu nasıl anlayabilirim' diye sormak gibi
Glen_b -Reinstate Monica

1
"Olasılık sadece çarpımsal bir sabit olana kadar tanımlanırsa" Glen, o zaman "ek parametrelerle dağıtımlar her zaman daha iyi olabilir" ifadenizi nasıl anlayabilir? Gerçekten de, bu kadar kötü tanımlanmış olan olasılıkları nasıl karşılaştırabiliriz? Bazı önemli fikirlerin
evsiz

3

Matlab kullanarak soruma cevap veren bir fonksiyon buldum. Bu bağlantıda bulunabilir: http://www.mathworks.com/matlabcentral/fileexchange/34943

Veri vektörünü girdi olarak alıyorum

   allfitdist(data)

ve en uygun montaj için aşağıdaki bilgileri döndürür:

   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
Tamam, şimdi tek yapmanız gereken m dosyasını bir R dosyasına bağlamak. :-)
Carl Witthoft

Hatta değil! Bahsettiğim gibi bir R dosyası olması gerekmez, bu yüzden matlab fonksiyonu tamamen sorunumu çözer :-)

AIC, BIC, AICc, vb. Karar vermenin bir yolu olabilir, ancak bunun mantıklı olup olmadığı gerçekten ne yapmaya çalıştığınıza bağlıdır. Örneğin, bir dağıtım günlük L açısından diğerlerine gerçekten yakınsa ne yaparsınız? Yapmaya çalıştığınız şey tahmin etmekse, genellikle kriteriniz açısından yakın olan modelleri göz ardı etmek sadece atılmamalıdır. Örneğin model ortalamaları, bunları dikkate almanın bir yoludur.
Björn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.