Saya bukan ahli, jadi maafkan saya jika beberapa terminologi sedikit canggung. Senang memberikan informasi lebih lanjut di mana diperlukan.
Saya memiliki dua vektor dari 50 nilai numerik berpasangan di R. Saya ingin melakukan uji pengacakan atau permutasi dua sisi untuk menentukan apakah perbedaannya disebabkan oleh kebetulan atau tidak.
Tes permutasi (juga disebut uji pengacakan, uji pengacakan ulang, atau tes eksak) adalah jenis uji signifikansi statistik di mana distribusi statistik uji di bawah hipotesis nol diperoleh dengan menghitung semua nilai yang mungkin dari statistik uji di bawah pengaturan ulang label pada titik data yang diamati.
Saya ingin melakukan jenis tes ini karena saya percaya distribusi nilai dalam vektor melanggar asumsi tes lain seperti uji-t (misalnya, banyak nilai numerik dalam vektor adalah 0).
The permtest
fungsi dalam perpustakaan BHH2 , hampir tidak apa yang saya inginkan, tetapi beroperasi pada semua permutasi, yang akan memakan waktu terlalu lama. Sebagai gantinya, saya ingin memperkirakan nilai-p, dengan mengambil sampel sejumlah besar kemungkinan permutasi. Saya telah melihat dalam paket koin , tetapi tidak ada di sana tampaknya melakukan tes permutasi dengan pengambilan sampel dari vektor numerik berpasangan.
Beberapa googling menuntun saya ke email ini , yang menunjukkan bahwa alasan saya tidak dapat menemukan paket untuk melakukannya adalah karena itu adalah satu-baris di R. Sayangnya, saya tidak cukup berpengalaman dengan R untuk dapat menghasilkan satu itu -liner.
Apakah ada paket atau metode yang akan melakukan uji permutasi berpasangan dua sisi hanya menggunakan sampel ruang permutasi?
Jika tidak, akankah seseorang dapat membagikan sedikit kode R untuk melakukannya?
sumber
coin
(di antara beberapa lainnya) melakukan tes pengacakan. mis. lihat jawaban untuk pertanyaan ini (baca semuanya) . Jika saya mengerti benar, contoh-contoh mencakup kasus perkiraan dan tepat dan mencakup sampel independen dan dependen.oneway_test(y ~ x | pairs, distribution=approximate(B=9999))
denganlibrary(coin)
.Jawaban:
Meskipun saya menunjukkan komentar pada penggunaan
coin
paket, saya pikir itu layak menggambarkan bahwa tes permutasi / pengacakan benar-benar sangat sederhana, jadi saya telah melakukannya.Di sini saya menulis beberapa kode R untuk melakukan uji pengacakan untuk uji satu sampel lokasi. Tes secara acak membalik tanda pada perbedaan dan menghitung rata-rata; ini sama dengan menetapkan secara acak setiap pasangan nilai ke grup x dan y. Kode di bawah ini dapat dibuat secara signifikan lebih pendek (saya bisa melakukannya dalam dua baris cukup mudah, atau bahkan satu jika Anda tidak keberatan kode lebih lambat).
Kode ini membutuhkan beberapa detik di mesin saya:
Itu semuanya.
Catatan yang
rbinom(length(d),1,.5)*2-1)
memberikan tanda acak-1
atau1
... yaitu tanda acak, jadi ketika kita mengalikannya dengan set tanda yang ditandatanganid
, itu setara dengan pemberian secara acak+
atau-
tanda pada perbedaan absolut. [Tidak masalah apa distribusi tanda padad
Anda mulai dengan, sekarangd
akan memiliki tanda-tanda acak.]Di sini, saya membandingkannya dengan uji-t pada beberapa data yang dibuat:
Ketika uji-t valid, biasanya memberikan nilai-p yang sangat mirip dengan uji permutasi yang disebutkan secara lengkap, dan nilai-p yang disimulasikan seperti di atas (ketika jumlah simulasi cukup besar) akan menyatu dengan nilai-p kedua.
Pada jumlah replikasi yang digunakan di atas, nilai p permutasi benar (yaitu dari penghitungan lengkap) 0,05 akan diperkirakan dalam 0,001 (yaitu, akan memberikan nilai p pengacakan antara 0,049 dan 0,051) sekitar 85% dari waktu. dan dalam 0,002 lebih dari 99,5% dari waktu.
sumber
d
, karena begitulah tes permutasi perbedaan rata-rata untuk data pasangan bekerja. Lihat komentar tambahan baru setelah potongan kode itu.Berikut ini adalah kode untuk melakukan tes permutasi. Saya punya data di sana misalnya. x adalah perbedaan antara kedua vektor.
sumber