Bondad de ajuste para modelo no lineal

8

Hemos ajustado una función no lineal a los datos observados. El siguiente paso debe ser la evaluación de la bondad de ajuste de esta función (como para modelos lineales).R2

¿Cuáles son las formas habituales de medir esto?

Editar 1:

El ajuste se realizó de la siguiente manera:

  1. Realizar una regresión lineal con variables independientes A y B .
  2. Calcular los parámetros de distribución a partir de los parámetros de regresión. (La distribución no es lineal y tiene la variable C como entrada).
  3. Evaluar la bondad del ajuste de la distribución no lineal comparando los datos estimados con los observados.

Edición 2:

Ejemplos de los pasos mencionados anteriormente:

  1. Modelo de regresión:losol(y)=β0 0+β1losol(una)+β2losol(si)
  2. ρ=-β0 0β1 y para la siguiente distribución no lineal:θ=β2F(una)=ρuna-θ
  3. Evaluar la bondad de ajuste de con un conjunto dado de observaciones .F(una)(una,F(una))
Marco
fuente
55
La "bondad de ajuste" depende de cómo se realizó el ajuste. Por ejemplo, la medida de GoF apropiada para un estimador de máxima verosimilitud debería diferir de la medida de GoF para un estimador de mínimos cuadrados cuando el componente aleatorio no es una variable normal aditiva. Si tiene un problema específico en mente, puede indicar cómo realizó el ajuste.
whuber
2
Te puede interesar: Magee, L. (1990). medidas basadas en Wald y pruebas de significancia conjunta de razón de verosimilitud. The American Statistician , 44 (3): 250-253, y Pesaran, MH y Smith, RJ (1994). Un criterio generalizado para los modelos de regresión estimados por el método de las variables instrumentales. Econometrica , 62 (3): 705–710. R2R2
Alexis
1
@whuber He agregado la descripción de los pasos realizados en las preguntas anteriores.
Marco
@ Alexis Gracias por las referencias, las echaré un vistazo.
Marco
1
@whuber ¿Sería una forma factible de calcular la correlación entre y las observaciones dadas para evaluar la bondad del ajuste? F(una)
Marco

Respuestas:

2

Tal vez haya más, pero para mí parece que solo desea determinar la bondad de ajuste (GoF) para una función f (a), ajustada a un conjunto de datos particular (a, f (a)). Entonces, lo siguiente solo responde a su tercera subpregunta (no creo que la primera y la segunda sean directamente relevantes para la tercera).

Por lo general, GoF puede determinarse paramétricamente (si conoce los parámetros de función de la distribución) o no paramétricamente (si no los conoce). Si bien es posible que pueda calcular parámetros para la función, ya que parece ser exponencial o gamma / Weibull (suponiendo que los datos sean continuos). Sin embargo, procederé, como si no supieras los parámetros. En este caso, es un proceso de dos pasos . Primero, debe determinar los parámetros de distribución para su conjunto de datos. En segundo lugar, realiza una prueba de GoF para la distribución definida. Para evitar repetirme, en este punto lo remitiré a mi respuesta anteriora una pregunta relacionada, que contiene algunos detalles útiles. Obviamente, esta respuesta se puede aplicar fácilmente a las distribuciones, además de la mencionada en el interior.

Además de las pruebas de GoF, mencionadas allí, puede considerar otra prueba: la prueba de GoF de chi-cuadrado . A diferencia de las pruebas KS y AD , que son aplicables solo a distribuciones continuas, la prueba de chi-cuadrado GoF es aplicable tanto a las discretas como a las continuas . La prueba de Chi-cuadrado GoF se puede realizar en R mediante el uso de uno de varios paquetes: statspaquete integrado (función chisq.test()) y vcdpaquete (función goodfit()- solo para datos discretos). Más detalles están disponibles en este documento .

Aleksandr Blekh
fuente
1
El enlace a "mi respuesta anterior" ya no funciona, ya que la pregunta probablemente se ha eliminado.
Amonet
1
@Amonet Gracias por hacérmelo saber. Pude obtener acceso a las preguntas y respuestas eliminadas y las recuperé como un Gist público. Por favor, consulte gist.github.com/ablekh/… . Espero que esto ayude.
Aleksandr Blekh
0

Bueno, en Machine Learning lo que se llama validación cruzada se realiza con bastante frecuencia con el fin de probar el modelo (pruebe si ese tipo de modelo con estos hiperparámetros, como el número de grados de libertad o lo que sea, se ajusta a su problema), divide su datos varias veces en conjuntos de datos de entrenamiento y prueba, luego ejecute la optimización sobre el conjunto de entrenamiento y calcule cualquier calidad sobre los datos de las pruebas. La forma más confidencial es ejecutar la llamada "validación cruzada QxT-fold". El pseudocódigo podría gustar:

cv_values = []
for t in range(T):
    split = randomsplit(data, number_of_parst = Q)
    for test_id in range(Q):
        model.fit(split[:test_id] + split[test_id + 1:] # test on everything excepting test_id
        cv_values.append(model.test(split[test_id]))

cv_values.mean() # whatever
Minero
fuente
Gracias por tu respuesta. Entonces, ¿cómo se ve su función model.test (...) ?
Marco