Informe de R cuadrado para un ajuste personalizado del modelo no linealEstoy tratando de encontrar la mejor manera de informar un ajuste de modelo no lineal a mis datos experimentales.
He logrado escribir un script que se ajusta a un modelo no lineal y encuentra las estimaciones de los parámetros utilizando la función de pérdida. Luego reporta las estimaciones de cada parámetro y los errores no lineales.
Sin embargo, también me gustaría obtener el RMSE o R-square del ajuste resultante. ¿No está disponible para modelos no lineales? ¿O necesito agregar un paso de análisis adicional?
Cuando se ejecuta interactivamente la plataforma de análisis no lineal, el gráfico resultante muestra tanto los datos experimentales como la curva del modelo. Sin embargo, al ejecutar el script automáticamente solo se muestran los datos experimentales. ¿Alguien sabe por qué pasa esto? ¿Me estoy perdiendo algo en el guión de abajo?
¿Alguien podría proporcionar alguna literatura / libros / enlaces para poder obtener los gráficos de los datos frente al ajuste del modelo resultante y reportar el R-cuadrado del ajuste?
El script que estoy usando para el ajuste de modelo no lineal es el siguiente en este momento:
col1 = New Column( "Model" );
col1 << set formula(
Parameter(
{Y1_Y1_0 = 0.2, K1_K1_0 = 0.01, P1_P1_0 = 0.004, Y2_Y2_0 = 0.15, K2_K2_0 = 0.06, P2_P2_0 = 0.3},
If( :Days > 0,
Y1_Y1_0 * Exp( -Exp( ((K1_K1_0 * Exp()) / Y1_Y1_0) * (P1_P1_0 - :Days) ) ) + Y2_Y2_0 *
Exp( -Exp( ((K2_K2_0 * Exp()) / Y2_Y2_0) * (P2_P2_0 - :Days) ) ),
0
)
)
);
col2 = New Column( "Err" );
col2 << set Formula( Sum( (:Average - :Model) ^ 2 ) );
col2 << Evalformula;
col2 << Get formula;
obj = Nonlinear( Y( :Methane Yield ), X( :Model ), Loss( :Err ), Iteration Limit( 600 ), By( :Sample ) );
obj << go;
//returns a list of vectors where each vector, contains the parameters estimates
obj << get estimates;
//also see Get SSE, Get Parameter Names, Get CI
//Alternately, make a table
_xx = obj << Xpath( "//OutlineBox[@helpKey='Nonlinear Solution']" );
//only 2 groups so only 2 are found; each contains two sub tables
fit_dt = (_xx[1] << Find( Table Box( 1 ) )) << Make Combined Data Table;
est_dt = (_xx[1] << Find( Table Box( 2 ) )) << Make Combined Data Table;
fit_dt << set Name( "NonLin Fit Errors" );
est_dt << set Name( "NonLin Fit Estimates" );
Re: informe R-cuadrado para un ajuste de modelo no lineal personalizadoSu RMSE es la Pérdida Promedio de Sqrt.
No sé la causa de la trama ausente.
Re: informe R-cuadrado para un ajuste de modelo no lineal personalizadoGracias Mark.
He cambiado la función de pérdida como usted sugirió. He ejecutado el ajuste pero todavía no puedo ver la curva del modelo en el gráfico.
En mi Solución obtengo: Pérdida promedio y Pérdida promedio Sqrt. ¿Significa esto que mi RSME es la pérdida de disponibilidad entonces?
Re: informe R-cuadrado para un ajuste de modelo no lineal personalizadoEl RMSE se informa en el esquema de la Solución:

El cuadrado R no está disponible porque necesita dos modelos: el modelo ajustado y el modelo reducido. No hay modelo reducido en el caso del modelo no lineal. (El modelo reducido en la regresión OLS es el modelo con solo el término de intercepción constante).
Está redefiniendo incorrectamente la función de pérdida predeterminada en No lineal. La pérdida por defecto es el error de mínimos cuadrados. Aparece en su script que desea utilizar el error de mínimos cuadrados. Su fórmula de columna debe resultar en la pérdida para cada observación, no para toda la muestra. Por lo tanto, su fórmula de pérdida solo debe ser la diferencia al cuadrado. (Es decir, no calcule la suma de las diferencias al cuadrado). Con este enfoque en lugar de la pérdida por defecto, obtengo:

Por lo tanto, el uso de una pérdida personalizada cambia la información en el esquema de la Solución a la Pérdida total (SSE en este caso), la Pérdida promedio (MSE en este caso) y la Pérdida promedio de Sqrt (RMSE en este caso).
Guardé el script de Nonlinear y lo ejecuté. La gráfica de datos aún muestra la curva que representa la gráfica de la función no lineal.