Bagaimana menjalankan ANOVA dua arah pada data tanpa normalitas atau persamaan varians dalam R?

16

Saya sedang mengerjakan tesis master saya saat ini dan berencana menjalankan statistik dengan SigmaPlot. Namun, setelah menghabiskan beberapa waktu dengan data saya, saya sampai pada kesimpulan bahwa SigmaPlot mungkin tidak cocok untuk masalah saya (saya mungkin salah) jadi saya memulai upaya pertama saya di R, yang sebenarnya tidak membuatnya lebih mudah.

Rencananya adalah menjalankan DUA-WAY-ANOVA sederhana pada data saya yang dihasilkan dari 3 protein berbeda dan 8 perlakuan berbeda pada mereka, jadi dua faktor saya adalah protein dan perawatan. Saya menguji normalitas menggunakan keduanya

> shapiro.test(time)

dan

> ks.test(time, "norm", mean=mean(time), sd=sqrt(var(time)))

Dalam kedua kasus (mungkin tidak mengejutkan) saya berakhir dengan distribusi yang tidak normal.

Yang membuat saya dengan pertanyaan pertama tes mana yang akan digunakan untuk persamaan varian. Saya datang dengan

> chisq.test(time)

dan hasilnya adalah, saya tidak memiliki persamaan varians dalam data saya juga.

Saya mencoba berbagai transformasi data (log, pusat, standardisasi), yang semuanya tidak menyelesaikan masalah saya dengan varians.

Sekarang saya bingung, bagaimana melakukan ANOVA untuk menguji protein mana dan perawatan mana yang berbeda secara signifikan satu sama lain. Saya menemukan sesuatu tentang Tes Kruskal-Walis, tetapi hanya untuk satu faktor (?). Saya juga menemukan hal-hal tentang peringkat atau randamization, tetapi belum bagaimana menerapkan teknik-teknik tersebut di R.

Adakah yang punya saran apa yang harus saya lakukan?

Sunting: terima kasih atas jawaban Anda, saya sedikit kewalahan dengan bacaannya (sepertinya semakin lama semakin berkurang), tetapi saya tentu saja akan terus melanjutkan.

Berikut contoh data saya, seperti yang disarankan (Saya sangat menyesal atas formatnya, saya tidak dapat menemukan solusi atau tempat lain untuk meletakkan file. Saya masih baru dalam hal ini semua.):

protein treatment   time  
A   con 2329.0  
A   HY  1072.0  
A   CL1 4435.0  
A   CL2 2971.0  
A   CL1-HY sim  823.5  
A   CL2-HY sim  491.5  
A   CL1+HY mix  2510.5  
A   CL2+HY mix  2484.5  
A   con 2454.0  
A   HY  1180.5  
A   CL1 3249.7  
A   CL2 2106.7  
A   CL1-HY sim  993.0  
A   CL2-HY sim  817.5  
A   CL1+HY mix  1981.0  
A   CL2+HY mix  2687.5  
B   con 1482.0  
B   HY  2084.7  
B   CL1 1498.0  
B   CL2 1258.5  
B   CL1-HY sim  1795.7  
B   CL2-HY sim  1804.5  
B   CL1+HY mix  1633.0  
B   CL2+HY mix  1416.3  
B   con 1339.0  
B   HY  2119.0  
B   CL1 1093.3  
B   CL2 1026.5  
B   CL1-HY sim  2315.5  
B   CL2-HY sim  2048.5  
B   CL1+HY mix  1465.0  
B   CL2+HY mix  2334.5  
C   con 1614.8  
C   HY  1525.5  
C   CL1 426.3  
C   CL2 1192.0  
C   CL1-HY sim  1546.0  
C   CL2-HY sim  874.5  
C   CL1+HY mix  1386.0  
C   CL2+HY mix  364.5  
C   con 1907.5  
C   HY  1152.5  
C   CL1 639.7  
C   CL2 1306.5  
C   CL1-HY sim  1515.0  
C   CL2-HY sim  1251.0  
C   CL1+HY mix  1350.5  
C   CL2+HY mix  1230.5
Sabine
sumber
2
Tampaknya Anda baik-baik saja dengan R, tetapi saya merasa kesulitan Anda mungkin tidak terkait R sama sekali. Mungkin Anda perlu berkonsultasi dengan ahli statistik terlebih dahulu untuk memahami masalahnya, hanya dengan demikian Anda akan dapat menangani hal ini secara praktis. Pertanyaan Anda saat ini cukup rumit dan dapat menghalangi orang untuk memukulnya. Untuk bagian teknis, berikut adalah beberapa situs: ats.ucla.edu/stat/R/seminars/Repeat_Measures/… and personality-project.org/R/r.anova.html
Roman Luštrik
4
Alternatif yang sangat baik untuk menentukan peringkat tes adalah dengan menggunakan permutasi ANOVA ( uvm.edu/~dhowell/StatPages/More_Stuff/Permutation%20Anova/… ). Dengan pendekatan itu heteroskedastisitas tidak menjadi masalah. Alasan utama orang menggunakan tes peringkat adalah karena mereka jauh lebih mudah secara komputasi. Itu tidak masalah lagi. Kami memiliki komputer R dan efisien ...
Mikko
1
Apa itu balasan? Perhatikan bahwa kami tidak benar-benar peduli jika responsnya berdistribusi normal - kami ingin memeriksa apakah residu dari analisis tersebut mendekati normal dengan varian yang serupa. Tetapi jika benar-benar ada efek pengobatan maka kita tidak akan berharap bahwa respon akan didistribusikan secara normal secara marjinal.
Dason
1
Saya akan perhatikan bahwa saya baru saja mengambil data yang Anda posting dan menjalankan anova dua arah dan melakukan tes shapiro wilks pada residu dan ini memberikan nilai p 0,5022 yang tidak menyiratkan terlalu banyak kekhawatiran.
Dason
1
@Sabine normality seringkali bukan masalah besar tentang ANOVA, tetapi sampel Anda harus berasal dari populasi yang sama yang berarti bahwa persamaan varian adalah yang paling penting, tentu saja asumsi setelah pengacakan, tentu saja. Anda harus melakukan sesuatu, jika varians Anda kurang lebih sama (coba ?bartlett.test)
Mikko

