Script JSL - Récupérez le résultat de la formule de prédictionBonjour,
J'essaie d'obtenir la valeur prédite après avoir défini les X dans une formule de prédiction.
Par exemple, si Y = X1 + X2, je souhaite créer une nouvelle ligne, définir X1 = 2 et X2 = 4 et récupérer la valeur prédite de Y = 6.
Je pensais que le moyen le plus simple de procéder serait de sauvegarder la formule de prédiction dans un nouvel ensemble de colonnes.
J'ajouterais ensuite une nouvelle ligne et définirais tous les X.
Ensuite, accédez simplement à la valeur de ligne de la formule de prédiction.
Cependant, cela ne fonctionne pas. Le journal montre que la valeur renvoie un « . ». Si j'exécute le script deux fois et que plusieurs lignes sont créées, la valeur est renvoyée correctement. Si j'ajoute deux lignes et n'exécute le script qu'une seule fois, j'obtiens toujours le "null" ou le "." dans le fichier journal. Il semble y avoir une raison pour laquelle JMP doit exécuter le script deux fois pour obtenir le résultat de formule prévu d'une ligne nouvellement ajoutée avec des valeurs X définies.
Existe-t-il un meilleur moyen d'extraire les valeurs prédites à partir de formules de prédiction à l'aide de scripts ?
Merci,
Nate
Re: Script JSL - Récupérer le résultat de la formule de prédictionSuper. Il fonctionne maintenant et fonctionne comme prévu. Merci beaucoup.Re: Script JSL - Récupérer le résultat de la formule de prédictionJ'oubliais le fait qu'il existe des fonctionnalités PLS supplémentaires dans JMP Pro qui ne figurent pas dans la version standard. Pour JMP ce sera similaire, mais en un peu plus simple :
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);
Pour comprendre pourquoi le code fonctionne, je commencerais par « Aide > Livres > Guide de script » pour apprendre les rudiments de JSL.
Re: Script JSL - Récupérer le résultat de la formule de prédictionmerci Ian
Désolé, mes connaissances en scripts sont trop limitées, votre aide ne m'accélère pas, pouvez-vous s'il vous plaît m'apporter de l'aide supplémentaire.
D'abord, je travaille avec JMP et non avec PRO. Je suppose que c'est la raison pour laquelle mon script PLS automatisé JMP est différent du vôtre. J'ai joint mon script.
De nombreuses questions apparaissent en lisant votre script.
Pourquoi vous séparez-vous entre PLSLAUNCH et PLSFITS. Est-ce nécessaire ou juste pour votre confort de lecture/documentation ?
Est-il nécessaire d'attribuer les ajustements à PLSFITS si je n'en ai qu'un, par exemple. seulement 7 facteurs ( s'il vous plaîtConvient << ( Ajuster [ 1 ] << savePredictionFormule );
s'il vous plaîtConvient << ( Ajuster [ 1 ] << sauvegarderYrésidus ); Je suppose que cela signifie : Enregistrez le résidu de Fit[1] dans l'objet PLSFITS (et ce nom peut être choisi par moi, c'est juste PLSFITS pour une meilleure identification)
Si j'exécute votre script, j'obtiens cette erreur dans la fenêtre de journalisation : plsFits << (Fit[/*###*/1] << savePredictionFormula); Est-ce à cause de la terminologie PRO ?
Merci beaucoup
Pierre
Re: Script JSL - Récupérer le résultat de la formule de prédictionSalut Peter, Cela devrait vous aider à démarrer. Les commandes 'Wait()' sont destinées à un effet cosmétique et peuvent être supprimées.
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 - Récupérer le résultat de la formule de prédictionBonjour Ian,
Je recherche dans la communauté la sauvegarde des "Enregistrer les valeurs prédites Y" du PLS dans un JSL. Existe-t-il un document disponible indiquant dans quel outil je traite quelle colonne de sauvegarde (par exemple, formules de prédiction, intervalles de confiance, valeurs prédites).
Merci Pierre
Re: Script JSL - Récupérer le résultat de la formule de prédictionDésolé, non, j'ai peut-être confondu le problème. Le 'Wait()' n'était qu'un effet cosmétique. En règle générale, vous ne devriez jamais en avoir besoin en JSL (mais il existe quelques situations très rares où cela pourrait se produire). Il est probablement préférable d'envoyer à la table de données un message « Exécuter les formules ».
Re: Script JSL - Récupérer le résultat de la formule de prédictionAh parfait ! J'ai juste besoin de mettre le Wait(). Merci!
Re: Script JSL - Récupérer le résultat de la formule de prédictionLes détails dépendent de la plateforme que vous utilisez, mais ceci montre l'idée de 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;