Як оцінити верхню межу для логістичної регресії лише від 5 до 7 точок даних?


11

У мене є дані форми . Для оцінки від до я використовую формули цієї статті: Джон Фокс - нелінійна регресія та нелінійні найменші квадрати У цій роботі оцінюється , переглядаючи дані. Якщо я це зробити, це працює добре, навіть якщо у мене є лише три бали. З цього можу обчислити два інших. Я перевірив свої параметри за допомогою nls () в R та LevenbergMarquardt в C #. Повернені ними моделі задовольняють. β1β3β1y=β11+exp(β2+β3x)β1β3β1

Проблема в тому, що я не хочу дивитись на дані, щоб отримати хороший оцінювач , я хочу, щоб моя програма обчислила їх. Деякий час я використовував значення, які були трохи вище максимуму моїх значень (щось середнє від та \ max * 1.5 . Це спрацювало нормально, доки точки охоплювали більшу частину функції. Це також справно працювало, якщо Точки даних були десь із "вершини" кривої, але коли всі вони прийшли з області "нижче" точки перегину, цей оцінювач, безумовно, був нижчим, ніж повинен бути, і я не міг відповідати моделі. Якщо я буду використовувати щось що, безумовно, перевищує максимальну точку (помноживши її на смішно високі значення), модель не підходить корисним чином.β1max 1,5max1.1max1.5

Вимірювання може виглядати так:

x = (40, 50, 60, 70), y = (1000, 950, 400, 200) -> легко оцінити

x = (40, 50, 60, 70), y = (1000, 950, 800, 100) -> легко оцінити

x = (40, 50, 60, 70), y = (500, 200, 100, 50) -> не так просто оцінити

Я здогадуюсь, я міг би дізнатися, де я перебуваю у функції ("знизу", "вгорі", на схилі), обчисливши дельти в заданих точках і обчисливши верхню межу залежно від цього. Хтось має підказку для кращого рішення? Додаткова інформація: Якщо цього неможливо зробити, для мене важливіше, щоб виміри, які можуть відповідати, були максимально хорошими, і я погоджуюсь, що деякі вимірювання взагалі не можуть бути придатними.

(хоча я хочу впровадження в C #, я розмістив його тут, я не думаю, що проблема залежить від мови)

оновлення (застосування цього):

x - значення температури і у відповідних вимірювань. За своєю природою дається, що вона повинна виглядати як логістична крива з більш високими значеннями y при нижчих температурах і навпаки. Температура плавлення дорівнює точці перегину кривої, яка сильно змінюється при невеликих змінах параметрів моделі.

оновлення (деякі склали дані з 7 точок даних та відомою точкою перегину у 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!

Мій поточний підхід до оцінки верхньої межі - y0 * y0 / y1. Таким чином я сподіваюся врахувати, що я не завжди можу мати значення, близьке до максимального.

оновлення: значення x і y ніколи не будуть від'ємними. x завжди буде {40, 45, 50, 55, 60, 65, 70}, якщо точка даних не буде втрачена.

оновлення: я зробив багато, багато тестів із імітованими даними, які слід легко встановити (я вибираю точки даних, які були точно на кривій = без шуму), і я бачу, що це працює нормально, якщо тільки перша чи друга точка даних (де x = 40 або x = 45) відсутня. Я думаю, мені доведеться відмовитися від таких вимірювань, і користувачеві доведеться з цим жити.


Маючи таку невелику кількість балів, я думаю, що ваша справжня проблема полягає в неточності оцінок, а не в тому, як ви їх обчислюєте.
Майкл Р. Черник

1
Проблема останнього прикладу полягає в тому, що набагато краща відповідність отримується функцією форми (помітити негативний знак). Це прийнятне рішення? Якщо ні, то у вас будуть проблеми, тому що вам доведеться приймати рішення на межі між двома моделями (а це жахливо). y=β11exp(β2+β3x))
whuber

@MichaelChernick Я думаю, ви праві, проблема в тому, що я ніколи не отримаю більше 7 точок даних. Я думаю, що мені доведеться висувати результати менше, ніж це. Я додав тестові випадки з результатами, які повинні бути однаковими. Чи є можливість для вдосконалення чи це найближче я можу отримати?
Верена Хауншмід

@whuber Я намагався встановити дані з негативним знаком, але для кожного набору параметрів я отримав сингулярну помилку матриці градієнта (в R). Які оцінки ви взяли? Я додав інформацію про область, в якій я її використовую, щоб підкреслити, чому крива повинна виглядати саме так. (Я ще не впевнена, чи відповідає ваша формула цим вимогам)
Верена Хауншмід

(1) У яких одиницях знаходяться значення ? Якщо вони можуть бути негативними, то ваша модель, ймовірно, не працюватиме. (2) Що ви можете сказати нам про характер "шуму" чи помилок у значеннях ? Це може бути вирішальним для пристосування. yyy
whuber

Відповіді:


1

Я працював над подібною проблемою на початку цього року. Я використовував рішення, яке базувалося на цій роботі , яка використовує лінійну алгебру для максимального усунення . Таким чином, результати для інших параметрів, щойно визначені за допомогою певної процедури (я просто мінімізував поверхню помилок, таку ж, як у статті), можна використати для висновку наприкінці.β 1β1β1

Інтуїтивно це рішення спирається на те, що всі логістичні криві з однаковою швидкістю та параметрами розташування є подібними до себе, так що встановлення верхньої межі просто означає "розтягнення" сигмоїдальної кривої до відповідного максимуму.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.