Mencari pola acara dalam rangkaian waktu

8

Saya memiliki percobaan kursus waktu yang mengikuti 8 kelompok perlakuan 12 ikan selama 24 jam dengan pengamatan dilakukan pada interval 5 detik. Di antara pengukuran yang dilakukan adalah seberapa jauh setiap ikan melakukan perjalanan (dalam mm) di antara pengamatan. 24 jam dibagi menjadi 1 periode gelap dan 1 periode terang.

Berikut adalah alur pergerakan 12 individu ikan dalam kelompok perlakuan H untuk jam pertama periode gelap:

kelompok kontrol selama 1 jam gelap

Anda dapat melihat bahwa beberapa ikan memiliki periode tidak aktif yang lama, beberapa periode yang singkat, dan beberapa tidak memilikinya selama jendela khusus ini . Saya perlu menggabungkan data dari 12 ikan dalam kelompok perlakuan sedemikian rupa untuk mengidentifikasi panjang dan frekuensi periode istirahat selama seluruh periode gelap dan seluruh periode terang. Saya perlu melakukan ini untuk setiap kelompok perlakuan. Maka saya perlu membandingkan perbedaan antara panjang periode istirahat dan frekuensi.

Saya bukan gadis statistik, dan saya benar-benar di laut. Masalahnya menyerupai penyelarasan urutan dengan saya (latar belakang bioinfomatika saya), jadi saya berpikir model Hidden Markov, tapi ini mungkin jauh dari dasar. Adakah yang bisa menyarankan pendekatan yang baik untuk masalah ini dan mungkin contoh kecil dalam R?

Terima kasih!

dnagirl
sumber
1
Ini tampaknya memiliki beberapa submasalah. Pertama, Anda perlu mencari dan mengekstrak periode tidak aktif untuk setiap ikan. Seseorang dapat melakukannya hanya dengan melihat, tetapi jika Anda memiliki banyak data, mungkin Anda ingin melakukannya secara otomatis. Kedua, Anda perlu menggabungkan mereka untuk semua ikan dalam satu kelompok. Ketiga, Anda perlu membandingkan mereka di seluruh grup. Manakah dari ini yang perlu Anda bantu? Karena Anda menyebutkan HMM, saya menebak yang pertama. Jika demikian, metode sepele akan hanya untuk menemukan interval ketika gerakan = 0. Mengapa tidak akan berhasil? Jika ada satu lonjakan singkat selama istirahat, apakah Anda menghitungnya sebagai satu periode panjang
SheldonCooper
atau dua periode singkat? Jika gerakannya bukan 0, tetapi sangat dekat dengan 0, apakah Anda ingin menghitungnya sebagai istirahat?
SheldonCooper
@SheldonCooper: ini masalah pertama yang saya alami. Aktivitas minimal seharusnya tidak dianggap sebagai gangguan istirahat. Jadi sampel c93 memiliki 1 (atau mungkin 2) periode tidak aktif, tetapi sampel c87 memiliki 4. Saya berpikir untuk menormalkan skala aktivitas menjadi 1 berdasarkan maks individu sehingga perubahan dalam kegiatan proporsional daripada absolut. Saya juga memiliki pemikiran bahwa karena pengamatan ini muncul secara kasar, mungkin analisis Fourier mungkin merupakan pendekatan yang tepat.
dnagirl
1
Saya pikir kita akan memerlukan definisi formal "tidak aktif" atau "istirahat". Tidak apa-apa jika Anda menyatakannya dalam hal apa yang dilakukan ikan daripada dalam hal apa plotnya (kita bisa menerjemahkan nanti), tetapi harus formal. Jika definisi formal persis seperti yang Anda perlukan bantuan, berikut adalah beberapa hal untuk dipertimbangkan: 1. Saya tidak berpikir ada definisi standar "tidak aktif dalam deret waktu" yang bisa Anda ambil dan gunakan; 2. mungkin bermanfaat untuk mengetahui lebih banyak konteks tentang percobaan Anda untuk menghasilkan definisi;
SheldonCooper
3. dalam biologi orang sering sangat menerima definisi sederhana dan langsung seperti "tidak aktif adalah periode terus-menerus ketika gerakan kurang dari 0,1, mungkin terganggu oleh lonjakan ketinggian tidak lebih dari 2 dan durasi tidak lebih dari 20 detik, berjarak setidaknya 5 menit terpisah ". Tentu, definisi ini rapuh dan ambang batas tampak sewenang-wenang (bagaimana jika mereka berjarak 4 menit 55 detik terpisah), tetapi tujuan utama adalah untuk menghilangkan bias yang mungkin dimiliki seseorang dalam mengklasifikasikan periode istirahat menggunakan akal sehat.
SheldonCooper

Jawaban:

1

Saya pikir analisis berbasis HMM dapat membantu Anda. Karena Anda tahu bahwa Anda mencari perbedaan antara istirahat dan gerak, Anda bisa saja mendalilkan model 2-negara. Untuk HMM, Anda perlu menentukan probabilitas emisi untuk setiap negara. Percobaan pertama saya adalah menggunakan eksponensial (atau gamma?) Untuk fase istirahat (karena dibatasi oleh nol dari bawah dan distribusi normal untuk keadaan lain (Anda harus mengatur parameter awal ke beberapa nilai wajar). kemudian dapat menghitung distribusi keadaan posterior bersama dengan perkiraan kemungkinan maksimum untuk parameter Anda. Urutan keadaan posterior dapat memberi Anda perkiraan lama waktu istirahat dan aktivitas (hanya menghitung jumlah status berurutan). Anda bahkan dapat menempatkan periode gelap / terang sebagai kovariat ke dalam model.

Http://cran.r-project.org/web/packages/depmixS4/index.html ini adalah paket yang bagus untuk HMM. Sketsa http://cran.r-project.org/web/packages/depmixS4/vignettes/depmixS4.pdf ini memiliki informasi yang sangat berguna tentang penerapannya dan penggunaan kendala serta kovariat dengan HMM juga.

Satu masalah yang saya lihat adalah Anda punya banyak ikan. Anda harus mulai dengan memasang HMM untuk setiap ikan secara terpisah. Mungkin Anda bisa menggabungkan ikan jika Anda bisa "menormalkan" aktivitas sedemikian rupa sehingga mereka bisa menghasilkan parameter probabilitas emisi yang sama. Atau Anda bisa menggunakan nomor ikan sebagai kovariat.

Beberapa contoh kode:

require(depmixS4)
set.seed(1)
mod <- depmix( activity~1, data=yourdata, nstates=2,
               family=gaussian() );
fitted <- fit(mod)

tetapi ada banyak, banyak kemungkinan, lihat tautan di atas!

Semoga berhasil dengan proyek Anda!

ini
sumber