Tes normalitas tidak konsisten: Kolmogorov-Smirnov vs Shapiro-Wilk

8

Saat ini saya melihat beberapa data yang dihasilkan oleh simulasi MC yang saya tulis - saya berharap nilai-nilai akan terdistribusi secara normal. Secara alami saya merencanakan histogram dan itu terlihat masuk akal (saya kira?):

[Kiri atas: histogram dengan dist.pdf(), kanan atas: histogram kumulatif dengan dist.cdf(), bawah: plot QQ, datavs dist]

Kemudian saya memutuskan untuk melihat lebih dalam tentang ini dengan beberapa tes statistik. (Catat itu dist = stats.norm(loc=np.mean(data), scale=np.std(data)).) Apa yang saya lakukan dan output yang saya dapatkan adalah sebagai berikut:

  1. Tes Kolmogorov-Smirnov:

    scipy.stats.kstest(data, 'norm', args=(data_avg, data_sig))
    KstestResult(statistic=0.050096921447209564, pvalue=0.20206939857573536)
    
  2. Tes Shapiro-Wilk:

    scipy.stats.shapiro(dat)
    (0.9810476899147034, 1.3054057490080595e-05)
    # where the first value is the test statistic and the second one is the p-value.
    
  3. QQ-plot:

    stats.probplot(dat, dist=dist)

Kesimpulan saya dari ini adalah:

  • dengan melihat histogram dan histogram kumulatif, saya pasti akan menganggap distribusi normal

  • hal yang sama berlaku setelah melihat plot QQ (apakah pernah jauh lebih baik?)

  • tes KS mengatakan: 'ya ini distribusi normal'

Kebingungan saya adalah: tes SW mengatakan tidak terdistribusi secara normal (nilai-p jauh lebih kecil dari signifikansi alpha=0.05, dan hipotesis awal adalah distribusi normal). Saya tidak mengerti ini, apakah ada yang punya interpretasi yang lebih baik? Apakah saya mengacau di beberapa titik?

rammelmueller
sumber
5
QQplot untuk normalitas bisa lebih baik dari itu: coba plot beberapa normals acak dengan ukuran sampel yang sama untuk mendapatkan benchmark. Anda memiliki sedikit ketidaknormalan, seperti yang ditunjukkan oleh kelengkungan sistematis pada QQplot. Histogram dan plot distribusi kumulatif kurang bermanfaat untuk pekerjaan yang presisi. Saya tidak akan mengistimewakan KS di sini; ia cenderung lebih sensitif di tengah distribusi daripada di ekor, yang merupakan kebalikan dari apa yang Anda butuhkan. SW adalah ujian, dan tidak (tidak bisa!) Mengukur seberapa tidak normal yang bermasalah.
Nick Cox
5
@Nick Aplikasi KS ini tidak valid, karena membandingkan data dengan distribusi normal dengan parameter yang ditentukan oleh data : itu membutuhkan versi Lilliefors. (Saya tahu Anda tahu itu, tetapi Anda tampaknya telah mengabaikan kesalahan ini.) Akibatnya nilai p-nya terlalu tinggi.
whuber
4
@Nick Saya menganggap aplikasi itu salah, berdasarkan pada dua bukti: (1) nama fungsi merujuk ke KS dan (2) tidak ada cara dalam argsargumen untuk mengungkapkan apakah parameter berasal dari data atau tidak. Dokumentasinya tidak jelas , tetapi kurangnya penyebutan perbedaan ini sangat menunjukkan bahwa ia tidak melakukan tes Lilliefors. Pengujian itu dijelaskan, dengan contoh kode, di stackoverflow.com/a/22135929/844723 .
whuber
1
Ah! Ini adalah sesuatu yang saya temukan mencurigakan tetapi saya tidak menyadari metode itu - saya akan segera mengubahnya. Terima kasih telah menunjukkan itu @whuber!
rammelmueller
2
@Nick Saya suka tes KS karena beberapa alasan: kesederhanaannya, koneksi langsung ke plot QQ, fleksibilitasnya, dan kekuatannya. Saya berpendapat bahwa setiap tes statistik dapat divisualisasikan dan (hampir) setiap visualisasi menunjukkan tes yang sesuai - dan ini adalah salah satu contoh terbaik dari tesis itu (terutama jika seseorang memplot residu dalam plot QQ, yang secara visual lebih kuat) . Meskipun saya telah menerapkan banyak tes GoF lainnya seperti SW dan SF dan AD, KS selalu menjadi tes masuk saya untuk saat-saat (relatif jarang) ketika tes distribusi formal diperlukan.
whuber

