R'de t-dağılımının takılması: ölçekleme parametresi


17

Bir t dağılımının parametrelerine nasıl uyurum, yani normal dağılımın 'ortalama' ve 'standart sapmasına' karşılık gelen parametreler. Bir t-dağılımı için 'ortalama' ve 'ölçeklendirme / serbestlik derecesi' olarak adlandırıldığını varsayıyorum?

Aşağıdaki kod genellikle 'optimizasyon başarısız' hatalarıyla sonuçlanır.

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

Önce x 'i ölçeklendirmem veya olasılıklara dönüştürmem gerekiyor mu? Bunu en iyi nasıl yapabilirim?


2
Parametreleri ölçeklendirmeniz gerektiğinden değil, optimize edici başarısız olduğu için başarısız olur. Cevabımı aşağıda görebilirsiniz.
Sergey Bushmanov

Yanıtlar:


16

fitdistrBelirli bir dağılımın parametrelerini bulmak için maksimum olabilirlik ve optimizasyon tekniklerini kullanır. Bazen, @ user12719'un fark ettiği gibi, özellikle t-dağılımı için, formdaki optimizasyon:

fitdistr(x, "t")

bir hata ile başarısız olur.

Bu durumda, optimum parametreleri aramaya başlamak için başlangıç ​​noktası ve alt sınır sağlayarak optimize ediciye bir el vermelisiniz:

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

Not, df=3bir "optimal" ne dfolabileceğini en iyi tahmin olduğunu . Bu ek bilgiyi verdikten sonra hatanız kaybolacaktır.

İç mekaniğini daha iyi anlamanıza yardımcı olacak birkaç alıntı fitdistr:

Normal, log-Normal, geometrik, üstel ve Poisson dağılımları için kapalı form MLE'ler (ve kesin standart hatalar) kullanılır ve bunlar startverilmemelidir.

...

Aşağıdaki adlandırılmış dağılımlar için, startatlanırsa veya yalnızca kısmen belirtilirse makul başlangıç ​​değerleri hesaplanır : "cauchy", "gama", "lojistik", "negatif binom" (mu ve boy ile parametrelendirilir), "t" ve "weibull ". Bu başlangıç ​​değerlerinin, uyum zayıfsa yeterince iyi olmayabileceğini unutmayın: özellikle, takılan dağıtım uzun kuyruklu olmadıkça, aykırı değerlere karşı dirençli değildir.


1
Her iki cevap da (Flom ve Bushmanov) faydalıdır. Daha doğru başlangıç ​​değerleri ve kısıtlamaları ile 'fitdistr' optimizasyonu yakınsama yapar, çünkü bu bir seçiyorum.
user12719

10

νt

νt

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")

resim açıklamasını buraya girin

n

Bazı simülasyonları deneyelim:

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

Tahmin çok dengesizdir (histograma bakıldığında, tahmini değerlerin büyük bir kısmı, 200'ü optimize etmek için verilen üst sınırdadır).

Daha büyük bir örneklem büyüklüğü ile tekrarlama:

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

ki bu daha iyidir, ancak ortalama hala 2.5'in gerçek değerinin çok üzerindedir.

Sonra bunun, konum ve ölçek parametrelerinin de tahmin edilmesi gereken gerçek sorunun basitleştirilmiş bir versiyonu olduğunu unutmayın.

tν


5
Df'yi tahmin etme problemlerinin aslında ilk etapta bir t-dağılımı (yani sağlamlık) seçme nedenine karşı çalışabileceği sonucuna varmanızın kışkırtıcı olduğu düşünülmektedir.
user12719

1
(+1) "Yukarıda sınırsız" yanlış bir yanıt değildir ve bir aralık tahmini ile birleştiğinde bazı amaçlar için yararlı olabilir. Önemli olan, gözlemlenen Fisher bilgilerini Wald güven aralıklarını oluşturmak için körü körüne kullanmamaktır.
Scortchi - Monica'yı eski durumuna getirin

8

Fitdistr yardımında bu örnek:

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

df için sadece bir değere ihtiyacınız olduğunu gösterir. Ancak bu standartlaştırmayı varsayar.

Daha fazla kontrol için,

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))

burada parametreler m = ortalama, s = standart sapma, df = serbestlik derecesi olacaktır


1
Sanırım bir t-dağılımının parametreleri hakkında kafam karıştı. 2 (ortalama, df) veya 3 (ortalama, standart sapma, df) parametreleri var mı? Biri 'df' parametresine uygun olup olmadığını merak ediyordum.
user12719

1
@ user12719 Student -t dağılımının üç parametresi vardır: konum, ölçek ve serbestlik dereceleri. Ortalama, standart sapma ve df olarak adlandırılmazlar çünkü bu dağılımın ortalaması ve varyansı üç parametreye bağlıdır. Ayrıca, bazı durumlarda mevcut değildirler. Peter Flom df'yi düzeltiyor ancak bu bilinmeyen bir parametre olarak da düşünülebilir.

1
@PeterFlom Cauchy dağılımı söz konusu olduğunda, m ve s'nin yer ve ölçek olduğu açıktır. M ve s notalarının sırasıyla ortalama ve standart sapmayı temsil ettiklerini öne sürdüğünü kabul ediyorum. Ancak bu sadece \muve basitleştirilmesi olabilir \sigma. + 1 yıl önce, bu arada.

1
@PeterFlom R'nin yardım dosyasından yapılan bu alıntı, df'nin öğrenci dağılımı için her zaman 9 olduğunu ima ediyor mu? Df'nin de tahmin edilmesi gerektiğini düşünmüyor musunuz? Aslında, yokluğunun dfnedeni hatanın sebebidir ve doğru cevap, hatayı bulmak için bazı tarifler sağlamalıdır.
Sergey Bushmanov

1
@PeterFlom BTW, yardım dosyasından alıntılarınızın üstündeki birkaç satırı okursanız, df=9örneklerinde neden iyi olduğunu ve burada alakasız olduğunu göreceksiniz .
Sergey Bushmanov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.