Data terdiri dari spektra optik (intensitas cahaya terhadap frekuensi) yang direkam pada waktu yang bervariasi. Poin diperoleh pada grid reguler dalam x (waktu), y (frekuensi). Untuk menganalisis evolusi waktu pada frekuensi tertentu (kenaikan cepat, diikuti oleh peluruhan eksponensial), saya ingin menghapus beberapa derau yang ada dalam data. Kebisingan ini, untuk frekuensi tetap, mungkin dapat dimodelkan secara acak dengan distribusi gaussian. Namun, pada waktu yang tetap, data menunjukkan jenis kebisingan yang berbeda, dengan lonjakan palsu besar dan osilasi cepat (+ derau gaussian acak). Sejauh yang saya bisa bayangkan kebisingan di sepanjang dua sumbu harus tidak berkorelasi karena memiliki asal fisik yang berbeda.
Apa prosedur yang wajar untuk memperlancar data? Tujuannya bukan untuk mendistorsi data, tetapi menghapus artefak berisik yang "jelas". (dan dapatkah over-smoothing disetel / dikuantifikasi?) Saya tidak tahu apakah merapikan satu arah secara terpisah dari yang lain masuk akal, atau apakah lebih baik halus dalam 2D.
Saya sudah membaca hal-hal tentang estimasi kepadatan kernel 2D, interpolasi polinomial / spline 2D, dll. Tapi saya tidak akrab dengan jargon atau teori statistik yang mendasarinya.
Saya menggunakan R, yang saya lihat banyak paket yang tampaknya terkait (MASS (kde2), bidang (smooth.2d), dll.) Tetapi saya tidak dapat menemukan banyak saran tentang teknik mana yang berlaku di sini.
Saya senang belajar lebih banyak, jika Anda memiliki referensi khusus untuk menunjukkan saya (saya mendengar MASS akan menjadi buku yang bagus, tapi mungkin terlalu teknis untuk non-ahli statistik).
Sunting: Berikut adalah perwakilan spektrogram boneka dari data, dengan irisan sepanjang dimensi waktu dan panjang gelombang.
Tujuan praktis di sini adalah untuk mengevaluasi tingkat peluruhan eksponensial dalam waktu untuk setiap panjang gelombang (atau nampan, jika terlalu berisik).
Jawaban:
Anda perlu menentukan model yang memisahkan sinyal dari noise.
Ada komponen kebisingan pada tingkat pengukuran yang Anda asumsikan gaussian. Komponen lainnya, tergantung pada pengukuran:
"Kebisingan ini, untuk frekuensi tetap, mungkin dapat dimodelkan secara acak dengan distribusi gaussian". Perlu klarifikasi - apakah komponen kebisingan umum untuk semua titik waktu, mengingat frekuensinya? Apakah standar deviasi sama untuk semua frekuensi? Dll
"Namun, pada waktu yang tetap, data menunjukkan jenis kebisingan yang berbeda, dengan lonjakan palsu besar dan osilasi cepat" Bagaimana Anda memisahkannya dari sinyal, karena Anda mungkin tertarik pada variasi intensitas di seluruh frekuensi. Apakah variasi yang menarik entah bagaimana berbeda dari variasi yang tidak menarik, dan jika demikian, bagaimana?
Oscillatioins palsu atau non-gaussian noise pada umumnya bukan masalah besar, jika Anda memiliki gagasan realistis tentang karakteristiknya. Ini dapat dimodelkan dengan mengubah data (dan kemudian menggunakan model gaussian) atau dengan secara eksplisit menggunakan distribusi kesalahan non-gaussian. Memodelkan kebisingan yang berhubungan dengan pengukuran lebih menantang.
Bergantung pada bagaimana noise dan model data Anda, Anda mungkin dapat memodelkan data dengan alat tujuan umum seperti GAM dalam paket mgcv, atau Anda mungkin memerlukan alat yang lebih fleksibel, yang dengan mudah mengarah ke pengaturan bayesian yang cukup disesuaikan . Ada alat untuk model seperti itu, tetapi jika Anda bukan ahli statistik, belajar untuk menggunakannya akan membutuhkan waktu.
Saya kira solusi spesifik untuk analisis spektral atau paket mgcv adalah taruhan terbaik Anda.
sumber
Serangkaian spektrum waktu menunjukkan kepada saya sebuah eksperimen kinetika , dan ada sejumlah literatur chemometrik yang mapan tentang hal ini.
Apa yang kamu ketahui tentang spektrum? Apa jenis spektrumnya? Dapatkah Anda secara wajar berharap bahwa Anda hanya memiliki dua spesies, produk dan produk?
Bisakah Anda menganggap wajar bilinearitas, yaitu spektrum yang diukurX pada waktu tertentu merupakan kombinasi linear dari konsentrasi komponen C kali spektrum komponen murni S :
Anda mengatakan bahwa Anda ingin memperkirakan peluruhan eksponensial (dalam konsentrasi). Ini bersama dengan bilinearitas menunjukkan kepada saya resolusi kurva multivariat (MCR). Ini adalah teknik yang memungkinkan Anda untuk menggunakan informasi yang Anda miliki (misalnya spektra komponen murni dari beberapa zat, atau asumsi pada perilaku konsentrasi seperti peluruhan eksponensial) selama pemasangan model.
Anna de Juan, Marcel Maeder, Manuel Martínez Romà Tauler: Menggabungkan pemodelan keras dan lunak untuk menyelesaikan masalah kinetik, Chemometrics and Intelligent Laboratory Systems 54, 2000. 123–141.
Sejauh yang saya tahu, sangat umum untuk menghaluskan konsentrasi menurut beberapa, misalnya model kinetik, tetapi jauh lebih jarang untuk menghaluskan spektrum. Namun, algoritma memungkinkan untuk melakukannya. Saya bertanya pada Anna di musim panas apakah mereka memberlakukan kendala kelancaran, tetapi dia mengatakan kepada saya bahwa mereka tidak melakukannya (dan spektroskopi yang baik membenci perataan alih-alih mengukur spektrum yang baik ;-)). Seringkali, tidak diperlukan juga, karena mengumpulkan informasi dari semua spektrum sudah akan menghasilkan perkiraan yang baik dari spektrum komponen murni.
Saya melakukan "komponen spektrum" halus (pada kenyataannya, komponen utama) dua kali belakangan ini ( Dochow et al .: Perangkat Raman-on-chip dan serat deteksi dengan serat Bragg kisi untuk analisis solusi dan partikel, LabChip, 2013 dan Dochow el al. : Kuarsa mikrofluida chip untuk identifikasi sel tumor oleh spektroskopi Raman dalam kombinasi dengan perangkap optik, AnalBioanalChem, diterima) tetapi dalam kasus ini pengetahuan spektroskopi saya mengatakan kepada saya bahwa saya diizinkan untuk melakukan ini. Saya cukup teratur menerapkan interpolasi downsampling dan smoothing untuk spektrum Raman saya (
hyperSpec::spc.loess
).Bagaimana cara mengetahui apa yang terlalu banyak dihaluskan? Saya pikir satu-satunya jawaban yang mungkin adalah "pengetahuan ahli tentang jenis spektroskopi dan eksperimen".
sunting: Saya membaca ulang pertanyaannya, dan Anda berkata Anda ingin memperkirakan peluruhan pada setiap panjang gelombang. Namun, apakah itu benar atau Anda ingin memperkirakan pembusukan spesies yang berbeda dengan spektrum yang tumpang tindih?
sumber
Bagi saya, ini kedengarannya sangat mirip dengan kasus analisis data fungsional (FDA), meskipun saya tidak tahu fisika di balik masalah Anda, dan saya mungkin benar-benar salah. Jika Anda dapat menganggap proses di balik data Anda secara inheren halus dan kontinu, Anda mungkin ingin menggunakan perluasan fungsi dasar bivariat untuk menangkap pengukuran Anda dalam bentukintensity=f(time,frequency) , dengan f menjadi jumlah fungsi basis (misalnya b-splines) dan koefisien. Serangkaian fungsi basis terbatas secara langsung mengurangi kekasaran dan karenanya membatalkan sebagian white noise.
Anda menyebutkan interpolasi spline, tetapi tidak menyebutkan paket fda yang mengimplementasikan dengan cukup baik dan mudah diakses perluasan fungsi dasar yang saya sebutkan di atas. Himpunan pengukuran simultan untuk waktu, frekuensi dan intensitas (dipesan sebagai array tiga dimensi) dapat ditangkap sebagai satu objek data fungsional bivariat, lihat. misal fungsi 'Data2fd'. Selain itu, beberapa prosedur penghalusan tersedia dalam paket yang semuanya dirancang untuk membatalkan white noise atau "kekasaran" dalam pengukuran proses yang pada dasarnya halus.
The Wikipedia Artikel frase masalah kebisingan putih di FDA sebagai berikut:
FDA menyediakan alat untuk kasus-kasus ini. Apakah ini tidak diterjemahkan ke dalam kasus Anda?
Mengenai FDA: Saya bukan tidak lain tetapi buku Ramsay dan Silverman tentang FDA (2005) membuat dasar-dasarnya sangat mudah diakses dan Ramsay Hooker and Graves (2009) langsung menerjemahkan wawasan dari buku ke dalam kode R. Kedua volume harus tersedia sebagai e-book di perpustakaan universitas untuk statistik, biosains, klimatologi atau psikologi. Google juga akan memunculkan beberapa tautan lagi yang tidak dapat saya kirim semuanya di sini.
Maaf saya tidak bisa memberikan solusi yang lebih langsung untuk masalah Anda. Namun, FDA memang banyak membantu saya begitu saya tahu untuk apa itu.
sumber
Sebagai seorang ahli fisika sederhana, bukan ahli statistik, saya akan mengambil pendekatan sederhana. Dua dimensi memiliki sifat yang berbeda. Masuk akal untuk memuluskan waktu dengan satu algoritma, dan memuluskan sepanjang gelombang dengan yang lain.
Algoritma aktual yang saya gunakan: untuk panjang gelombang, Savitzky-Golay dengan urutan lebih tinggi, 6 mungkin 8.
Seiring waktu, jika contoh itu tipikal, lompatan tiba-tiba dan penurunan eksponensial yang kurang lebih membuatnya rumit. Saya sudah memiliki data eksperimental, dan gambar berisik, begitu saja. Jika metode sederhana sederhana tidak cukup membantu, coba Gaussian lebih halus tetapi tekan efeknya di dekat lompatan, seperti yang terdeteksi oleh detektor tepi. Menghaluskan dan memperluas keluaran detektor tepi, menormalkannya untuk pergi dari 0,0 ke 1,0, dan menggunakannya untuk memilih antara gambar asli dan yang halus Gaussian, pixel demi pixel.
sumber
@aptapte: Saya senang Anda menambahkan plot seperti yang saya sarankan. Itu sangat membantu:
Jadi, jika saya mengerti dengan benar, tujuan praktis Anda adalah untuk mengevaluasi tingkat peluruhan eksponensial untuk setiap panjang gelombang; maka mari kita lakukan! Tentukan fungsi yang Anda ingin meminimalkan untuk setiap panjang gelombang secara terpisah, dan menguranginya.
Mari kita lihat satu panjang gelombang yang diberikan, seperti di plot kanan bawah Anda.
Pertama, untuk kesederhanaan, mari kita buang semua nilai sebelum 0,2 detik, karena mereka mengandung diskontinuitas besar-besaran (pendekatan kami dapat ditambah untuk menghadapinya nanti). Kemudian, tentukan kriteria optimasi berikut, yang bertujuan untuk menemukan konstanta peluruhanτ :
Anda dapat menyelesaikan masalah optimasi ini secara analitis dengan membedakan wrtτ , menyamakan dengan nol, dan pemecahan untuk τ ; atau Anda bisa menggunakan solver.
Kemudian, jika Anda percaya bahwa panjang gelombang yang berdekatan harus memiliki konstanta peluruhan yang serupa, Anda dapat memasukkan ini ke dalam kriteria optimasi yang lebih rumit.
Jika ada, saya sarankan Anda membaca buku yang harus dibaca optimasi: optimasi cembung Boyd .
Semoga ini membantu!
sumber