Автоматически определять распределение вероятностей с учетом набора данных


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)

.. Я хотел бы определить наиболее подходящее распределение вероятностей (гамма, бета, нормальное, экспоненциальное, пуассоновское, хи-квадрат и т. Д.) С оценкой параметров. Мне уже известен вопрос по следующей ссылке, где решение предоставляется с использованием R: /programming/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 является значение 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
Хорошо, теперь все, что вам нужно сделать, это перенести m-файл в R-файл. :-)
Карл Виттофт

Даже не! Как я уже говорил, это не обязательно должен быть R-файл, поэтому функция matlab полностью решает мою проблему :-)

AIC, BIC, AICc и т. Д. Могут быть одним из способов принятия решения, но имеет ли это смысл на самом деле, зависит от того, что вы пытаетесь сделать. Например, что вы делаете, если один дистрибутив действительно близок к другим с точки зрения журнала L? Если то, что вы пытаетесь сделать, это предсказывать, то обычно игнорирование моделей, близких по критерию, не следует просто отбрасывать. Например, усреднение модели - это один из способов их учета.
Бьорн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.