Il mio team usa spesso l'analisi del Degradation Stability Test per determinare i valori previsti (95% di confidenza) e i limiti superiore e inferiore per una risposta (valore y). A questo punto abbiamo eseguito il test di stabilità di degradazione per ogni variabile y (stessa serie di valori di punti temporali x) e quindi modificato manualmente il tempo di previsione longitudinale, salvato le previsioni in una nuova finestra dati e quindi estratto i valori previsti, limite superiore e inferiore in un file Excel separato. Sto cercando di scrivere uno script in grado di eseguire il test di stabilità per un numero di punti temporali di previsione longitudinale preselezionati e salvare tutti i dati (valore previsto, limiti superiore e inferiore) in una nuova tabella dati. Tuttavia, continuo a riscontrare errori e non sono sicuro che ciò che sto cercando di ottenere sia possibile nella versione corrente di JMP (v17.1.1). Ho allegato il mio script di seguito.
// Use the current data table
dt = Current Data Table();
// Define the longitudinal prediction times
longitudinalPredictionTimes = {18, 24, 36, 48, 60};
// Create a new data table to store the results
resultsTable = New Table( "Prediction Results",
Add Rows( N Items( longitudinalPredictionTimes ) ),
New Column( "Prediction Time", Numeric, "Continuous" ),
New Column( "Prediction", Numeric, "Continuous" ),
New Column( "Lower Bound", Numeric, "Continuous" ),
New Column( "Upper Bound", Numeric, "Continuous" )
);
// Loop through each prediction time and perform the degradation analysis
For( i = 1, i <= N Items( longitudinalPredictionTimes ), i++,
predictionTime = longitudinalPredictionTimes[i];
// Perform degradation analysis
degradationReport = dt << Degradation(
Y( :"Purity (%)" ),
Time( :"Timepoint (days)" ),
Label( :Formulation ),
Application( Stability Test ),
Connect Data Markers( 0 ),
Show Fitted Lines( 1 ),
Show Spec Limits( 1 ),
Show Median Curves( 0 ),
Show Legend( 1 ),
No Tab List( 0 ),
Use Pooled MSE for Nonpoolable Model( 0 ),
Set Censoring Time( . ),
Show Residual Plot( 1 ),
Show Inverse Prediction Plot( 1 ),
Show Curve Interval( 1 ),
Longitudinal Prediction Time( predictionTime ),
Longitudinal Prediction Interval( Confidence Interval ),
Longitudinal Prediction Alpha( 0.05 ),
Inverse Prediction Interval( Confidence Interval ),
Inverse Prediction Alpha( 0.05 ),
Inverse Prediction Side( Lower One Sided )
);
// Extract the prediction, lower bound, and upper bound from the report
predictionPlot = degradationReport[Outline Box( "Diagnostics and Predictions" )][Outline Box( "Prediction Plot" )];
prediction = predictionPlot[Number Col Box( "Predicted value of Purity (%) at Timepoint (days)=" || Char( predictionTime ) )][1];
lowerBound = predictionPlot[Number Col Box( "Lower 95% Confidence Limit" )][1];
upperBound = predictionPlot[Number Col Box( "Upper 95% Confidence Limit" )][1];
// Add the results to the new table
resultsTable:Prediction Time[i] = predictionTime;
resultsTable:Prediction[i] = prediction;
resultsTable:Lower Bound[i] = lowerBound;
resultsTable:Upper Bound[i] = upperBound;
);
// Show the results table
resultsTable << Show WindowCredo che ci siano alcuni errori di programmazione.
Probabilmente la cosa che devi fare è la seguente.

Innanzitutto, sulla riga 59, hai bisogno di una chiamata "report", che avvolge l'oggetto restituito dalla chiamata di piattaforma. Questo "report" ti fornisce un display true, che puoi navigare usando outline box subscription, ecc.
Alla riga 60, restituisce un oggetto scriptabile, a cui puoi inviare i comandi che vedi nel menu a discesa. Come questo:

Riga 61, invia un comando come se avessi cliccato sulla voce di menu.
Riga 62, fai qualcosa con i numeri di cui hai bisogno.
Infine, chiudi la tabella dati senza salvare nulla, perché ormai non ne hai più bisogno.
Da allora ho trovato una soluzione alternativa che calcola i valori dell'intervallo di confidenza al 95% utilizzando la funzione bivariata.