R의 피팅 t- 분포 : 스케일링 파라미터


17

t- 분포의 모수, 즉 정규 분포의 '평균'및 '표준 편차'에 해당하는 모수를 어떻게 적합합니까? 나는 그것들을 t- 분포에 대해 '평균'과 '확장 / 자유도'라고 부릅니다.

다음 코드는 종종 '최적화 실패'오류를 발생시킵니다.

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

x를 먼저 스케일하거나 확률로 변환해야합니까? 최선을 다하는 방법?


2
매개 변수를 스케일해야하기 때문에가 아니라 최적화 프로그램이 실패하기 때문에 실패합니다. 아래 답변을 참조하십시오.
Sergey Bushmanov

답변:


16

fitdistr최대 우도 및 최적화 기법을 사용하여 주어진 분포의 모수를 찾습니다. @ user12719에서 알 수 있듯이 t- 분포의 경우 특히 다음과 같은 형식의 최적화가 있습니다.

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:

정규, 대수, 기하, 지수 및 포아송 분포의 경우 닫힌 형태의 MLE (및 정확한 표준 오류)가 사용 start되며 제공해서는 안됩니다.

...

다음과 같은 명명 된 분포의 경우 start"cauchy", "gamma", "logistic", "negative binomial"(mu 및 size로 매개 변수화), "t"및 "weibull"을 생략하거나 부분적으로 만 지정 하면 합리적인 시작 값이 계산됩니다 . ". 적합치가 불량한 경우 이러한 시작 값이 충분하지 않을 수 있습니다. 특히 적합 분포가 긴 꼬리가 아닌 한 특이 치에 대한 내성이 없습니다.


1
두 가지 답변 (Flom 및 Bushmanov)이 도움이됩니다. 올바른 초기 값과 제약 조건 'fitdistr'최적화가 수렴된다는 것을보다 명확하게하기 때문에이 중 하나를 선택합니다.
user12719

10

ν

ν

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- 분포를 선택하는 이유에 반하여 실제로 작용할 수 있다는 결론 (즉, 견고성)은 도발적인 것으로 생각됩니다.
user12719

1
(+1) "위의 제한 없음"은 오답이 아니며 구간 추정치와 결합 할 때 일부 목적에 유용 할 수 있습니다. 중요한 것은 관측 된 Fisher 정보를 맹목적으로 사용하여 Wald 신뢰 구간을 형성하지 않는 것입니다.
Scortchi-Monica Monica 복원

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'에 맞는지 궁금합니다.
user12719

1
@ user12719 학생의 t 분포 에는 위치, 척도 및 자유도의 세 가지 매개 변수가 있습니다. 이 분포의 평균과 분산이 세 가지 매개 변수에 의존하기 때문에 평균, 표준 편차 및 df라고하지 않습니다. 또한 경우에 따라 존재하지 않습니다. Peter Flom이 df를 수정하고 있지만 알 수없는 매개 변수로 간주 될 수 있습니다.

1
@PeterFlom Cauchy 분포 의 경우 m과 s가 위치와 스케일임을 명시합니다. m과 s의 표기법은 각각 평균과 표준 편차를 나타냅니다. 그러나 이것은 단지의 단순화 할 수 \mu\sigma뿐만 아니라. 그건 그렇고 오래 전 +1

1
@PeterFlom R의 도움말 파일에서이 인용이 df가 학생 배포에 대해 항상 9 임을 의미 합니까? df도 추정해야한다고 생각하지 않습니까? 실제로, 부재 df는 오류의 원인이며, 정답은 오류를 찾는 몇 가지 레시피를 제공해야합니다.
Sergey Bushmanov

1
@PeterFlom BTW, 인용문 위의 도움말 파일 몇 줄을 읽으면 df=9여기에 왜 예제가 좋고 관련이 없는지 알 수 있습니다.
Sergey Bushmanov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.