J'essaie de trouver le meilleur moyen de rapporter un modèle non linéaire adapté à mes données expérimentales.
J'ai réussi à écrire un script qui correspond à un modèle non linéaire et trouve les estimations des paramètres à l'aide de la fonction de perte. Il rapporte ensuite les estimations de chaque paramètre et les erreurs non linéaires.
Cependant, j'aimerais également obtenir le RMSE ou le R-carré de l'ajustement résultant. N'est-ce pas disponible pour les modèles non linéaires ? ou dois-je ajouter une étape d'analyse supplémentaire ?
Lors de l'exécution interactive de la plateforme d'analyse non linéaire, le tracé résultant affiche à la fois les données expérimentales et la courbe du modèle. Cependant, lors de l'exécution automatique du script, seules les données expérimentales sont affichées. Est-ce que quelqu'un sait pourquoi cela se produit? Est-ce que j'ai raté quelque chose dans le script ci-dessous ?
Quelqu'un pourrait-il fournir de la littérature/des livres/des liens pour pouvoir obtenir les graphiques des données par rapport à l'ajustement du modèle résultant et rapporter le R-carré de l'ajustement ?
Le script que j'utilise pour l'ajustement du modèle non linéaire est actuellement celui ci-dessous :
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" );
Votre RMSE est la perte moyenne carrée.
Je ne connais pas la cause de l'intrigue absente.
Merci Marc.
J'ai modifié la fonction Perte comme vous l'avez suggéré. J'ai exécuté l'ajustement mais je ne vois toujours pas la courbe du modèle sur le tracé.
Sur ma solution, j'obtiens : Avg Loss et Sqrt Avg Loss. Cela signifie-t-il que mon RSME représente alors la perte moyenne ?
Le RMSE est indiqué dans l'aperçu de la solution :

Le carré R n'est pas disponible car il faut deux modèles : le modèle ajusté et le modèle réduit. Il n’y a pas de modèle réduit dans le cas du modèle non linéaire. (Le modèle réduit dans la régression OLS est le modèle avec uniquement le terme d'origine constant.)
Vous redéfinissez incorrectement la fonction de perte par défaut dans Nonlinear. La perte par défaut est l’erreur des moindres carrés. Il ressort de votre script que vous souhaitez utiliser l'erreur des moindres carrés. La formule de votre colonne doit entraîner la perte pour chaque observation, et non pour l'ensemble de l'échantillon. Votre formule de perte ne devrait donc être que la différence au carré. (C'est-à-dire, ne calculez pas la somme des carrés des différences.) Avec cette approche au lieu de la perte par défaut, j'obtiens :

Ainsi, l'utilisation d'une perte personnalisée modifie les informations de la présentation de la solution en perte totale (SSE dans ce cas), perte moyenne (MSE dans ce cas) et perte moyenne carrée (RMSE dans ce cas).
J'ai enregistré le script de Nonlinear et je l'ai exécuté. Le tracé des données montre toujours la courbe représentant le graphique de la fonction non linéaire.