Jawaban:

6

Ada banyak cara distribusi dapat berbeda dari distribusi normal. Tidak ada tes yang bisa menangkap semuanya. Akibatnya, setiap tes berbeda dalam hal memeriksa untuk melihat apakah distribusi Anda cocok dengan normal. Sebagai contoh, tes KS melihat pada kuantil di mana fungsi distribusi kumulatif empiris Anda berbeda secara maksimal dari fungsi distribusi kumulatif teoritis normal. Ini sering terjadi di suatu tempat di tengah-tengah distribusi, yang bukan tempat kita biasanya peduli tentang ketidakcocokan. Tes SW berfokus pada ekor, yang merupakan tempat kami biasanya peduli jika distribusinya sama. Akibatnya, SW biasanya lebih disukai. Selain itu, tes KW tidak valid jika Anda menggunakan parameter distribusi yang diperkirakan dari sampel Anda (lihat:Apa perbedaan antara uji normalitas Shapiro-Wilk dan uji normalitas Kolmogorov-Smirnov? ). Anda harus menggunakan SW di sini.

Tetapi plot umumnya direkomendasikan dan tes tidak (lihat: Apakah pengujian normal 'pada dasarnya tidak berguna'? ). Anda dapat melihat dari semua plot Anda bahwa Anda memiliki ekor kanan yang berat dan ekor kiri yang ringan relatif terhadap normal normal. Artinya, Anda memiliki sedikit condong ke kanan.

gung - Pasang kembali Monica
sumber
2

Anda tidak dapat memilih tes normal berdasarkan hasil. Dalam hal ini, Anda bisa menolak dengan segala tes yang dilakukan, atau tidak menggunakannya sama sekali. Tes KS tidak terlalu kuat, itu bukan tes normalitas "khusus". Jika sesuatu SW mungkin lebih dapat dipercaya dalam kasus ini.

Bagi saya plot QQ Anda memiliki tanda-tanda ekor kanan yang gemuk atau condong ke kiri, atau keduanya. Saya akan menyarankan menggunakan alat Tukey untuk mempelajari kegemukan ekor. Ini akan memberi Anda indikasi seberapa besar distribusi seperti normal atau Cauchy.

Aksakal
sumber
Bagaimana Anda menyimpulkan dari plot-QQ sampai ke kegelapan ekor? Dan: distribusi mana yang akan Anda sarankan?
rammelmueller
1
@rammelmuller, ekor yang lebih gemuk akan menunjukkan kurva s-seperti di mana belokan kiri ke bawah dan belokan kanan ke atas. Dalam kasus Anda, belokan kiri juga naik, yang bisa menjadi tanda condong ke kiri.
Aksakal
Terima kasih telah menunjukkan alatnya, saya akan memeriksanya. Demi kelengkapan: Saya memiliki beberapa dataset lain dan hasilnya kadang-kadang sedikit berbeda: ekor atas plot QQ bervariasi, tetapi ekor bawah secara konsisten sedikit terlalu tinggi - pertanda kemiringan?
rammelmueller
1
Saya pikir Anda perlu bertanya pada diri sendiri seberapa penting pengujian asumsi normal untuk Anda seperti yang disarankan @NickCox. Mengapa Anda menguji di tempat pertama? Ekor pendek ke atas dan jangka panjang ke bawah bisa menjadi tanda ekor pendek. Yang paling penting ini semua mungkin tidak penting bagi Anda
Aksakal
1
Saya sadar, bahwa saya mungkin akan dipenggal setelah pernyataan ini, tetapi di sini saya pergi: Saya perlu data saya menjadi "cukup wajar" - jika ada sesuatu yang sangat mencurigakan, yaitu ekor yang sangat gemuk atau kemiringan yang ekstrem, maka saya harus berburu untuk beberapa masalah mendasar. Ini sepertinya tidak menjadi masalah dan proyeknya baik-baik saja. Alasan untuk pertanyaan di sini adalah lebih untuk memeriksa apakah saya tidak sepenuhnya salah dalam pekerjaan saya (yaitu menafsirkan hasil dan semacamnya)
rammelmueller