Untuk menganalisis data dari percobaan biofisika, saya saat ini mencoba melakukan kurva fitting dengan model yang sangat non-linear. Fungsi model pada dasarnya terlihat seperti:
Di sini, khususnya nilai sangat menarik.
Plot untuk fungsi ini:
(Perhatikan bahwa fungsi model didasarkan pada deskripsi matematis menyeluruh dari sistem, dan tampaknya bekerja sangat baik --- hanya saja pencocokan otomatis rumit).
Tentu saja, fungsi model bermasalah: strategi pas yang saya coba sejauh ini, gagal karena asimtot yang tajam pada , terutama dengan data yang bising.
Pemahaman saya tentang masalah di sini adalah bahwa fitting kuadrat-sederhana (saya telah bermain dengan regresi linier dan non-linear di MATLAB; kebanyakan Levenberg-Marquardt) sangat sensitif terhadap asimtot vertikal, karena kesalahan kecil dalam x sangat diperkuat. .
Adakah yang bisa mengarahkan saya ke strategi yang pas yang bisa mengatasi ini?
Saya memiliki pengetahuan dasar tentang statistik, tetapi itu masih sangat terbatas. Saya akan bersemangat untuk belajar, kalau saja saya tahu harus mulai dari mana :)
Terima kasih banyak atas saran Anda!
Edit Mohon maaf untuk lupa menyebutkan kesalahannya. Satu-satunya kebisingan signifikan dalam , dan itu aditif.
Sunting 2 Beberapa informasi tambahan tentang latar belakang pertanyaan ini. Grafik di atas memodelkan perilaku peregangan polimer. Seperti @whuber tunjukkan dalam komentar, Anda perlu untuk mendapatkan grafik seperti di atas.
Mengenai bagaimana orang telah menyesuaikan kurva ini hingga titik ini: tampaknya orang umumnya memotong asimtot vertikal sampai mereka menemukan kecocokan yang baik. Pilihan cutoff masih sewenang-wenang, membuat prosedur pemasangan tidak dapat diandalkan dan tidak dapat diproduksi kembali.
Edit 3 & 4 Grafik yang diperbaiki.
sumber
Jawaban:
Metode yang kami gunakan agar sesuai dengan ini secara manual (yaitu, Analisis Data Eksplorasi) dapat bekerja sangat baik dengan data tersebut.
Saya ingin sedikit mengubah model agar parameternya positif:
Untuk suatu , mari kita asumsikan ada real unik yang memenuhi persamaan ini; sebut ini atau, untuk singkatnya, ketika dipahami.x f ( y ; a , b ) f ( y ) ( a , b )y x f( y; a , b ) f( y) ( a , b )
Kami mengamati kumpulan pasangan berurutan mana menyimpang dari oleh acak independen dengan nol berarti. Dalam diskusi ini saya akan menganggap mereka semua memiliki varian yang sama, tetapi perpanjangan dari hasil ini (menggunakan kuadrat terkecil tertimbang) adalah mungkin, jelas, dan mudah diimplementasikan. Berikut adalah contoh simulasi dari koleksi nilai, dengan , , dan varian umum dari .x i f ( y i ; a , b ) 100 a = 0,0001 b = 0,1 σ 2 = 4(xi,yi) xi f(yi;a,b) 100 a=0.0001 b=0.1 σ2=4
Ini adalah contoh sulit (sengaja), seperti yang dapat dihargai oleh nilai nonfisik (negatif) dan penyebarannya yang luar biasa (yang biasanya unit horizontal , tetapi dapat berkisar hingga atau pada sumbu ). Jika kita dapat memperoleh kesesuaian yang masuk akal dengan data ini yang mendekati estimasi , , dan digunakan, kita akan melakukannya dengan baik.± 2 5 6 x a b σ 2x ±2 5 6 x a b σ2
Pemasangan eksplorasi bersifat iteratif. Setiap tahap terdiri dari dua langkah: estimasi (berdasarkan data dan estimasi sebelumnya dan dari dan , dari mana nilai prediksi sebelumnya dapat diperoleh untuk ) lalu estimasi . Karena kesalahan dalam x , yang cocok memperkirakan dari , bukan sebaliknya. Untuk urutan pertama dalam kesalahan di , ketika cukup besar,a b a b x i x i b x i ( y i ) x xa a^ b^ a b x^i xi b xi (yi) x x
Oleh karena itu, kita dapat memperbarui dengan memasang model ini dengan kuadrat (pemberitahuan hanya memiliki satu parameter - lereng, --dan tidak ada intercept) dan mengambil timbal balik dari koefisien sebagai perkiraan terbaru dari . aaa^ a a
Selanjutnya, ketika cukup kecil, istilah kuadrat terbalik mendominasi dan kami menemukan (lagi untuk urutan pertama dalam kesalahan) yangx
Sekali lagi menggunakan kuadrat terkecil (hanya dengan istilah kemiringan ) kami memperoleh estimasi yang diperbarui melalui akar kuadrat dari lereng yang dipasang.bb b^
Untuk melihat mengapa ini berhasil, perkiraan eksplorasi kasar terhadap kecocokan ini dapat diperoleh dengan memplot terhadap untuk lebih kecil . Lebih baik lagi, karena diukur dengan kesalahan dan berubah secara monoton dengan , kita harus fokus pada data dengan nilai yang lebih besar dari . Berikut ini adalah contoh dari dataset simulasi kami yang menunjukkan setengah berwarna merah, separuh terkecil berwarna biru, dan garis yang sesuai dengan titik asal sesuai dengan titik merah. 1 / y 2 i x i x i y i x i 1 / y 2 i y ixi 1/y2i xi xi yi xi 1/y2i yi
Poinnya kira-kira berbaris, meskipun ada sedikit kelengkungan pada nilai-nilai kecil dan . (Perhatikan pilihan sumbu: karena adalah pengukuran, adalah konvensional untuk memplotnya pada sumbu vertikal .) Dengan memfokuskan kecocokan pada titik merah, di mana kelengkungan harus minimal, kita harus memperoleh perkiraan yang masuk akal . Nilai ditunjukkan pada judul adalah akar kuadrat dari kemiringan garis ini: hanya % lebih rendah dari nilai sebenarnya!y x b 0,096 4x y x b 0.096 4
Pada titik ini nilai yang diprediksi dapat diperbarui melalui
Iterasi sampai estimasi stabil (yang tidak dijamin) atau berputar melalui rentang nilai yang kecil (yang masih belum dapat dijamin).
Ternyata sulit untuk diperkirakan kecuali kita memiliki nilai sangat besar , tetapi - yang menentukan asimtot vertikal dalam plot asli (dalam pertanyaan) dan merupakan fokus dari pertanyaan-- dapat dijabarkan dengan cukup akurat, asalkan ada beberapa data dalam asymptote vertikal. Dalam contoh berjalan kami, iterasi melakukan konvergen ke (yang hampir dua kali nilai benar ) dan (yang dekat dengan nilai ). Plot ini menunjukkan data sekali lagi, yang ditumpangkan (a) benarx b a = 0.000196 0.0001 b = 0,1073 0.1a x b a^=0.000196 0.0001 b^=0.1073 0.1 kurva abu-abu (putus-putus) dan (b) estimasi kurva merah (padat):
Kecocokan ini sangat baik sehingga sulit untuk membedakan kurva sebenarnya dari kurva yang pas: mereka tumpang tindih hampir di mana-mana. Kebetulan, varians kesalahan diperkirakan sangat dekat dengan nilai sebenarnya dari .43.73 4
Ada beberapa masalah dengan pendekatan ini:
Taksirannya bias. Bias menjadi jelas ketika dataset kecil dan nilai yang relatif sedikit dekat dengan sumbu x. Secara sistematis kecocokannya sedikit rendah.
Prosedur estimasi membutuhkan metode untuk memberi tahu nilai "besar" dari "kecil" dari . Saya dapat mengusulkan cara eksplorasi untuk mengidentifikasi definisi optimal, tetapi sebagai hal praktis Anda dapat meninggalkan ini sebagai konstanta "tuning" dan mengubahnya untuk memeriksa sensitivitas hasil. Saya telah mengatur mereka secara sewenang-wenang dengan membagi data menjadi tiga kelompok yang sama sesuai dengan nilai dan menggunakan dua kelompok luar.y iyi yi
Prosedur tidak akan bekerja untuk semua kemungkinan kombinasi dan atau semua rentang data yang memungkinkan. Namun, itu harus bekerja dengan baik setiap kali cukup kurva diwakili dalam dataset untuk mencerminkan kedua asimtot: yang vertikal di satu ujung dan yang miring di ujung lainnya.ba b
Kode
Berikut ini ditulis dalam Mathematica .
Terapkan ini pada data (diberikan oleh vektor paralela=b=0
x
dany
dibentuk menjadi matriks dua kolomdata = {x,y}
) hingga konvergensi, dimulai dengan perkiraan :sumber
Lihat pertanyaan penting @probabilityislogic yang diposting
-
Edit untuk mempertimbangkan informasi tambahan:
Kami sekarang memiliki kesalahan dalam x dan aditif. Kami masih tidak tahu apakah variansnya konstan pada skala itu.
Saya tidak yakin itu memperbaiki keadaan! Saya percaya ada metode untuk hal semacam itu, tapi itu bukan daerah saya sama sekali.
Saya sebutkan di komentar bahwa Anda mungkin ingin melihat regresi terbalik, tetapi bentuk tertentu dari fungsi Anda mungkin menghalangi terlalu jauh dengan itu.
Anda bahkan mungkin terjebak dengan mencoba metode yang cukup kuat untuk kesalahan dalam bentuk linear.
-
sumber
Setelah beberapa minggu bereksperimen, teknik yang berbeda tampaknya bekerja paling baik dalam kasus khusus ini: Penyesuaian Total Least Squares . Ini adalah varian dari fitting Least Squares yang biasa (nonlinier), tetapi alih-alih mengukur kesalahan kecocokan di sepanjang salah satu sumbu (yang menyebabkan masalah dalam kasus yang sangat nonlinier seperti yang satu ini), ini perlu memperhitungkan kedua sumbu.
Ada sejumlah besar artikel, tutorial dan buku yang tersedia tentang masalah ini, meskipun kasus nonlinier lebih sulit dipahami. Bahkan ada beberapa kode MATLAB yang tersedia.
sumber