Verilerden dağılımı tahmin etme


12

RTarafından oluşturulan veri bir örnek var rnorm(50,0,1), bu yüzden veri açıkça normal bir dağılım alır. Ancak Rverilerle ilgili bu dağıtım bilgisini "bilmez".

RÖrneklemimin ne tür bir dağıtımdan geldiğini tahmin edebilecek bir yöntem var mı ? Değilse, shapiro.testişlevi kullanacağım ve bu şekilde ilerleyeceğim.


Bu sorunun sonucunu tanıdığımdan emin değilim. R'de sadece bir sayı vektörünüz varsa, bununla ilişkili çok fazla meta veri olmadığı doğrudur, ancak bu neden sizi rahatsız edecek? Neden buna ihtiyacınız var / onunla ne yapmak istersiniz? Böyle bir şey olduğunu varsayalım, sadece bu vektörü Gauss verileri için diğer yöntemlere karşı belirli yöntemlerle bir işleve geçirdiğiniz ölçüde yararlı olacaktır. Hiçbirini bilmiyorum (neredeyse dünyanın en uzman R kullanıcısıyım).
gung - Monica'yı eski durumuna döndürün

Herhangi bir örneğin normal görünüp görünmediğini test etmek istiyorsanız, Shapiro-Wilk testi iyi bir seçenektir ( bu soruyu ve orada verilen cevapları okumak için zaman ayırmaya değer olsa da ). Bunun bir simülasyon çalışmasında nasıl ortaya çıktığını görebiliyorum, ancak çalışma hakkında daha fazla ayrıntı olmadan, yararlı bir cevap vermek zor.
gung - Monica'yı eski durumuna getirin

Neden veriler için bir dağıtım tanımlamanız gerekiyor? Otomatik dağıtım seçimi genellikle çekici bir fikirdir, ancak bu iyi bir fikir değildir.
Glen_b-Monica

Yanıtlar:


21

Orada fitdistrişlevi KİTLE paketinde veya bazı işlevleri, fitdistrplus paketinde . İşte ikincisinden bazı örnekler.

require(fitdistrplus)

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

Yani mesela

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

ve arazileri

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

yani normal bir dağılım gibi akla yatkın görünüyor

resim açıklamasını buraya girin

aynı zamanda lojistik bir dağıtım olarak da (onları kuyruklarda ayırt etmek için daha büyük bir örneğe ihtiyacınız olacak)

resim açıklamasını buraya girin

bir qqplot ile ve CDF bakarak bu muhtemelen bir Cauchy dağıtım olmadığını söyleyebilirim

resim açıklamasını buraya girin


1
Güzel bir bakış için Henry teşekkür ederim. Bana veri almak ve hangi dağıtım (ve parametreler) en iyi tükürmek tükürmek herhangi bir paket olup olmadığı soruldu. Paketlerin herhangi birinde böyle bir işlevin farkında mısınız?
Roman Luštrik

3
fitdistparametrelerin tahminlerini verir. Dağıtım gibi işlevlerden neler olabileceğine dair bazı ipuçları vardır, descdist(dat, boot = 1000)ancak daha büyük bir örnekten de faydalanırlar.
Henry

Bu işlevlerin hiçbiri , örnek temsili olmadığında son sorunuzda ortaya koyduğunuz sorunu çözmez .
John

1
@Scott Kaiser: Ben öyle düşünmüyorum. fitdist()fitdistrplus paketindeki bir işlevdir ve ben de bunu kullanıyordum. Bu arada fitdistr()MASS paketindeki bir işlevdir ve burada bu formda çalışmaz.
Henry

1
Bunu yorum olarak eklemek için yeterli plot(f1)plotdist(dat,"norm",para=list(mean=f1$estimate[1],sd=f1$estimate[2]))
puanım yok
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.