Bagaimana cara memeriksa apakah data saya sesuai dengan distribusi normal log?

11

Saya ingin memeriksa Rapakah data saya sesuai dengan distribusi log-normal atau Pareto. Bagaimana saya bisa melakukan itu? Mungkin ks.testbisa membantu saya melakukan itu, tetapi bagaimana saya bisa mendapatkan parameter dan untuk distribusi Pareto untuk data saya?αk

bersabar
sumber
Untuk pertanyaan terakhir, lihat juga stats.stackexchange.com/questions/392629/...
kjetil b halvorsen

Jawaban:

6

... Saya baru saja memperhatikan Anda memiliki tag 'regresi' di sana. Jika Anda memang memiliki masalah regresi, Anda tidak dapat melihat distribusi univariat dari respons untuk menilai bentuk distribusi, karena itu tergantung pada pola x. Jika Anda bertanya tentang memeriksa apakah variabel respons (y) dalam beberapa jenis regresi atau GLM memiliki distribusi lognormal atau Pareto di mana cara berbeda di observasi, itu pertanyaan yang sangat berbeda (tetapi pada dasarnya bermuara pada jenis analisis yang serupa pada residu). Bisakah Anda menjelaskan jika ini adalah masalah regresi. Jawaban saya, saat ini, berkaitan dengan menilai lognormal atau Pareto univariat

Anda memiliki beberapa pertanyaan yang sangat berbeda di sana.

Bagaimana cara memeriksa apakah data saya sesuai dengan distribusi normal log?

Ambil log dan lakukan plot QQ normal. Lihat dan lihat apakah distribusinya cukup dekat untuk keperluan Anda.

Saya ingin memeriksa R jika data saya sesuai dengan distribusi log-normal atau Pareto

Terima sejak awal bahwa tidak ada distribusi yang Anda anggap sebagai deskripsi yang tepat. Anda sedang mencari model yang masuk akal. Ini berarti bahwa pada ukuran sampel kecil, Anda tidak akan menolak opsi yang masuk akal, tetapi dengan ukuran sampel yang cukup Anda akan menolak semuanya. Lebih buruk lagi, dengan ukuran sampel yang besar, Anda akan menolak model yang benar-benar layak, sementara pada ukuran sampel yang kecil Anda tidak akan menolak yang buruk.

Tes semacam itu sebenarnya bukan dasar yang berguna untuk pemilihan model.

Singkatnya, pertanyaan Anda yang menarik - sesuatu seperti "apa model yang baik untuk data ini, yang cukup dekat sehingga akan membuat kesimpulan selanjutnya bermanfaat?" sama sekali tidak dijawab oleh tes goodness of fit. Namun, dalam beberapa kasus statistik goodness of fit (daripada keputusan yang keluar dari aturan penolakan berdasarkan pada mereka) mungkin dalam beberapa kasus dapat memberikan ringkasan yang berguna tentang jenis ketidakcocokan tertentu.

Mungkin ks.test bisa membantu saya melakukan itu

Tidak. Pertama, ada masalah yang baru saja saya sebutkan, dan kedua, tes Kolmogorov-Smirnov adalah tes untuk distribusi yang sepenuhnya ditentukan. Anda tidak memilikinya.

Dalam banyak kasus, saya akan merekomendasikan plot QQ dan tampilan serupa. Untuk kasus miring kanan seperti ini, saya cenderung bekerja dengan log (lognormal akan terlihat normal, sementara Pareto akan terlihat eksponensial). Pada ukuran sampel yang masuk akal tidak sulit untuk membedakan secara visual apakah data terlihat lebih normal daripada eksponensial atau sebaliknya. Pertama, dapatkan beberapa data aktual dari masing-masing dan plot mereka - katakan setidaknya setengah lusin sampel, sehingga Anda tahu seperti apa mereka.

Lihat contoh di bawah ini

bagaimana saya bisa mendapatkan parameter alfa dan k untuk distribusi pareto untuk data saya?

Jika Anda perlu memperkirakan parameter, gunakan MLE ... tetapi jangan lakukan itu untuk memutuskan antara Pareto dan lognormal.

Bisakah Anda tahu mana yang lognormal dan mana Pareto?

masukkan deskripsi gambar di sini

Perhatikan bahwa dengan plot QQ normal (kolom kiri) kita melihat log kumpulan data 1 memberikan garis yang cukup lurus, sedangkan kumpulan data 2 menunjukkan kemiringan yang benar. Dengan plot eksponensial, log set data 1 menunjukkan ekor kanan lebih ringan daripada eksponensial, sedangkan set data 2 menunjukkan garis yang cukup lurus (nilai-nilai pada ekor kanan cenderung bergoyang sedikit bahkan ketika modelnya benar; ini adalah tidak biasa dengan ekor yang berat; itu adalah salah satu alasan mengapa Anda perlu memplot beberapa sampel dengan ukuran yang sama dengan yang Anda lihat untuk melihat seperti apa plot yang biasanya terlihat)

Kode yang digunakan untuk melakukan keempat plot:

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

Jika Anda memiliki masalah tipe regresi - masalah di mana mean berubah dengan variabel lain, Anda benar-benar hanya dapat menilai kesesuaian asumsi distribusi dengan adanya model yang sesuai untuk mean.

Glen_b -Reinstate Monica
sumber
3

Ini adalah masalah pemilihan model , tentu saja, dengan asumsi bahwa Anda hanya ingin memeriksa apakah data Anda berasal dari satu model atau yang lain dan bahwa tujuan Anda tidak menemukan model yang tepat di antara lautan distribusi dimensi yang tak terbatas. Jadi, satu pilihan adalah menggunakan AIC (yang mendukung model dengan nilai AIC terendah, dan saya tidak akan mencoba untuk menjelaskan di sini). Lihat contoh berikut dengan data simulasi:

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)
Teco
sumber
1

Mungkin fitdistr ()?

masukkan deskripsi gambar di sini

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
)
Labu
sumber
1
Meskipun solusi ini cocok dengan lognormal terhadap data, ia tidak memberi tahu apakah kecocokan itu baik atau apakah Pareto adalah pilihan yang lebih baik.
Whuber