Hallo,
Ich arbeite an einem Skript, das Benutzern dies ermöglicht
- Wählen Sie Spalten aus, die in ein Modell passen
- Identifizieren Sie die primäre Variable und geben Sie den Zielwert an
- Identifizieren Sie, nach welcher Spalte das Modell aufgeteilt werden soll
- Lassen Sie JMP das Modell erstellen, optimieren Sie die Erwünschtheit, um das beabsichtigte Ziel zu erreichen, und geben Sie dann die Modellergebnisse aus
- Kopieren Sie die Ergebnisse aus einer praktischen Ausgabetabelle
Ich habe funktionale Skripte, die tun, was ich will, ohne dass Benutzereingaben oder -auswahlen möglich sind, aber es war eine Herausforderung, das Skript interaktiv zu gestalten. Ich denke, ich bin meistens dort, aber ich habe ein paar spezifische Dinge, mit denen ich zu kämpfen habe
- Frage 1: In einer früheren Version dieses Skripts habe ich für jedes Modell ein anderes Fenster verwendet, indem ich eine for-Schleife mit einer While( x == "y[i]")-Zeile verwendet habe. Ich würde lieber By( :x ) verwenden, weil es flexibler ist und ein Ausgabefenster gibt. Die Verwendung von By( :x ) unterbricht jedoch das spätere Skript, um ein skriptfähiges Objekt aus dem Bericht abzurufen. Ist es möglich, für jede Unterbox im Modellfenster einen anderen Bericht zu erstellen? Oder eine bessere Möglichkeit, die Zeilen 173-181 zu codieren? Ich baue diese Zeilen basierend auf diesen beiden anderen Threads: Faden 1 , Faden 2 .
- Frage 2: Ich brauche die Option, um eine variable Anzahl von Effekten zu haben, die modelliert werden, ohne Erwünschtheitsfunktionen zu haben (später wird das vollständige Skript auch minimierte Effekte haben, aber dieses vereinfachte Demo-Skript wurde zu kompliziert. In den Zeilen 122-126 kann ich den gewünschten Ausdruck in ModExpr erstellen, aber da es sich um eine Liste handelt, funktionierte es nicht, als ich versuchte, ihn direkt in das Profil einzufügen. Meine Problemumgehung besteht darin, dass eine Anzahl von Platzhaltern größer ist als die Anzahl von Variablen, die ich zu modellieren erwarte, und der Code scheint die unsinnigen Teile einfach zu ignorieren, wenn ich weniger als 6 modellierte Effekte habe ... aber das scheint super janky zu sein. Gibt es eine Möglichkeit, den kommentierten Code in den Zeilen 130-134 so zu korrigieren, dass die Liste zu einem einzigen Ausdruck kombiniert wird, der funktioniert? Ich konnte Concatenation auch nicht dazu bringen, gut zu spielen, aber ich wette, es gibt etwas Einfaches, das ich übersehen habe.
Hier ist ein Beispielskript mit Beispieldaten. Das Modell ist eine schreckliche Passform, aber das ist für die Demo nicht wirklich wichtig. Wenn Sie beim Ausführen die Auswahl für "von" löschen, werden die Dinge einwandfrei ausgeführt und Ergebnisse ausgegeben. Wenn im "by"-Abschnitt noch etwas übrig ist, wird Zeile 174 unterbrochen.
Vielen Dank für jede Hilfe!
Names Default To Here( 1 );
//sample data for demo
dt = Open( "$SAMPLE_DATA/Football.jmp" );
xvar = {};
yvar = {};
byvar = {};
ytarg = 60;
dtout = {};
//let users select the columns to model
win = New Window( "Model Variable Selection",
<<MODAL></MODAL>