Mein Team verwendet häufig die Degradationsstabilitätstestanalyse, um die vorhergesagten Werte (95 % Konfidenz) sowie die oberen und unteren Grenzen für eine Antwort (y-Wert) zu bestimmen. Zu diesem Zeitpunkt haben wir den Degradationsstabilitätstest für jede y-Variable (dieselbe Reihe von x-Zeitpunktwerten) ausgeführt und dann die longitudinale Vorhersagezeit manuell geändert, die Vorhersagen in einem neuen Datenfenster gespeichert und dann die vorhergesagten, oberen und unteren Grenzwerte in eine separate Excel-Datei extrahiert. Ich versuche, ein Skript zu schreiben, das den Stabilitätstest für eine Reihe vorab ausgewählter longitudinaler Vorhersagezeitpunkte ausführen und alle Daten (vorhergesagter Wert, obere und untere Grenzwerte) in einer neuen Datentabelle speichern kann. Ich stoße jedoch immer wieder auf Fehler und bin nicht sicher, ob das, was ich erreichen möchte, in der aktuellen Version von JMP (v17.1.1) möglich ist. Ich habe mein Skript unten angehängt.
// 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 WindowIch glaube, es liegen einige Programmierfehler vor.
Folgendes müssen Sie wahrscheinlich tun.

Zuerst benötigen Sie in Zeile 59 einen „Bericht“-Aufruf, der das vom Plattformaufruf zurückgegebene Objekt umschließt. Dieser „Bericht“ gibt Ihnen eine Anzeige „true“, in der Sie mithilfe von Gliederungsfeldabonnements usw. navigieren können.
In Zeile 60 wird ein skriptfähiges Objekt zurückgegeben, an das Sie Befehle senden können, die Sie im Dropdown-Menü sehen. Wie zum Beispiel diese:

Zeile 61, senden Sie einen solchen Befehl, als ob Sie auf das Menüelement geklickt hätten.
In Zeile 62 machen Sie etwas mit den Zahlen, die Sie brauchen.
Zuletzt schließen Sie die Datentabelle, ohne etwas zu speichern, da Sie damit fertig sind.
Ich habe seitdem einen Workaround gefunden, der die Werte des 95%-Konfidenzintervalls mithilfe der bivariaten Funktion berechnet.