Come stimare un limite superiore per la regressione logistica solo da 5 a 7 punti dati?


11

Ho dati nella forma . Per la stima di a uso le formule di questo documento: John Fox - Regressione non lineare e minimi quadrati non lineari In questo documento, è stimato guardando i dati. Se lo faccio, funziona benissimo, anche se ho solo tre punti. Da ciò posso calcolare gli altri due. Ho testato i miei parametri con nls () in R e LevenbergMarquardt in C #. I modelli restituiti da loro sono soddisfacenti. β1β3β1y=β11+exp(β2+β3x)β1β3β1

Il problema è che non voglio guardare i dati per ottenere un buon stimatore per , voglio che il mio programma li calcoli. Per qualche tempo ho usato valori un po 'più alti del massimo dei miei valori (qualcosa tra e \ max * 1.5 . Funzionava bene fintanto che i punti coprivano la maggior parte della funzione. Funzionava anche bene se il i punti dati erano da qualche parte dalla "cima" della curva, ma quando provenivano tutti dall'area "sotto" il punto di flesso, questo stimatore era decisamente più basso di quanto dovrebbe essere e non potrei adattarmi al modello. Se uso qualcosa che è decisamente superiore al punto massimo (moltiplicandolo con valori ridicolmente alti) il modello non si adatta in alcun modo utile.β1max1.1max1.5

Le misure potrebbero apparire così:

x = (40, 50, 60, 70), y = (1000, 950, 400, 200) -> facile da stimare

x = (40, 50, 60, 70), y = (1000, 950, 800, 100) -> facile da stimare

x = (40, 50, 60, 70), y = (500, 200, 100, 50) -> non così facile da stimare

Immagino di poter scoprire dove sono nella funzione (in "fondo", in "alto", in pendenza) calcolando i delta nei punti dati e calcolare un limite superiore in base a quello. Qualcuno ha un suggerimento per una soluzione migliore? Informazioni aggiuntive: se non è possibile, è più importante per me che le misure che possono essere adattate siano le migliori possibili e accetto che alcune misure non possano essere adattate a tutti.

(anche se voglio un'implementazione in C # l'ho pubblicato qui, non credo che il problema dipenda dalla lingua)

aggiornamento (Applicazione di questo):

x sono i valori di temperatura e le misurazioni corrispondenti. Per natura si suppone che dovrebbe apparire come una curva logistica con valori y più alti a temperature più basse e viceversa. Il punto di fusione è uguale al punto di flesso della curva, che cambia molto con piccole modifiche dei parametri del modello.

aggiornamento (alcuni dati inventati con 7 punti dati e punto di flesso noto a 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!

Il mio approccio attuale per una stima del limite superiore è y0 * y0 / y1. In questo modo spero di tener conto del fatto che potrei non avere sempre un valore vicino al massimo.

aggiornamento: i valori xey non saranno mai negativi. x sarà sempre {40, 45, 50, 55, 60, 65, 70} a meno che non si perda un punto dati.

aggiornamento: ho fatto molti, molti test con dati simulati che dovrebbero essere facili da adattare (scelgo punti di dati che erano esattamente sulla curva = senza alcun rumore) e vedo che funziona bene, a meno che il primo o il secondo punto di dati (dove x = 40 o x = 45) mancante. Immagino che dovrò scartare tali misurazioni e l'utente dovrà conviverci.


Con un numero così piccolo di punti penso che il tuo vero problema sia l'imprecisione delle stime e non il modo in cui le calcoli.
Michael R. Chernick,

1
Il problema con l'ultimo esempio è che si ottiene un adattamento molto migliore da una funzione del modulo (notare il segno negativo). È una soluzione accettabile? In caso contrario, continuerai ad avere problemi, perché dovrai accettare soluzioni sul confine tra i due modelli (e quelli sono orribili). y=β11exp(β2+β3x))
whuber

@MichaelChernick Immagino tu abbia ragione, il problema è che non otterrò mai più di 7 punti dati. Immagino di dover eliminare i risultati con meno di quello. Ho aggiunto casi di test con risultati che dovrebbero essere gli stessi. C'è spazio per migliorare o è questo il più vicino che posso ottenere?
Verena Haunschmid,

@whuber Ho provato ad adattare i dati con il segno negativo ma per ogni set di parametri ho avuto un singolare errore di matrice gradiente (in R). Quali stimatori hai preso? Ho aggiunto informazioni sull'area in cui la utilizzo, per sottolineare perché la curva deve apparire in questo modo. (Non sono ancora sicuro che la tua formula soddisfi questi requisiti)
Verena Haunschmid,

(1) In quali unità sono valori ? Se questi potrebbero essere negativi, probabilmente il tuo modello non funzionerà. (2) Cosa puoi dirci sulla natura del "rumore" o degli errori nei valori ? Questo può essere cruciale per il montaggio. yy
whuber

Risposte:


1

Ho lavorato su un problema simile all'inizio di quest'anno. La soluzione che ho usato era basata su questo documento , che utilizza l'algebra lineare per eliminare il massimo . In questo modo, i risultati per i restanti parametri, una volta determinati tramite una procedura (ho semplicemente minimizzato la superficie dell'errore, come nel documento), possono essere usati per inferire alla fine.β1β1

Intuitivamente, questa soluzione si basa sul presupposto che tutte le curve logistiche con gli stessi parametri di frequenza e posizione sono auto-simili, quindi l'impostazione del limite superiore significa semplicemente "allungare" la curva sigmoidale al massimo appropriato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.