Script JSL - Afferra il risultato della formula di previsioneCiao,
Sto cercando di ottenere il valore previsto dopo aver impostato le X in una formula di previsione.
Ad esempio, se Y = X1 + X2, voglio creare una nuova riga, impostare X1 = 2 e X2 = 4 e prendere il valore previsto di Y = 6.
Ho pensato che il modo più semplice per farlo sarebbe stato salvare la formula di previsione in un nuovo set di colonne.
Vorrei quindi aggiungere una nuova riga e impostare tutte le X.
Quindi, accedi semplicemente al valore della riga della formula di previsione.
Tuttavia, questo non funziona. Il registro mostra che il valore restituisce un '.'. Se eseguo lo script due volte, quindi vengono create più righe, il valore viene restituito correttamente. Se aggiungo due righe ed eseguo lo script solo una volta, ottengo comunque "null" o "." nel file di registro. Sembra esserci un motivo per cui JMP deve eseguire lo script due volte per ottenere il risultato della formula previsto di una riga appena aggiunta con i valori X impostati.
Esiste un modo migliore per acquisire i valori previsti dalle formule di previsione utilizzando gli script?
Grazie,
Nate
Re: Script JSL - Risultato della formula di previsione afferrareGrande. Ora funziona e funziona come previsto. Grazie molto.Re: Script JSL - Risultato della formula di previsione afferrareMi stavo dimenticando del fatto che c'è una funzionalità PLS aggiuntiva in JMP Pro che non è nella versione normale. Per JMP sarà simile, ma un po' più semplice:
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Do a PLS fit in JMP (also works in JMP Pro)
pls = dt << Partial Least Squares(
Y( :ls, :ha, :dt ),
X(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
Validation Method( Name( "Leave-One-Out" ), Initial Number of Factors( 15 ) ),
Fit(
Method( NIPALS ),
Number of Factors( 7 ),
Show Confidence Band( 1 ),
Distance Plots( 1 ),
Scatter Scores Plots( 1 ),
Diagnostics Plots( 1 ),
Overlay Loadings Plots( 1 ),
T Square Plot( 1 ),
Overlay Coefficients Plots( 1 )
)
);
// See what messages the PLS platform understands (look in the Log Window)
ClearLog();
ShowProperties(pls);
// Save some results from the (7 factor) fit
pls << (Fit[1] << savePredictionFormula);
pls << (Fit[1] << saveYresiduals);
Per capire perché il codice funziona, inizierei con "Aiuto > Libri > Guida agli script" per apprendere i rudimenti di JSL.
Re: Script JSL - Risultato della formula di previsione afferraregrazie Ian
Scusa, la mia conoscenza dello scripting è troppo limitata, il tuo aiuto non mi sta accelerando, puoi per favore darmi un po' più di supporto.
Per prima cosa lavoro con JMP non con PRO. Presumo che questo sia il motivo per cui il mio script PLS automatizzato JMP ha un aspetto diverso dal tuo. Ho allegato il mio copione.
Un sacco di domande appaiono leggendo il tuo copione.
Perché ti separi tra PLSLAUNCH e PLSFITS. È necessario o solo per la tua comodità nella lettura/documentazione?
È necessario assegnare PLSFITS gli accoppiamenti se ho solo un "adattamento" ad es. solo 7 fattori ( per favore << ( In forma [ 1 ] << savePredictionFormula );
per favore << ( In forma [ 1 ] << salvaYresiduali ); Presumo che significhi: salva il residuo di Fit[1] nell'oggetto PLSFITS (e questo nome può essere scelto da me, è solo PLSFITS per una migliore identificazione)
Se eseguo il tuo script, ottengo questo errore nella finestra di registro: plsFits << (Fit[/*###*/1] << savePredictionFormula); È a causa della terminologia PRO?
Grazie molto
Peter
Re: Script JSL - Risultato della formula di previsione afferrareCiao Peter, questo dovrebbe aiutarti a iniziare. I comandi 'Wait()' sono per effetti cosmetici e possono essere rimossi.
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Launch the PLS platform
plsLaunch = dt << Fit Model(
Y( :ls, :ha, :dt ),
Effects(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
No Intercept( 1 ),
Center Polynomials( 0 ),
Personality( "Partial Least Squares" )
);
// Do a couple of fits
Wait(2);
plsFits = plsLaunch << Run(
Fit( Method( NIPALS ), Number of Factors( 7 ) ),
Fit( Method( NIPALS ), Number of Factors( 6 ) )
);
// Save the prediction formula for the first fit (7 factors)
Wait(2);
plsFits << (Fit[1] << savePredictionFormula);
// Save the prediction formula for the second fit (6 factors)
Wait(2);
plsFits << (Fit[2] << savePredictionFormula);
// Now save the Y residuals
Wait(2);
plsFits << (Fit[1] << saveYresiduals);
plsFits << (Fit[2] << saveYresiduals);
Re: Script JSL - Risultato della formula di previsione afferrareCiao Ian,
Sto cercando nella community di salvare "Save Y Predicted Values" dal PLS in un JSL. C'è un documento disponibile che dice in quale strumento mi rivolgo a quale colonna di salvataggio (es. formule di previsione, intervalli di confidenza, valori previsti).
Grazie Pietro
Re: Script JSL - Risultato della formula di previsione afferrareScusa, no, potrei aver confuso il problema. Il "Wait()" era solo per l'effetto cosmetico. In genere, non dovresti mai averne bisogno in JSL (ma ci sono alcune situazioni molto rare in cui potresti). Probabilmente è meglio inviare alla tabella dei dati un messaggio "Esegui formule".
Re: Script JSL - Risultato della formula di previsione afferrareAh perfetto! Ho solo bisogno di inserire Wait(). Grazie!
Re: Script JSL - Risultato della formula di previsioneI dettagli dipendono dalla piattaforma che utilizzi, ma questo mostra l'idea di base:
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate(X(:height), Y(:weight));
// Do a regression
biv << fitLine;
/// Save the prediction formula column
biv << (curve[1] << savePredicteds);
// Add a new observation (row) that we want to predict for
Wait(2);
dt << addRows(1);
// Give predictor values and get the prediction back
Column(dt, "weight")[NRow(dt)] = 160;
Column(dt, "height")[NRow(dt)] = 65;