Підгонка t-розподілу в R: параметр масштабування


17

Як мені підходять параметри t-розподілу, тобто параметри, що відповідають "середньому" та "стандартному відхиленню" нормального розподілу. Я припускаю, що їх називають "середніми" та "масштабуючими / ступенями свободи" для розподілу t?

Наступний код часто призводить до помилок "оптимізації оптимізації".

library(MASS)
fitdistr(x, "t")

Чи потрібно спочатку масштабувати х чи перетворювати на ймовірності? Як найкраще це зробити?


2
Виходить з ладу не тому, що потрібно масштабувати параметри, а тому, що оптимізатор виходить з ладу. Дивіться мою відповідь нижче.
Сергій Бушманов

Відповіді:


16

fitdistrвикористовує методи максимальної ймовірності та оптимізації для пошуку параметрів заданого розподілу. Іноді, особливо для t-розподілу, як зауважив @ user12719, оптимізація у вигляді:

fitdistr(x, "t")

не вдається з помилкою.

У цьому випадку слід подати оптимізатору руку, надавши початкову точку та нижню межу, щоб почати пошук оптимальних параметрів:

fitdistr(x, "t", start = list(m=mean(x),s=sd(x), df=3), lower=c(-1, 0.001,1))

Зауважте, df=3це найкраща здогадка про те, яким dfможе бути "оптимальний" . Після надання цієї додаткової інформації ваша помилка не буде знищена.

Кілька витягів, які допоможуть вам краще зрозуміти внутрішню механіку fitdistr:

Для розподілів Normal, log-Normal, геометричних, експоненціальних та пуассонових MLE використовуються закриті форми (і точні стандартні помилки), і startїх не слід подавати.

...

Для наступних названих розподілів обчислюються розумні початкові значення, якщо startвони опущені або лише частково вказані: "каучуковий", "гамма", "логістичний", "негативний двочлен" (параметризований mu і розміром), "t" і "weibull ". Зауважте, що ці вихідні значення можуть бути недостатньо хорошими, якщо придатність погана: зокрема, вони не стійкі до виснажувачів, якщо тільки пристосований розподіл не є довгохвостим.


1
Обидві відповіді (Флом та Бушманов) корисні. Я вибираю цей, тому що він робить більш очевидним, що з правильними початковими значеннями та обмеженнями оптимізація 'fitdistr' сходиться.
користувач12719

10

МАСС, книга (4-е видання, стор. 110) не радить намагатися оцінитиνт

νт

set.seed(1234)
n <- 10
x <- rt(n,  df=2.5)

make_loglik  <-  function(x)
    Vectorize( function(nu) sum(dt(x, df=nu,  log=TRUE)) )

loglik  <-  make_loglik(x)
plot(loglik,  from=1,  to=100,  main="loglikelihood function for df     parameter", xlab="degrees of freedom")
abline(v=2.5,  col="red2")

введіть тут опис зображення

н

Спробуємо кілька моделювання:

t_nu_mle  <-  function(x) {
    loglik  <-  make_loglik(x)
    res  <-  optimize(loglik, interval=c(0.01, 200), maximum=TRUE)$maximum
    res   
}

nus  <-  replicate(1000, {x <- rt(10, df=2.5)
    t_nu_mle(x) }, simplify=TRUE)

> mean(nus)
[1] 45.20767
> sd(nus)
[1] 78.77813

Показання оцінки дуже нестабільне (дивлячись на гістограму, значна частина оціночних значень знаходиться на верхній межі, заданій для оптимізації 200).

Повторення з більшим розміром вибірки:

nus  <-  replicate(1000, {x <- rt(50, df=2.5)
    t_nu_mle(x) }, simplify=TRUE)
> mean(nus)
[1] 4.342724
> sd(nus)
[1] 14.40137

що набагато краще, але середнє значення все-таки перевищує справжнє значення 2,5.

Потім пам’ятайте, що це спрощена версія реальної проблеми, де параметри розташування та масштабу також повинні бути оцінені.

тν


5
Ваш висновок про те, що проблеми оцінки df можуть насправді працювати проти причини вибору t-розподілу в першу чергу (тобто стійкості), вважається провокуючим.
користувач12719

1
(+1) "Без обмежень вище" не є помилковою відповіддю і може бути корисним для деяких цілей у поєднанні з оцінкою інтервалу. Важливим є не сліпо використовувати спостережувану інформацію Фішера для формування довірчих інтервалів Wald.
Scortchi

8

У довідці для fitdistr є такий приклад:

fitdistr(x2, "t", df = 9)

що вказує на те, що вам просто потрібно значення для df. Але це передбачає стандартизацію.

Для більшого контролю вони також показують

mydt <- function(x, m, s, df) dt((x-m)/s, df)/s
fitdistr(x2, mydt, list(m = 0, s = 1), df = 9, lower = c(-Inf, 0))

де параметри будуть m = середнє значення, s = стандартне відхилення, df = ступені свободи


1
Я думаю, що я плутаю параметри t-розподілу. Чи має 2 (середнє, df) або 3 (середнє, стандартне відхилення, df) параметри? Мені було цікаво, чи можна відповідати параметру 'df'.
користувач12719

1
@ user12719 Розподіл студента-t має три параметри: розташування, масштаб та ступінь свободи. Вони не називаються середніми, стандартними відхиленнями і df, оскільки середнє значення та дисперсія цього розподілу залежать від трьох параметрів. Також їх у деяких випадках не існує. Пітер Флом виправляє df, але це також може розглядатися як невідомий параметр.

1
@PeterFlom У випадку розподілу Коші явно, що m і s - це розташування та масштаб. Я погоджуюся, що позначення m і s припускають, що вони представляють середнє і стандартне відхилення відповідно. Але це може бути просто спрощення \muта \sigma. +1 давно, до речі.

1
@PeterFlom Це цитування з файлу довідки R означає, що df завжди 9 для розподілу студентів? Ви не вважаєте, що і df слід оцінювати? Власне, відсутність df- причина помилки, і правильна відповідь повинна дати певний рецепт її пошуку.
Сергій Бушманов

1
@PeterFlom BTW, якщо ви прочитаєте файл довідки на пару рядків над вашим цитуванням, ви знайдете, чому df=9це добре у їхньому прикладі та не має значення тут.
Сергій Бушманов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.