Sto cercando di trovare il modo migliore per riportare un modello non lineare adatto ai miei dati sperimentali.
Sono riuscito a scrivere uno script che si adatta a un modello non lineare e trova le stime dei parametri utilizzando la funzione di perdita. Quindi riporta le stime di ciascun parametro e gli errori non lineari.
Tuttavia, mi piacerebbe ottenere anche il RMSE o il quadrato R della misura risultante. Non è disponibile per i modelli non lineari? o devo aggiungere un ulteriore passaggio di analisi?
Quando si esegue la piattaforma di analisi non lineare in modo interattivo, il grafico risultante mostra sia i dati sperimentali che la curva del modello. Tuttavia, quando si esegue lo script automaticamente vengono mostrati solo i dati sperimentali. Qualcuno sa perché questo accade? Mi manca qualcosa nello script qui sotto?
Qualcuno potrebbe fornire un po 'di letteratura / libri / link per essere in grado di ottenere i grafici dei dati rispetto al modello risultante in forma e riportare il quadrato R della misura?
La sceneggiatura che sto usando per il modello non lineare è quella in basso al 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" );
Il tuo RMSE è il Sqrt Avg Loss.
Non conosco la causa della trama assente.
Grazie Marco.
Ho modificato la funzione di perdita come suggerito. Ho eseguito il fitting ma non riesco ancora a vedere la curva del modello sul Plot.
Sulla mia soluzione ottengo: Avg Loss e Sqrt Avg Loss. Questo significa che il mio RSME è la perdita di avaerage allora?
Il RMSE è riportato nel profilo della soluzione:

Il quadrato R non è disponibile perché sono necessari due modelli: il modello montato e il modello ridotto. Non esiste un modello ridotto nel caso del modello non lineare. (Il modello ridotto nella regressione OLS è il modello con solo il termine di intercettazione costante.)
Si sta ridefinendo in modo errato la funzione di perdita di default in Non lineare. La perdita predefinita è l'errore di meno al quadrato. Appare dal tuo script che vuoi usare l'errore al quadrato minimo. La formula della colonna dovrebbe comportare la perdita per ogni osservazione, non per l'intero campione. Quindi la tua formula di perdita dovrebbe essere solo la differenza al quadrato. (Ovvero, non calcolare la somma delle differenze al quadrato.) Con questo approccio invece della perdita predefinita, ottengo:

Pertanto, l'uso di una perdita personalizzata modifica le informazioni nel profilo della soluzione sulla perdita totale (SSE in questo caso), sulla perdita media (MSE in questo caso) e sullo Sqrt Avg Loss (RMSE in questo caso).
Ho salvato lo script da Nonlinear e l'ho eseguito. Il grafico dei dati mostra ancora la curva che rappresenta il grafico della funzione non lineare.