Hinzufügen/Entfernen von Effekten in der schrittweisen Regression über JSL und Spaltennummer/-nameHallo allerseits!
Ich brauche wirklich Hilfe dabei, da ich für meine Abschlussarbeit JMP und JSL verwende. Ich verwende derzeit JMP über JSL, um einige Daten zu analysieren, und mein Fokus liegt auf der schrittweisen Regression. Ich werde übrigens einige Codeausschnitte anhängen, um Ihnen die Hilfe zu erleichtern.
Grundsätzlich
1.) Wie füge ich über die Spaltennummer mehrere Effekte zum ursprünglichen Modell hinzu?
Derzeit kann ich Y nur mithilfe der gewünschten Spaltennummer festlegen, aber ich kann keine X mithilfe der Spaltennummer hinzufügen.
Ich möchte, dass es so weitergeht
obj = dt << Fit Model(Y(:Column Name(i)),
Effects(
:Effect1Name, :Effect2Name, /*and so on and so forth*/
),
Personality(Stepwise), Run Model(Stopping Rule(MinimumBIC))
);
dazu
obj = dt << Fit Model(Y(:Column Name(i)),
Effects(
:Column(/*indices of columns to place as effects*/)
),
Personality(Stepwise), Run Model(Stopping Rule(MinimumBIC))
);
2.) Wie kann man am wenigsten signifikante Effekte entfernen?
Nachdem ich das ursprüngliche Skript ausgeführt habe, sehe ich, dass einige Effekte nicht wirklich signifikant sind. Das Standardskript wird verwendet
obj << Remove(:/*hardcoded column name*/);
Aber ich möchte, dass es flexibel ist, damit ich es automatisieren kann, sodass es so aussieht
obj << Remove(:Column Name(indextoremove));
aber das obige Snippet erzeugt diese Fehlermeldung
Term not found in access or evaluation of 'Column Name' , Column Name/*###*/(indextoremove)
Danke!
Betreff: Hinzufügen/Entfernen von Effekten in der schrittweisen Regression über JSL und Spaltennummer/-name<SPAN class="token string">^effect_cols^ doesnt appear to work within eval(parse(eval insert(Step_Str))); as the brackets "{" of the list still exist.</SPAN>Betreff: Hinzufügen/Entfernen von Effekten in der schrittweisen Regression über JSL und Spaltennummer/-nameHallo nochmal @cwillden !
Ich habe etwas an meinem Code geändert, inspiriert von dem, was ich zuvor gemacht habe und in Verbindung mit Ihrem Codeausschnitt. Und jetzt funktioniert es!
Vielen Dank!
Betreff: Hinzufügen/Entfernen von Effekten in der schrittweisen Regression über JSL und Spaltennummer/-nameHallo @cwillden ,
Danke für Ihre Antwort! Sie haben mein erstes Problem (Hinzufügen mehrerer Effekte) hervorragend gelöst!
Was das zweite Problem betrifft, kann ich den Term mit dem größten p-Wert bereits entfernen. Ich glaube jedoch, dass dies nicht die Kriterien sind, die ich verwende, um einen Begriff zu entfernen.
Was ich mache (wenn ich dies mit einer Point-and-Click-Methode und nicht mit Skripten mache), ist:
- Laden Sie die Tabelle.
- Führen Sie das Modul „Modell anpassen“ aus
- Fügen Sie das Y und das X hinzu.
- Wählen Sie die schrittweise Regression aus
- Bauen Sie das Modell. (Klicken Sie auf Los)
- Klicken Sie auf Ausführen, um den Bericht anzuzeigen.
- Gehen Sie zur Tabelle Parameterschätzungen.
- Untersuchen und entfernen Sie Begriffe basierend auf dem Prob>|t|.
Ich glaube, der von Ihnen gesendete Code entfernte Begriffe basierend auf Prob>F der Tabelle „Aktuelle Schätzungen“ des Fensters „Schrittweise anpassen“. Ich möchte Begriffe entfernen, die auf Prob>|t| basieren der Tabelle „Parameterschätzungen“ des Fensters „Bericht: Modell anpassen“.
Noch einmal Danke!
Betreff: Hinzufügen/Entfernen von Effekten in der schrittweisen Regression über JSL und Spaltennummer/-nameHallo @pedbundoc ,
Willkommen in der Community und viel Erfolg bei Ihrer Abschlussarbeit.
Im Gegensatz zu anderen Dialogeingaben ist die Effekte-Eingabe nicht nur eine Liste von Spalten.Sie geben in diesem Argument auch Effekte höherer Ordnung an.Sie können die Liste der Effekte mit Dingen wie „Spalte(1), Spalte(2), Spalte(3), Spalte(1)*Spalte(2), Spalte(2)*Spalte(2)“ usw. erstellen. Sie können (glaube ich) in keinem Szenario mehrere Indizes innerhalb der Column()-Funktion angeben.Eine bessere Lösung wäre, eine Liste von Spaltenverweisen zu erhalten und die Liste mithilfe Ihrer Spaltenindizes wie folgt zu unterteilen:
dt = Current Data Table();
all_cols = dt << Get Column Reference();
//let's say factors are columns 2-4
effect_cols = all_cols[2::4];
Nun scheint es JMP nicht zu gefallen, dass ich einfach die Variable effect_cols direkt als Effects-Argument für das Fit Model-Skript einfüge.Es sucht nach einer Spalte mit dem Namen „effect_cols“, anstatt die Liste auszuwerten.Daher analysieren Sie das Fit Model-Skript anhand einer Zeichenfolge, die wir bei der Auswertung von effect_cols wie folgt ersetzen:
Step_Str = "\[step = dt << Fit Model(
Y( Column(5) ),
Effects(
^effect_cols^
),
Personality( "Stepwise" ),
Run
);]\";
eval(parse(eval insert(Step_Str)));
Dies sollte für Sie funktionieren, wenn Sie nur Haupteffekte haben.Andernfalls müssen Sie etwas kreativer sein.Immer noch völlig machbar.
Nun zum Problem der Entfernung von Effekten.Remove funktioniert nur, wenn Sie ihm ein String-Argument geben, das mit den Namen eines der Effekte übereinstimmt.Sie können eine eval(parse(eval insert()))-Sequenz wie zuvor verwenden, um eine Zeichenfolge zu analysieren, in der wir eine Variable einfügen, die den Effektnamen enthält, den wir entfernen möchten.Hier ist ein Beispiel, bei dem ich den Effekt mit dem größten p-Wert nehme und ihn entferne:
//Get a reference to the report window containing the stepwise object
step_rprt = step << Report;
//get the term names and current p-values from Current Estimates
terms = step_rprt["Current Estimates"][StringColBox(1)] << Get;
pvals = step_rprt["Current Estimates"][NumberColBox(5)] << Get;
//Remove Intercept from each
remove from(terms,1); //remove intercept
remove from(pvals,1); //remove p-value for intercept
max_index = Contains(pvals, max(pvals)); //get index of max p-value
//create an expression to remove the term with the largest p-value
remove_worst = parse(eval insert("\[step << Remove("^terms[max_index]^");]\"));
//Evaluate the expression
eval(remove_worst);Hoffentlich hilft das!