Как мне разместить набор данных для распределения Парето в R?

22

Имеем, скажем, следующие данные:

8232302  684531  116857   89724   82267   75988   63871   
  23718    1696     436     439     248     235

Хотите простой способ приспособить этот (и несколько других наборов данных) к распределению Парето. В идеале это будет выводить совпадающие теоретические значения, а в идеале - параметры.

Феликс
источник
Что подразумевается под «сопоставлением теоретических значений»? Ожидания статистики порядка с учетом оценки параметров? Или что-то другое?
Glen_b

Ответы:

33

Хорошо, если у вас есть образец из распределения Парето с параметрами и (где - параметр нижней границы, а - параметр формы), логарифмическая вероятность этого образец является: m > 0 α > 0 m αX1,...,Xnm>0α>0mα

nlog(α)+nαlog(m)(α+1)i=1nlog(Xi)

это монотонно возрастает в , поэтому максимальный максимальный показатель является наибольшим значением, которое согласуется с наблюдаемыми данными. Поскольку параметр определяет нижнюю границу носителя для распределения Парето, оптимуммmm

m^=miniXi

который не зависит от . Далее, используя обычные трюки исчисления, MLE для должно удовлетворятьααα

nα+nlog(m^)i=1nlog(Xi)=0

некоторая простая алгебра говорит нам ОМП являетсяα

α^=ni=1nlog(Xi/m^)

Во многих важных смыслах (например, оптимальная асимптотическая эффективность в том смысле, что достигается нижняя граница Крамера-Рао), это лучший способ согласовать данные с распределением Парето. Приведенный ниже код R вычисляет MLE для данного набора данных X.

pareto.MLE <- function(X)
{
   n <- length(X)
   m <- min(X)
   a <- n/sum(log(X)-log(m))
   return( c(m,a) ) 
}

# example. 
library(VGAM)
set.seed(1)
z = rpareto(1000, 1, 5) 
pareto.MLE(z)
[1] 1.000014 5.065213

Редактировать: Основываясь на комментариях @cardinal и I ниже, мы также можем заметить, что является обратной величиной среднего значения выборки , которые происходят с имеют экспоненциальное распределение. Следовательно, если у нас есть доступ к программному обеспечению, которое может соответствовать экспоненциальному распределению (что более вероятно, так как оно возникает во многих статистических задачах), то подгонка распределения Парето может быть достигнута путем преобразования набора данных таким образом и подгонки его экспоненциальному распределению в преобразованном масштабе. войти(Хя/ м )α^log(Xi/m^)

макрос
источник
3
(+1) Мы можем написать что-то более внушительно, заметив, что распределяется экспоненциально со скоростью . Исходя из этого и неизменности MLE при преобразовании, мы сразу же заключаем, что , где мы заменяем на в последнем выражении. Это также намекает на то, как мы могли бы использовать стандартное программное обеспечение для соответствия Парето, даже если нет явной опции. & alpha ; & alpha ; = 1 / ˉ У м мYi=log(Xi/m)αα^=1/Y¯mm^
кардинал
@cardinal - Таким образом, является обратной величиной среднего значения выборки для , которые имеют экспоненциальное распределение. Как это поможет нам? войти(Хя/ м )α^log(Xi/m^)
Макро
2
Привет Макро. Я пытался подчеркнуть, что проблема оценки параметров Парето может быть (по существу) сведена к оценке скорости экспоненты: с помощью приведенного выше преобразования мы можем преобразовать наши данные и задачу в (возможно) более знакомый и сразу же извлеките ответ (при условии, что мы или наше программное обеспечение уже знаем, что делать с образцом экспонент).
кардинал
Как я могу измерить ошибку такого рода подгонки?
Эмануэле
@emanuele, приблизительная дисперсия MLE является инверсией информационной матрицы Фишера, которая потребует от вас вычисления хотя бы одной производной логарифмического правдоподобия. Или вы могли бы использовать своего рода загрузочную передискретизацию для оценки стандартной ошибки.
Макро
8

Вы можете использовать fitdistфункцию, представленную в fitdistrplusпакете:

library(MASS)
library(fitdistrplus)
library(actuar)

# suppose data is in dataPar list
fp <- fitdist(dataPar, "pareto", start=list(shape = 1, scale = 500))
#the mle parameters will be stored in fp$estimate
akashrajkn
источник
Должно ли это быть library(fitdistrplus)?
Шон
1
@ Да, да, редактирую ответ соответственно
Кевин Л Киз
Обратите внимание, что library(actuar)для этого требуется вызов .
Jsta
Что представляет собой fp $ оценка ["форма"] в этом случае? Возможно, это примерная альфа? Или бета?
Альберт Хендрикс