Anova multi-arah yang diulang-ulang non-parametrik dalam R?

16

Pertanyaan berikut adalah salah satu cawan suci bagi saya untuk beberapa waktu sekarang, saya harap seseorang mungkin dapat memberikan saran yang baik.

Saya ingin melakukan tindakan berulang non-parametrik multiway anova menggunakan R.

Saya telah melakukan beberapa pencarian dan membaca online untuk beberapa waktu, dan sejauh ini hanya dapat menemukan solusi untuk beberapa kasus: tes friedman untuk satu cara nonparametrik diulang langkah anova, regresi ordinal dengan {car} Anova fungsi untuk multi-cara nonparametrik anova, dan sebagainya. Solusi parsial BUKAN apa yang saya cari di utas pertanyaan ini. Saya telah merangkum temuan saya sejauh ini dalam posting yang saya terbitkan beberapa waktu lalu (berjudul: Tindakan berulang ANOVA dengan R (fungsi dan tutorial) , kalau-kalau itu akan membantu siapa pun)


Jika apa yang saya baca online benar, tugas ini mungkin dapat dicapai dengan menggunakan model Regresi Ordinal campuran (alias: Model Peluang Proporsional).

Saya menemukan dua paket yang tampaknya relevan, tetapi tidak dapat menemukan sketsa tentang subjek:

Jadi menjadi baru dalam masalah ini, saya berharap untuk beberapa arahan dari orang-orang di sini.

Apakah ada tutorial / saran-bacaan tentang masalah ini? Lebih baik lagi, dapatkah seseorang menyarankan contoh kode sederhana untuk bagaimana menjalankan dan menganalisisnya dalam R (mis: "tindakan berulang non-parametrik multiway anova")?

Tal Galili
sumber
Tal, boleh saya bertanya apakah Anda menemukan solusi untuk ini? Saya mengalami masalah yang sama, dan balasan di bawah ini mungkin membantu dalam membantu menemukan jawaban, tetapi tidak benar-benar memberikan jawaban yang pasti. Saya memiliki 9 DV ordinal dan 2 titik waktu, dan saya sedang mencari tes yang sama yang ingin Anda lakukan.
Torvon
1
Hai Torvon. Saya tidak pernah menemukan solusi. Saya kira tes permutasi akan menjadi rute teraman, tapi saya tidak pernah punya waktu untuk duduk dan membuatnya bekerja. Jika ya - silakan datang lagi untuk memposting jawaban Anda. Cheers, T
Tal Galili
Terima kasih atas tanggapan cepat Anda. Saya harus menyelesaikan ini dan akan memberi tahu Anda.
Torvon

Jawaban:

8

The ez paket, yang saya penulis, memiliki fungsi yang disebut ezPerm () yang menghitung tes permutasi, tapi mungkin tidak melakukan interaksi dengan benar (mengakui dokumentasi sebanyak). Versi terbaru memiliki fungsi yang disebut ezBoot (), yang memungkinkan Anda melakukan bootstrap resampling yang memperhitungkan tindakan berulang (dengan melakukan resampling subjek, lalu dalam subjek), baik menggunakan sarana sel tradisional sebagai statistik prediksi atau menggunakan pemodelan efek campuran untuk membuat prediksi. untuk setiap sel dalam desain. Saya masih tidak yakin bagaimana "non-parametrik" CI bootstrap dari prediksi model efek campuran; intuisi saya adalah bahwa mereka mungkin dianggap non-parametrik, tetapi kepercayaan diri saya di bidang ini rendah mengingat bahwa saya masih belajar tentang model efek campuran.

Mike Lawrence
sumber
Halo Mike. Terima kasih atas jawabannya, dan untuk paket Anda - ini benar-benar hebat!
Tal Galili
@Mike, paket Anda tampaknya menjadi satu-satunya yang berfungsi untuk desain beragam faktor. The aovpalternatif - dari yatim lmpermpaket - menghasilkan variasi besar untuk p-nilai, lihat ini . Saya punya beberapa pertanyaan: Di mana saya dapat menemukan referensi bibliografi untuk implementasi ezPerm? Bagaimana saya bisa mengartikan bahwa fungsi tersebut mungkin tidak melakukan interaksi dengan benar ? Apa yang bisa menjadi tes post-hoc dalam kasus ini? Terima kasih!
toto_tico
@ Mike, apakah sesuatu seperti ezPerm( data = DATA, dv = DV, wid = WID, within = interaction(A,B), perms = 1e3)masuk akal untuk memeriksa ulang jika interaksinya signifikan?
toto_tico
5

