Bagaimana cara memperkirakan upperbound untuk regresi logistik dengan hanya 5 hingga 7 poin data?


11

Saya memiliki data dalam bentuk . Untuk estimasiβ1hinggaβ3saya menggunakan rumus dari makalah ini:John Fox - Regresi Nonlinear dan Kuadrat Terkecil Nonlinear Dalam makalah ini,β1diperkirakan dengan melihat data. Jika saya melakukan itu berfungsi dengan baik, bahkan jika saya hanya memiliki tiga poin. Dari situ saya bisa menghitung dua lainnya. Saya menguji parameter saya dengan nls () di R dan LevenbergMarquardt di C #. Model yang dikembalikan oleh mereka memuaskan.y=β11+exp(β2+β3x)β1β3β1

β1maks 1.5max1.1max1.5

Pengukuran bisa terlihat seperti ini:

x = (40, 50, 60, 70), y = (1000, 950, 400, 200) -> mudah diperkirakan

x = (40, 50, 60, 70), y = (1000, 950, 800, 100) -> mudah diperkirakan

x = (40, 50, 60, 70), y = (500, 200, 100, 50) -> tidak mudah untuk diperkirakan

Saya kira saya bisa mencari tahu di mana saya berada di fungsi (di "bawah", di "atas", di lereng) dengan menghitung delta di poin yang diberikan dan menghitung batas atas tergantung pada itu. Adakah yang punya petunjuk untuk solusi yang lebih baik? Info tambahan: Jika tidak dapat dilakukan, lebih penting bagi saya bahwa pengukuran yang sesuai adalah sebaik mungkin dan saya menerima bahwa beberapa pengukuran tidak dapat cocok sama sekali.

(walaupun saya ingin implementasi dalam C # saya diposting di sini, saya tidak berpikir masalahnya tergantung pada bahasa)

pembaruan (Aplikasi ini):

x adalah nilai suhu di bawah pengukuran yang sesuai. Secara alami diberikan bahwa itu harus terlihat seperti kurva logistik dengan nilai y lebih tinggi pada suhu yang lebih rendah dan sebaliknya. Titik lebur sama dengan titik belok kurva, yang banyak berubah dengan perubahan kecil dari parameter model.

pembaruan (beberapa data dibuat dengan 7 titik data dan titik belok diketahui pada 60):

//first I made up some data without any noise and enough (13) points
double[] x17 = { 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90 };
double[] y17 = { 2000, 1920, 1820, 1700, 1500, 1280, 1000, 720, 500, 300, 180, 80, 0 };
//calculated inflection point: 59.642....

//Then I took three different parts of that data 
(to simulate how much data I will have in the real world)
double[] x18 = { 30, 35, 40, 45, 50, 55, 60 };
double[] y18 = { 2000, 1920, 1820, 1700, 1500, 1280, 1000 };
//calculated inflection point: 59.263.... is ok!

double[] x19 = { 60, 65, 70, 75, 80, 85, 90 };
double[] y19 = { 1000, 720, 500, 300, 180, 80, 0 };
//calculated inflection point: 53.447.... to small!

double[] x20 = { 45, 50, 55, 60, 65, 70, 75 };
double[] y20 = { 1700, 1500, 1280, 1000, 720, 500, 300 };
//calculated inflection point: 59.868... almost perfect!

Pendekatan saya saat ini untuk estimasi batas atas adalah y0 * y0 / y1. Dengan cara ini saya berharap untuk memperhitungkan bahwa saya mungkin tidak selalu memiliki nilai mendekati maksimum.

pembaruan: Nilai x dan y tidak akan pernah negatif. x akan selalu {40, 45, 50, 55, 60, 65, 70} kecuali titik data hilang.

pembaruan: Saya melakukan banyak, banyak tes dengan data simulasi yang harus mudah dipasangkan (saya memilih titik data yang tepat pada kurva = tanpa noise) dan saya melihat bahwa itu berfungsi dengan baik, kecuali titik data pertama atau kedua (di mana x = 40 atau x = 45) tidak ada. Saya kira saya harus membuang pengukuran seperti itu dan pengguna harus hidup dengan itu.


Dengan sejumlah kecil poin saya pikir masalah Anda yang sebenarnya adalah ketidaktepatan dari perkiraan dan bukan bagaimana Anda menghitungnya.
Michael R. Chernick

1
Masalah dengan contoh terakhir adalah bahwa kecocokan yang jauh lebih baik diperoleh dengan fungsi dari bentuk (perhatikan tanda negatif). Apakah itu solusi yang dapat diterima? Jika tidak, Anda akan terus mengalami masalah, karena Anda harus menerima solusi pada batas antara kedua model (dan itu sangat buruk). y=β11exp(β2+β3x))
Whuber

@MichaelChernick Saya kira Anda benar, masalahnya adalah saya tidak akan pernah mendapatkan lebih dari 7 poin data. Saya kira saya harus mengeluarkan hasil dengan kurang dari itu. Saya menambahkan test case dengan hasil yang seharusnya sama. Apakah ada ruang untuk perbaikan atau ini yang paling dekat yang bisa saya dapatkan?
Verena Haunschmid

@whuber saya mencoba untuk mencocokkan data dengan tanda negatif tetapi untuk setiap set parameter saya mendapat kesalahan matriks gradien singular (dalam R). Pengukur mana yang Anda ambil? Saya menambahkan informasi tentang area tempat saya menggunakannya, untuk menggarisbawahi mengapa kurva harus terlihat seperti itu. (Saya belum yakin apakah formula Anda memenuhi persyaratan ini)
Verena Haunschmid

(1) Unit apa sajakah nilai ? Jika ini bisa negatif, maka model Anda mungkin tidak akan berfungsi. (2) Apa yang bisa Anda ceritakan tentang sifat "noise" atau kesalahan dalam nilai ? Ini bisa sangat penting untuk pemasangan. yyy
Whuber

Jawaban:


1

Saya bekerja pada masalah yang sama awal tahun ini. Solusi yang saya gunakan didasarkan pada makalah ini , yang menggunakan aljabar linier untuk menghilangkan , maksimum. Dengan cara ini, hasil untuk parameter yang tersisa, setelah ditentukan melalui beberapa prosedur (saya hanya meminimalkan permukaan kesalahan, sama seperti di koran), dapat digunakan untuk menyimpulkan pada akhirnya.β 1β1β1

Secara intuitif, solusi ini bersandar pada premis bahwa semua kurva logistik dengan laju dan parameter lokasi yang sama memiliki kemiripan, sehingga pengaturan batas atas hanya berarti "merentangkan" kurva sigmoid ke maksimum yang sesuai.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.