Hallo zusammen,
Ich habe Schwierigkeiten mit der richtigen Referenzierung eines Berichts, wenn ich versuche, den Befehl <
Ich habe ein automatisiertes Skript, um bestimmte Analysen durchzuführen, und in diesem Skript erhalte ich eine Liste der offenen Berichte, um den Report_of_Interest zu erhalten, siehe JSL unten:
report_windows = Get Window List( "Report" );
report_of_interest = Empty();
For Each( {report_windows}, report_windows,
outline_title = Try( report_windows[Outline Box( 1 )] << Get Title, "" );
If( Starts With( outline_title, "Generalized " ),
report_of_interest = report_windows;
Break();
);
);„report_of_interest“ ist eine Referenz auf die DisplayBox[HeadBox] des Berichts. Mithilfe dieser Referenz kann ich beispielsweise den Befehl senden, um eine Simulation einer Spalte von Interesse im Bericht durchzuführen, beispielsweise einer Parameterschätzungsspalte.
report_of_interest[Number Col Box( 8 )] << Simulate(
2500,
Random Seed(.),
Out( :ColOut ),
In( :ColIn )
);
Wenn ich jedoch versuche, den Befehl <
report_of_interest << (Fit[1] << Save Simulation Formula)
Ich erhalte die folgende Fehlermeldung im Protokollfenster:
Objekt „HeadBox“ erkennt die Nachricht „Senden“ nicht; Vielleicht meinen Sie eines davon: <<<<<<<<<<<< <<<<<<<<<<< <
Wenn ich versuche, den Titel der Gliederung, die Variable „outline_title“ von oben, zu verwenden, erhalte ich die folgende Fehlermeldung im Protokoll:
Senden erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Senden“, Gliederungstitel << /*###*/(Fit[1] << Simulationsformel speichern) /*###*/
Was ich nicht verstehe, ist der Unterschied zwischen der Referenz auf die Beispiele in der Scripting Index-Hilfe und meinem JSL-Code. Aus dem ersten Beispiel in der Scripting Index-Hilfe geht Folgendes hervor:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
fm = dt << Fit Model(
Y( :Y ),
Effects( :Age, :Gender, :BMI, :BP, :Total Cholesterol, :LDL, :HDL, :TCH, :LTG, :Glucose ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Run( Fit( Estimation Method( Lasso( Adaptive ) ), Validation Method( KFold, 5 ) ) )
);
fm << (fit[1] << Save Simulation Formula);
Der fm ist eine Variable, die auf Folgendes verweist: Fit Generalized[]. In den Scripting Index-Beispielen können alle mithilfe dieser Referenz die Simulationsspalte in der Datentabelle speichern.
Ein großer Unterschied, den ich erkennen kann, besteht darin, dass in den Beispielen alle den Befehl „Fit Model()“ mit dem Unterbefehl „Run(Fit())“ an die Datentabelle senden können. Ich kann das in meinem JSL-Code nicht tun, da er allgemeiner ist und ich ihn nicht immer in denselben Spalten für die Y-, Antwort- und X-Faktoren ausführe.
Die analoge JSL in meinem Code ist die folgende:
avdt << Fit Model(
Y( Eval( YCols ) ),
Validation( :Validation ),
Personality( "Generalized Regression" )
);
Beachten Sie, dass ich keine Effekte aufgelistet habe, da diese sich je nach der Datentabelle, mit der ich arbeite, ändern können. Ich habe davor einen Codeabschnitt, der angibt, welche Spalte die Antwortspalte ist, und daher kann ich Y(Eval(ycols)) in Fit Model() einschließen, da der JSCL-Code einen Verweis auf diese Spalte hat.
Leider kann ich nichts wie „fm = avdt << Fit Model()“ tun und es auf diese Weise referenzieren, denn sobald ich alle Effekte eingebe und im GenReg-Plattformfenster auf „Ausführen“ klicke, gibt fm den Fehler zurück, dass es sich um ein gelöschtes Objekt handelt Referenz[]. Wenn Sie die Zeile mit „Run()“ im Beispiel aus der Scripting Index-Hilfe auskommentieren, sie ausführen und im Dialogfeld „Modell anpassen“ auf „Ausführen“ klicken, speichert der Beispielcode die Simulationsspalte nicht in der Datentabelle.
Entschuldigen Sie den langen Beitrag, aber ich hatte das Gefühl, ich müsste etwas Kontext zu meinem Problem schaffen. Für jede Hilfe bei der Korrektur der korrekten Referenzierung des Report_of_Interest, damit ich die <
Danke!,
DS