Jika ragu, bootstrap! Sungguh, saya tidak tahu prosedur kalengan untuk menangani skenario seperti itu.

Bootstrap adalah cara umum yang berlaku untuk menghasilkan beberapa parameter kesalahan dari data yang ada. Alih-alih mengandalkan asumsi parametrik yang khas, prosedur bootstrap memanfaatkan karakteristik sampel untuk menghasilkan distribusi empiris yang dapat dibandingkan dengan perkiraan sampel Anda.

Google scholar adalah emas ... sudah pernah dilakukan sebelumnya ... setidaknya sekali.

Lunneborg, Clifford E .; Tousignant, James P .; 1985 "Bootstap Efron dengan Aplikasi ke Desain Tindakan Berulang." Penelitian Perilaku Multivariat; Apr85, Vol. 20 Edisi 2, p161, 18p

Brett
sumber
1
Terima kasih atas petunjuknya Brett! Saya ingin tahu apakah seseorang harus mengimplementasikannya sekarang di R (saya rasa tidak).
Tal Galili
1
Baik. R memiliki banyak rutin untuk membantu dengan bootstrap dan metode pengacakan lainnya, tetapi saya tidak tahu bahwa Anda akan menemukan sesuatu yang spesifik untuk masalah ini.
Brett
Kalimat pertama yang sangat bagus. Saya harap ini bukan hak cipta, karena saya berencana untuk menggunakannya: D
gui11aume
0

Ada "trik" yang disebutkan di beberapa forum dan milis - Saya juga menemukannya di buku Joop Hox "Analisis Multilevel" (edisi kedua, 2010), hlm. 189.

Idenya adalah: Anda memformat ulang data panjang Anda ke dalam dataset panjang yang panjang di mana Anda membuat DV baru yang mencakup semua respons DV Anda, dan menggunakan variabel indeks yang menyimpan informasi tentang sifat DV untuk memprediksi hasil ini.

Anggaplah Anda memiliki 9 gejala depresi (ordinal), 2 titik pengukuran, dan 300 subjek. Jadi, sementara Anda memiliki 300 baris dalam dataset normal Anda, dan dalam dataset panjang Anda Anda akan memiliki 600 baris, dataset baru ini akan memiliki 9 (gejala) x 2 (waktu) x 300 (subjek) baris.

Variabel baru "gejala" DV sekarang berisi tingkat keparahan gejala peserta pada 9 gejala, variabel "indeks" berisi informasi tentang sifat gejala (1 hingga 9), dan kemudian ada dua variabel "waktu" dan " Identitas pengguna".

Anda sekarang dapat menggunakan ordinalpaket untuk menjalankan ini.

data<-read.csv("data_long_long.csv", head=T)

data$symptoms <- factor(data$symptoms)
data$time <- factor(data$time)
data$index <-factor(data$index)

m1<-clmm2(symptoms ~ index+time, random=UserID, data = data, Hess=TRUE, nAGQ=10)

Dalam kasus spesifik saya, saya tertarik apakah ada interaksi yang signifikan antara indeks dan waktu, jadi saya menjalankan satu model tambahan dan membandingkannya:

m2<-clmm2(symptoms ~ index+time, random=UserID, data = data, Hess=TRUE, nAGQ=10)
anova(m1,m2)

CLMM2 menggunakan model intersep acak (sepengetahuan saya, paket ordinaltidak melakukan lereng acak), jika Anda tidak menggunakan model intersep acak, Anda dapat menjalankan model alih-alih menggunakan CLM, misalnya:

m3<-clm(symptoms ~ index+time, data = data)
Torvon
sumber
1
tidak m1 dan m2 persis sama, mungkin maksudmu clmm2(symptoms ~ index*time, random=UserID, data = data, Hess=TRUE, nAGQ=10) anova(m1,m2). Apakah Anda tahu bagaimana mengekspresikannya dengan fungsi clmm baru? Saya tidak yakin dengan notasi tersebut.
toto_tico