13 votos

¿Cómo estimar un lowerBound para regresión logística por sólo 5 a 7 puntos?

Tengo datos que es de la forma $y = \frac{\beta_1}{1 + \exp(\beta_2 + \beta_3 * x)}$. Para la estimación de $\beta_1$ $\beta_3$I el uso de las fórmulas de este documento: John Fox - Regresión Lineal y no Lineal de mínimos Cuadrados En este papel, $\beta_1$ se estima mediante la observación de los datos. Si hago lo que funciona bien, incluso si sólo tengo tres puntos. Desde que puedo calcular los otros dos. He probado mi parámetros con el nls() en R y LevenbergMarquardt en C#. Los modelos devuelto por ellos son satisfactorios.

El problema es que no quiero mirar los datos para obtener un buen estimador para $\beta_1$, quiero que mi programa para calcular. Durante algún tiempo he utilizado los valores que fueron un poco más alto que el máximo de mis valores (algo entre $\max * 1.1$$\max * 1.5$. Esto funcionó bien mientras los puntos que cubre la mayor parte de la función. También trabajó muy bien si los puntos de datos en algún lugar de la "parte superior" de la curva, pero cuando todos ellos procedían de la zona de "abajo", el punto de inflexión, este estimador fue definitivamente más bajo de lo que debería ser y no podía entrar en el modelo. Si puedo usar algo que es definitivamente más alto que el punto máximo (multiplicando con ridículamente altos valores) el modelo no se ajusta en ninguna manera útil.

Mediciones podría tener este aspecto:

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 he podido averiguar donde estoy, en la función (en el "fondo", en la parte "superior", en la pendiente) mediante el cálculo de los deltas en los puntos dados y calcular un límite superior en función de eso. ¿Alguien tiene una sugerencia para una mejor solución? Información adicional: Si no se puede hacer, es más importante para mí que las mediciones que se pueden ajuste son tan buenas como sea posible y acepto que algunas medidas no se ajustan en absoluto.

(aunque quiero una aplicación en C# que he publicado aquí, no creo que el problema es dependiente del idioma)

actualización (Aplicación de este):

x son los valores de temperatura und y las correspondientes mediciones. Por naturaleza es dado que se debe ver como una curva logística con mayores valores de y a temperaturas más bajas, y viceversa. El punto de fusión es igual a la del punto de inflexión de la curva, lo que cambia mucho con los pequeños cambios de los parámetros del modelo.

actualización (algunas hechas de seguridad de los datos con 7 puntos de datos y conocido punto de inflexión en los 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 un límite superior de la estimación es y0 * y0 / y1. De esta manera espero que tener en cuenta que puede que no siempre tienen un valor cercano al máximo.

actualización: Los valores x e y nunca será negativo. x siempre será { 40, 45, 50, 55, 60, 65, 70 } menos un punto de datos se pierde.

actualización: Hice muchas, muchas pruebas con datos simulados que debe ser fácil de montar (yo elija 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, x=45) es la que falta. Supongo que tendrá que descartar tales medidas y el usuario tendrá que vivir con eso.

7voto

user777 Puntos 10934

He trabajado en un problema similar a principios de este año. La solución que he utilizado se basó en este papel, que utiliza álgebra lineal para eliminar la $\beta_1$, el máximo. De esta manera, los resultados para el resto de los parámetros, una vez determinado a través de algún procedimiento (yo simplemente minimiza la superficie de error, lo mismo que en el papel), puede ser utilizado para inferir $\beta_1$ al final.

De forma intuitiva, esta solución se basa en la premisa de que toda la logística de las curvas con el mismo tipo y la ubicación de los parámetros son auto-similares, por lo que establecer el límite superior, significa "estiramiento" de la curva sigmoidal a la máxima adecuada.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X