R
Verilerimin log-normal veya Pareto dağılımlarına uygun olup olmadığını kontrol etmek istiyorum . Bunu nasıl yapabilirim? Belki ks.test
bunu yapmama yardımcı olabilir, ama verilerim için Pareto dağıtımı için ve parametrelerini nasıl alabilirim ?
R
Verilerimin log-normal veya Pareto dağılımlarına uygun olup olmadığını kontrol etmek istiyorum . Bunu nasıl yapabilirim? Belki ks.test
bunu yapmama yardımcı olabilir, ama verilerim için Pareto dağıtımı için ve parametrelerini nasıl alabilirim ?
Yanıtlar:
... orada 'regresyon' etiketi olduğunu fark ettim. Bir regresyon probleminiz varsa, dağılım şeklini değerlendirmek için yanıtın tek değişkenli dağılımına bakamazsınız, çünkü bu x'lerin modeline bağlıdır. Bir çeşit regresyon veya GLM'deki bir yanıt (y) değişkeninin, araçların gözlem boyunca farklılık gösterdiği lognormal veya Pareto dağılımına sahip olup olmadığını kontrol etmek istiyorsanız, bu çok farklı bir sorudur (ancak temel olarak benzer analiz türlerine iner) kalıntılarda). Bunun bir regresyon sorunu olup olmadığını açıklığa kavuşturabilir misiniz? Cevabım, şu anda, tek değişkenli lognormal veya Pareto'yu değerlendirmektir.
Orada oldukça farklı sorularınız var.
Verilerimin günlük dağıtımına uyup uymadığını nasıl kontrol edebilirim?
Günlükleri alın ve normal bir QQ grafiği yapın. Dağıtımın amaçlarınız için yeterince yakın olup olmadığına bakın.
Verilerimin log-normal veya Pareto dağılımlarına uyup uymadığını R'de kontrol etmek istiyorum
En başından itibaren, düşündüğünüz dağıtımların hiçbirinin tam açıklama olmayacağını kabul edin. Makul bir model arıyorsunuz. Bu, küçük örnek boyutlarında makul bir seçeneği reddetmeyeceğiniz anlamına gelir, ancak yeterli örnek boyutu ile hepsini reddedersiniz. Daha da kötüsü, büyük örneklem büyüklüğü ile mükemmel terbiyeli modelleri reddederken, küçük örneklem boyutlarında kötü olanları reddetmeyeceksiniz.
Bu tür testler, model seçimi için gerçekten yararlı bir temel değildir.
Kısacası, ilgi sorunuz - "bu veriler için iyi bir model nedir, sonraki çıkarımın faydalı olmasını sağlayacak kadar yakın olan" gibi bir şey. sadece uyum iyiliği testleriyle cevaplandırılmaz. Bununla birlikte, bazı durumlarda uygunluk istatistiklerinin iyiliği ( bunlara dayanan reddetme kurallarından çıkan kararlar yerine), bazı durumlarda belirli uyumsuzluk türlerinin yararlı bir özetini sağlayabilir.
Belki de ks.test bunu yapmama yardımcı olabilir
Hayır. Birincisi, az önce bahsettiğim bir sorun var ve ikincisi, Kolmogorov-Smirnov testi tamamen belirlenmiş bir dağılım testi. Onlardan birine sahip değilsin.
Birçok durumda, QQ grafikleri ve benzer ekranları tavsiye ederim. Bunun gibi doğru çarpık durumlar için, günlüklerle çalışma eğilimindeydim (bir lognormal normal görünecek, bir Pareto üstel görünecek). Makul örnek boyutlarında, verilerin üstelden daha normal görünüp görünmediğini görsel olarak ayırt etmek zor değildir veya tersi de geçerlidir. İlk olarak, her birinden gerçek veriler alın ve bunları çizin - en azından yarım düzine örnek deyin, böylece neye benzediklerini biliyorsunuz.
Aşağıdaki örneğe bakın
verilerim için pareto dağıtımı için alfa ve k parametrelerini nasıl alabilirim?
Parametreleri tahmin etmeniz gerekiyorsa, MLE'yi kullanın ... ancak Pareto ve lognormal arasında karar vermek için bunu yapmayın.
Bunlardan hangisinin lognormal ve hangisinin Pareto olduğunu söyleyebilir misiniz?
Normal QQ grafikleri (sol sütun) ile veri seti 1 günlüklerinin oldukça düz bir çizgi verdiğini, veri seti 2 ise sağ çarpıklığı gösterdiğini unutmayın. Üstel grafiklerde, veri kümesi 1 günlükleri üstelden daha hafif bir sağ kuyruk gösterirken, veri seti 2 oldukça düz bir çizgi gösterir (sağ kuyruktaki değerler model doğru olsa bile biraz dalgalanma eğilimi gösterir; bu Ağır kuyruklarla olağandışı değil; arazilerin tipik olarak nasıl göründüğünü görmek için baktığınızla benzer boyutta birkaç örnek çizmeniz gerekir)
Bu dört grafiği yapmak için kullanılan kod:
qqnorm(log(y1))
qqnorm(log(y2))
qex <- function(x) qexp((rank(x)-.375)/(length(x)+.25))
plot(qex(y1),log(y1))
plot(qex(y2),log(y2))
Regresyon tipi probleminiz varsa - araçların diğer değişkenlerle değiştiği bir sorun varsa, gerçekten sadece her iki dağıtım varsayımının ortalama için uygun bir model varlığında uygunluğunu değerlendirebilirsiniz.
Bu, elbette, verilerinizin bir modelden mi yoksa diğerinden mi geldiğini kontrol etmek istediğinizi ve hedefinizin sonsuz boyutlu dağılım okyanusu arasında doğru modeli bulamadığını varsayarak , bir model seçimi meselesidir . Yani, bir seçenek AIC'yi kullanmaktır (en düşük AIC değerine sahip modelleri tercih eder ve burada açıklamaya çalışmayacağım). Simüle edilmiş verilerle aşağıdaki örneğe göz atın:
rm(list=ls())
set.seed(123)
x = rlnorm(100,0,1)
hist(x)
# Loglikelihood and AIC for lognormal model
ll1 = function(param){
if(param[2]>0) return(-sum(dlnorm(x,param[1],param[2],log=T)))
else return(Inf)
}
AIC1 = 2*optim(c(0,1),ll1)$value + 2*2
# Loglikelihood and AIC for Pareto model
dpareto=function(x, shape=1, location=1) shape * location^shape / x^(shape + 1)
ll2 = function(param){
if(param[1]>0 & min(x)> param[2]) return(-sum(log(dpareto(x,param[1],param[2]))))
else return(Inf)
}
AIC2 = 2*optim(c(1,0.01),ll2)$value + 2*2
# Comparison using AIC, which in this case favours the lognormal model.
c(AIC1,AIC2)
Belki de fitdistr ()?
require(MASS)
hist(x, freq=F)
fit<-fitdistr(x,"log-normal")$estimate
lines(dlnorm(0:max(x),fit[1],fit[2]), lwd=3)
> fit
meanlog sdlog
3.8181643 0.1871289
> dput(x)
c(52.6866903145324, 39.7511298620398, 50.0577071855833, 33.8671245370402,
51.6325665911116, 41.1745418750494, 48.4259060939127, 67.0893697776377,
35.5355051232044, 44.6197404834786, 40.5620805256951, 39.4265590077884,
36.0718655240496, 56.0205581625823, 52.8039852992611, 46.2069383488226,
36.7324212941395, 44.7998046213554, 47.9727885542368, 36.3400338997286,
32.7514839453244, 50.6878893947656, 53.3756089181472, 39.4769689441593,
38.5432770167907, 62.350999487007, 44.5140171935881, 47.4026606915147,
57.3723511479393, 64.4041641945078, 51.2286815562554, 60.4921839777139,
71.6127652225805, 40.6395409719693, 48.681036613906, 52.3489622656967,
46.6219563536878, 55.6136160469819, 62.3003761050482, 42.7865905767138,
50.2413659137295, 45.6327941365187, 46.5621907725798, 48.9734785224035,
40.4828649022511, 59.4982559591637, 42.9450436744074, 66.8393386407167,
40.7248473206552, 45.9114242834839, 34.2671010054407, 45.7569869970351,
50.4358523486278, 44.7445606782492, 44.4173298921541, 41.7506552050873,
34.5657344132409, 47.7099864540652, 38.1680974794929, 42.2126680994737,
35.690599714042, 37.6748157160789, 35.0840798650981, 41.4775827114607,
36.6503753230464, 42.7539062488003, 39.2210050689652, 45.9364763482558,
35.3687017955285, 62.8299659875044, 38.1532612008011, 39.9183076516292,
59.0662388169057, 47.9032427690417, 42.4419580084314, 45.785859495192,
59.5254284342724, 47.9161476636566, 32.6868959277799, 30.1039453246766,
37.7606323857655, 35.754797368422, 35.5239777126187, 43.7874313667592,
53.0328404605954, 37.4550326357314, 42.7226751172495, 44.898430515261,
59.7229655935187, 41.0701258705001, 42.1672231656919, 60.9632847841197,
60.3690132883734, 45.6469334940722, 39.8300067022836, 51.8185235060234,
44.908828102875, 50.8200011497451, 53.7945569828737, 65.0432670527801,
49.0306734716282, 35.9442821219144, 46.8133296904456, 43.7514416949611,
43.7348972849838, 57.592040060118, 48.7913517211383, 38.5555058596449
)