Jawaban:

12

Ini mungkin lebih dari sekadar komentar daripada jawaban, tetapi itu tidak cocok sebagai komentar. Kami mungkin dapat membantu Anda di sini, tetapi ini mungkin memerlukan beberapa iterasi; kami memerlukan informasi lebih lanjut.

Pertama, apa variabel respons Anda?

Kedua, perhatikan bahwa distribusi marginal dari respons Anda tidak harus normal, melainkan distribusi yang tergantung pada model (yaitu, residu) harus - tidak jelas bahwa Anda telah memeriksa residu Anda. Selain itu, normalitas adalah asumsi paling tidak penting dari model linier (misalnya, ANOVA); residunya mungkin tidak perlu menjadi sangat normal. Tes normalitas biasanya tidak bermanfaat (lihat di sini untuk diskusi tentang CV), plot jauh lebih baik. Saya akan mencoba qq-plot residu Anda. Dalam Rhal ini dilakukan dengan qqnorm(), atau coba qqPlot()dicarpaket. Ini juga layak dipertimbangkan dengan cara di mana residunya tidak normal: kemiringan lebih merusak daripada kurtosis berlebih, khususnya jika kemiringan arah arah di antara kelompok.

Jika benar-benar ada masalah yang perlu dikhawatirkan, transformasi adalah strategi yang baik. Mengambil log dari data mentah Anda adalah satu opsi, tetapi bukan satu-satunya. Perhatikan bahwa pemusatan dan standardisasi sebenarnya bukan transformasi dalam pengertian ini. Anda ingin melihat ke dalam Box & Cox keluarga transformasi kekuasaan . Dan ingat, hasilnya tidak harus normal, cukup baik.

Selanjutnya, saya tidak mengikuti penggunaan uji chi-square untuk homogenitas varians, meskipun mungkin baik-baik saja. Saya sarankan Anda menggunakan tes Levene's (digunakan leveneTest()dalam car). Heterogenitas lebih merusak daripada non-normal, tetapi ANOVA cukup kuat jika heterogenitasnya kecil. Aturan standar adalah bahwa varians grup terbesar dapat mencapai empat kali terkecil tanpa menimbulkan masalah yang kuat. Transformasi yang baik juga harus mengatasi heterogenitas.

Jika strategi ini tidak cukup, saya mungkin akan mengeksplorasi regresi yang kuat sebelum mencoba pendekatan non-parametrik.

Jika Anda dapat mengedit pertanyaan Anda dan mengatakan lebih banyak tentang data Anda, saya mungkin dapat memperbarui ini untuk memberikan informasi yang lebih spesifik.

gung - Reinstate Monica
sumber
Poin ke-2 saya, saya baru-baru ini menulis jawaban di sini yang dapat membantu memperjelas masalah ini. Anda mungkin ingin membacanya.
gung - Reinstate Monica
8

( catatan: jawaban ini diposting sebelum pertanyaan dimigrasikan dan digabung dari SO, jadi detailnya telah ditambahkan ke pertanyaan yang tidak dibahas di sini. Banyak yang dialamatkan dalam komentar dan jawaban oleh @ung).

Ada banyak pendekatan berbeda, dan pertanyaan ini telah dibahas di tempat lain di situs ini. Berikut adalah daftar beberapa pendekatan, dengan tautan ke pertanyaan lain di situs dan beberapa referensi .:

  1. Transformasi daya Box-Cox dapat menormalkan residu yang berada pada skala non-linear
  2. ANOVA pada data peringkat sangat mudah tetapi memiliki daya yang berkurang dan sulit untuk diartikan. Lihat Conover dan Iman, (1981)
  3. Model logistik ordinal Odds proporsional
  4. Tes Permutasi ( Anderson dan ter Braak 2003 ), diimplementasikan dalam dan dijelaskan oleh Anderson dan sebagai adonisfungsi dalam paket R Vegan
  5. Bootstrap
  6. Pemodelan Hierarchical Bayesian ( Gelman 2005 )
David LeBauer
sumber
+1, ini adalah daftar yang bagus dari beberapa opsi yang tersedia untuk dijelajahi.
gung - Pasang kembali Monica
Di bawah ini adalah komentar yang awalnya dipertukarkan di Stack Overflow, entah bagaimana hilang selama migrasi. Lihat meta.stats.stackexchange.com/q/1157/930 .
chl
Apakah Anda tahu jika ada implementasi dari ide Anderson dan Braak? - Henrik 16 Mei jam 15:15
chl
@ Henrik ada implementasi di FORTRAN Anderson 2005 yang tersedia melalui fungsi R adonisdalam Veganpaket R / David 16 Mei di 16:20
chl
Terima kasih. adonistampaknya bekerja bahkan dengan DVD univariat Namun, saya merasa bahwa itu menggunakan sesuatu seperti tipe 1 jumlah kuadrat saat saya mendapatkan pesan Terms added sequentially (first to last)setiap kali menjalankannya. Sudahkah Anda menggunakannya atau bisa mengatakan apa-apa tentang itu? - Henrik 16 Mei jam 17:03
chl