Автоматично визначати розподіл ймовірностей за даним набором даних


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)).

З огляду на те, що я намагаюся визначити найкращий розподіл без будь-якої попередньої інформації, я не знаю, яке значення параметрів може бути для кожного розподілу. Чи є інше рішення, яке враховує цю вимогу? це не повинно бути в Р.

Відповіді:


18

Що ви робите щодо нескінченності розподілів, яких немає у списку?

Що ви робите, коли жоден із них у вашому списку не відповідає належним чином? наприклад, якщо ваш розподіл сильно бімодальний

Як ви будете мати справу з тим, що експоненція - це лише особливий випадок гамми, і як така гама завжди повинна краще відповідати будь-якому набору даних, оскільки вона має додатковий параметр, а значить, повинна мати кращу ймовірність ?

Як ви ставитеся до того, що ймовірність визначається лише до мультиплікативної константи і що ймовірність різних розподілів може бути не порівнянна автоматично, якщо не визначена послідовно?

Справа не в тому, що вони обов'язково нерозв’язні, але розумно робити цей матеріал нетривіально; безумовно, потрібно більше думки, ніж просто змінити все за допомогою обчислення MLE та порівняння ймовірностей.


3
Я дбаю лише про розподіли в списку, і якщо жоден з дистрибутивів не підходить, то я з цим питанням займатимусь далі. але поки що досягти цієї точки досить добре для мене. Щодо останнього питання щодо розподілу гамми, так, воно може краще відповідати деякому параметру, моє питання саме про це, чи існує алгоритм, який дозволяє мені перебирати різні значення параметрів для різних розподілів у списку? і повернути найбільш відповідний розподіл відповідними параметрами?

1
Ну так і ні. Ви можете придумати "цифру заслуги", щоб обчислити, який набір параметрів найкраще підходить, і написати цикл "підйом на гору", щоб оптимізувати значення показника заслуг. Одним із прикладів FOM є R-значення для регресійних припадків.
Карл Віттофт

я підписуюся на цей +1.

4
@shachem Ви пропустили думку про гамму. Розподіл із додатковими параметрами завжди матиме кращу ймовірність, навіть коли дані надходять із розподілу із меншою кількістю параметрів . Вам потрібно це врахувати. Деякі заходи пристосування коригують для цього ефекту. Якщо чесно, я думаю, що те, що ви намагаєтеся зробити, це, ймовірно, "відповідь на неправильне запитання", дещо як запитання "як я зрозумію, який із цих молотків найкращий для того, щоб стукати в цей гвинт"
Glen_b -Reinstate Моніка

1
Якщо "ймовірність визначена лише до мультиплікативної константи", Глен, то як можна зрозуміти ваше твердження про те, що "розподіли з додатковими параметрами завжди матимуть кращу ймовірність"? Справді, як можна порівняти ймовірності, які так не визначені? Я підозрюю, що якась ключова ідея залишилася
незмінною

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-файлом, тому функція

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