Оцінка розподілу за даними


12

У мене є зразок даних , отриманих в Rшляху rnorm(50,0,1), тому дані , очевидно , бере на себе нормальне розподіл. Однак Rне "знає" цю розповсюджувальну інформацію про дані.

Чи існує метод, Rякий дозволяє оцінити, від якого типу розподілу походить мій зразок? Якщо ні, я скористаюсь shapiro.testфункцією та продовжую так.


Я не впевнений, що визнаю результат цього питання. Це правда, що якщо у вас просто є векторний чисел у R, з ним пов'язано не так багато метаданих, але чому б це вас турбувало? Навіщо вам це потрібно / що ви хочете зробити з цим? Припустимо, у нього було таке, було б корисно лише в тій мірі, в якій ви повинні передати цей вектор у функцію із специфічними методами для даних Гаусса проти інших. Я не знаю жодного (хоча я навряд чи найвідоміший користувач R в світі).
gung - Відновіть Моніку

Якщо ви просто хочете перевірити, чи здається вам якийсь зразок нормальним, тест Шапіро-Вілка є гідним варіантом (хоча варто прочитати це питання та відповіді, надані там). Я бачу, як це могло з'явитися в симуляційному дослідженні, але без деталей про дослідження важко дати корисну відповідь.
gung - Відновіть Моніку

Чому потрібно ідентифікувати розподіл даних? Автоматичний вибір розповсюдження часто є привабливою ідеєю, але це не робить його гарною ідеєю.
Glen_b -Встановіть Моніку

Відповіді:


21

Існує fitdistrфункція в пакеті MASS або деякі функції в пакеті fitdistrplus . Ось кілька прикладів з останнього.

require(fitdistrplus)

set.seed(1)
dat <- rnorm(50,0,1)
f1 <- fitdist(dat,"norm")
f2 <- fitdist(dat,"logis")
f3 <- fitdist(dat,"cauchy")

так, наприклад

> f1
Fitting of the distribution ' norm ' by maximum likelihood 
Parameters:
      estimate Std. Error
mean 0.1004483 0.11639515
sd   0.8230380 0.08230325

і ви можете побачити сюжети з

plotdist(dat,"norm",para=list(mean=f1$estimate[1],sd=f1$estimate[2]))
plotdist(dat,"logis",para=list(location=f2$estimate[1],scale=f2$estimate[2]))
plotdist(dat,"cauchy",para=list(location=f3$estimate[1],scale=f3$estimate[2]))

тому це виглядає правдоподібно як звичайний розподіл

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

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

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

хоча за допомогою qqplot і перегляду CDF ви можете сказати, що це, мабуть, не розподіл Коші

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


1
Дякую Генрі за прекрасний огляд. Мене запитали, чи є якісь пакети, які беруть дані і виплювають, який розподіл (і параметри) плюють найкраще. Чи знаєте ви про таку функціональність у будь-якому з пакетів?
Роман Луштрик

3
fitdistнадає оцінки параметрів. Існують деякі підказки, яким може бути розподіл від таких функцій, descdist(dat, boot = 1000)але вони також отримали б користь від більшого зразка.
Генрі

Жодна з цих функцій не вирішить проблему, яку ви поставили в своєму останньому запитанні, коли зразок не репрезентативний.
Іоанн

1
@Scott Kaiser: Я не думаю, що так. fitdist()- це функція в пакунку fitdistrplus, і це я використовував. Тим часом fitdistr()це функція в пакеті MASS, і вона не працюватиме тут у такій формі.
Генрі

1
У мене не вистачає балів, щоб додати це як коментар, але як додаткову примітку до інформації, що міститься у потоці вище, також можна просто зателефонувати plot(f1)замість більш plotdist(dat,"norm",para=list(mean=f1$estimate[1],sd=f1$estimate[2]))
звивоченого
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.