¿Cómo estimar un límite superior para la regresión logística en solo 5 a 7 puntos de datos?


11

Tengo datos que tienen la forma . Para la estimación de a utilizo las fórmulas de este documento: John Fox: Regresión no lineal y mínimos cuadrados no lineales En este documento, se estima observando los datos. Si lo hago, funciona bien, incluso si solo tengo tres puntos. A partir de eso puedo calcular los otros dos. Probé mis parámetros con nls () en R y LevenbergMarquardt en C #. Los modelos devueltos por ellos son satisfactorios.y=β11+exp(β2+β3x)β1β3β1

El problema es que no quiero ver los datos para obtener un buen estimador de , quiero que mi programa lo calcule. Durante algún tiempo usé valores que eran un poco más altos que el máximo de mis valores (algo entre y \ max * 1.5 . Esto funcionó bien siempre que los puntos cubrieran la mayor parte de la función. También funcionó bien si el los puntos de datos estaban en algún lugar desde la "parte superior" de la curva, pero cuando todos provenían del área "debajo" del punto de inflexión, este estimador era definitivamente más bajo de lo que debería ser y no podía ajustar el modelo. Si uso algo eso es definitivamente más alto que el punto máximo (multiplicándolo con valores ridículamente altos) el modelo no se ajusta de ninguna manera útil.β1max1.1max1.5

Las medidas podrían verse así:

x = (40, 50, 60, 70), y = (1000, 950, 400, 200) -> fácil de estimar

x = (40, 50, 60, 70), y = (1000, 950, 800, 100) -> fácil de estimar

x = (40, 50, 60, 70), y = (500, 200, 100, 50) -> no es tan fácil de estimar

Supongo que podría averiguar dónde estoy en la función (en la "parte inferior", en la "parte superior", en la pendiente) calculando los deltas en los puntos dados y calculando un límite superior dependiendo de eso. ¿Alguien tiene una pista para una mejor solución? Información adicional: si no se puede hacer, es más importante para mí que las mediciones que se puedan ajustar sean lo mejor posible y acepto que algunas mediciones no se pueden ajustar en absoluto.

(aunque quiero una implementación en C #, la publiqué aquí, no creo que el problema dependa del idioma)

actualización (Aplicación de esto):

x son valores de temperatura y y las medidas correspondientes. Por naturaleza, se considera que debería verse como una curva logística con valores de y más altos a temperaturas más bajas y viceversa. El punto de fusión es igual al punto de inflexión de la curva, que cambia mucho con pequeños cambios en los parámetros del modelo.

actualización (algunos datos inventados con 7 puntos de datos y punto de inflexión conocido 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!

Mi enfoque actual para una estimación de límite superior es y0 * y0 / y1. De esta manera, espero tener en cuenta que no siempre tengo un valor cercano al máximo.

actualización: los valores x e y nunca serán negativos. x siempre será {40, 45, 50, 55, 60, 65, 70} a menos que se pierda un punto de datos.

Actualización: hice muchas, muchas pruebas con datos simulados que deberían ser fáciles de ajustar (elijo puntos de datos que estaban exactamente en la curva = sin ruido) y veo que funciona bien, a menos que el primer o segundo punto de datos (donde x = 40 o x = 45) falta. Supongo que tendré que descartar esas medidas y el usuario tendrá que vivir con eso.


Con un número tan pequeño de puntos, creo que su verdadero problema es la inexactitud de las estimaciones y no cómo las calcula.
Michael R. Chernick

1
El problema con el último ejemplo es que se obtiene un ajuste mucho mejor mediante una función de la forma (observe el signo negativo). ¿Es esa una solución aceptable? Si no, continuará teniendo problemas, ya que tendrá que aceptar soluciones en el límite entre los dos modelos (y esos son horribles). y=β11exp(β2+β3x))
Whuber

@MichaelChernick Creo que tienes razón, el problema es que nunca obtendré más de 7 puntos de datos. Supongo que tengo que echar los resultados con menos que eso. Agregué casos de prueba con resultados que deberían ser los mismos. ¿Hay margen de mejora o es lo más cerca que puedo llegar?
Verena Haunschmid

@whuber Intenté ajustar los datos con el signo negativo, pero para cada conjunto de parámetros obtuve un error de matriz de gradiente singular (en R). ¿Qué estimadores tomaste? Agregué información sobre el área en la que la uso, para subrayar por qué la curva tiene que verse así. (Todavía no estoy seguro si su fórmula cumple con estos requisitos)
Verena Haunschmid

(1) ¿En qué unidades están los valores de ? Si estos pueden ser negativos, entonces su modelo probablemente no funcionará. (2) ¿Qué puede decirnos sobre la naturaleza del "ruido" o los errores en los valores ? Esto puede ser crucial para el ajuste. yy
whuber

Respuestas:


1

Trabajé en un problema similar a principios de este año. La solución que utilicé se basó en este documento , que utiliza álgebra lineal para eliminar , el máximo. De esta manera, los resultados para los parámetros restantes, una vez determinados mediante algún procedimiento (simplemente minimicé la superficie de error, igual que en el documento), pueden usarse para inferir al final.β1β1

Intuitivamente, esta solución se basa en la premisa de que todas las curvas logísticas con los mismos parámetros de velocidad y ubicación son auto-similares, por lo que establecer el límite superior solo significa "estirar" la curva sigmoidal al máximo apropiado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.