R의 파레토 분포에 데이터 세트를 맞추려면 어떻게해야합니까?


22

다음 데이터를 보자.

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

이 (및 다른 여러 데이터 세트)를 파레토 분포에 맞추는 간단한 방법을 원하십시오. 이상적으로는 일치하는 이론적 값을 출력하고, 이상적으로는 매개 변수를 출력하지 않습니다.



"이론적 가치 매칭"이란 무엇입니까? 모수 추정치가 주어진 경우 주문 통계의 기대치는? 또는 다른 것?
Glen_b-복지 주 모니카

답변:


33

글쎄, 당신은 샘플이있는 경우 X1,...,Xn 모수 m>0α>0 (여기서 m 은 하한 모수이고 α 는 모양 모수) 을 갖는 파레토 분포의 X n 은 해당 표본의 로그 우도입니다.

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

이것은 로 단조 증가 하므로 최대 값은 관측 된 데이터와 일치하는 가장 큰 값입니다. 모수 m 은 파레토 분포에 대한지지의 하한을 정의하므로 최적은mm

m^=miniXi

의존하지 않습니다 . 다음으로, 일반 수학 트릭을 사용하기위한 MLE 만족해야αα

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

간단한 대수학에 따르면 의 MLE 은α

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

많은 중요한 의미에서 (예 : Cramer-Rao 하한을 달성하는 점에서 최적의 점근 효율), 이것은 파레토 분포에 데이터를 맞추는 가장 좋은 방법입니다. 아래의 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) 이 rate 와 함께 지수로 분포 되어 있음을 주목함으로써 조금 더 암시 적으로 글을 쓸 수 있습니다 . 이것과 변환중인 MLE의 불일치로부터 우리는 라는 결론을 내립니다 . 여기서 우리 는 후자의 식에서 을 으로 대체 합니다. 또한 명시적인 옵션을 사용할 수없는 경우에도 표준 소프트웨어를 사용하여 파레토에 맞추는 방법을 암시합니다. Yi=log(Xi/m)αα^=1/Y¯mm^
추기경

@cardinal-따라서 는 지수 분포를 갖는 의 표본 평균의 역수입니다 . 이것이 우리에게 어떻게 도움이됩니까? 로그(XI/ m )α^log(Xi/m^)
매크로

2
안녕, 매크로 내가 만들려고했던 것은 파레토의 매개 변수를 추정하는 문제를 지수의 비율을 추정하는 문제로 (실질적으로) 줄일 수 있다는 것입니다. 위의 변환을 통해 데이터와 문제를 (아마도) 더 친숙하고 즉시 답을 추출하십시오 (우리 또는 우리의 소프트웨어가 이미 지수의 샘플로 무엇을 해야할지 알고 있다고 가정).
추기경

이런 종류의 적합 오차를 어떻게 측정 할 수 있습니까?
emanuele

@emanuele, MLE의 근사 분산은 피셔 정보 매트릭스의 역수이며, 로그 우도의 적어도 하나의 미분을 계산해야합니다. 또는 일종의 부트 스트랩 리샘플링을 사용하여 표준 오류를 추정 할 수 있습니다.
Macro

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

그럴까요 library(fitdistrplus)?
Sean

1
@Sean 예, 그에 따라 응답을 편집
케빈 L 키

library(actuar)이 기능이 작동 하려면 호출 이 필요합니다.
jsta

이 경우 fp $ estimate [ "shape"]는 무엇을 나타 냅니까? 아마도 추정 알파일까요? 아니면 베타?
Albert Hendriks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.