Wie speichere ich eine Vorhersageformelspalte mit einem bestimmten Namen über JSL?Verehrte Gäste,
Ich führe ein verallgemeinertes lineares Modell über ein JSL-Skript aus.
Wie kann ich die Vorhersageformel in einer Spalte mit einem bestimmten Namen speichern?
Alles was ich finden konnte ( Speichern der Vorhersageformel mithilfe eines JMP-Skripts automatisieren? ) war etwa so:
GLM = Modell anpassen (......);
GLM << Vorhersageformel;
Jedoch:
1) Kann ich den Namen der Spalte auswählen, in der die Vorhersageformel gespeichert wird? JMP speichert es automatisch unter: „Pred Formula ‚Target Variable‘“
2) Ist diese Funktionalität irgendwo dokumentiert? Ich habe es oben im Forum gefunden, aber nicht in der Dokumentation von JMP
3) Funktioniert die gleiche Syntax für andere Plattformen (z. B. Partition)?
Danke.
Betreff: JSL-Skripting: Wie speichere ich Vorhersageformeln?Ians Antwort beantwortet Bedenken Nr. 1 und Nr. 3, während Benutzer ms Frage Nr. 2 zur Dokumentation rund um die JMP Scripting Language (JSL) beantwortet.
@ian_jmp :
Im Allgemeinen ist die „Vorhersageformel speichern“ auf allen Plattformen konsistent. Die Namen der gespeicherten Spalten sind zwar festgelegt, Sie können sie jedoch umbenennen, indem Sie beispielsweise Folgendes tun:
dt <SPAN class="token operator">=</SPAN> <SPAN class="token function">Open</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token string">"$SAMPLE_DATA/Big Class.jmp"</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
cols <SPAN class="token operator">=</SPAN> dt <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> GetColumnNames<SPAN class="token punctuation">(</SPAN><SPAN class="token string">"String"</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN>c<SPAN class="token operator">=</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> c<SPAN class="token operator"><=</SPAN><SPAN class="token function">NItems</SPAN><SPAN class="token punctuation">(</SPAN>cols<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> c<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token function">Column</SPAN><SPAN class="token punctuation">(</SPAN>dt<SPAN class="token punctuation">,</SPAN> cols<SPAN class="token punctuation">[</SPAN>c<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">)</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> SetName<SPAN class="token punctuation">(</SPAN><SPAN class="token string">"New "</SPAN><SPAN class="token operator">||</SPAN>cols<SPAN class="token punctuation">[</SPAN>c<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
In seltenen Fällen kann es hilfreich sein, „Spaltennamen abrufen“ vor und nach der Erstellung der Spalten zu verwenden und die beiden Listen zu vergleichen, um die Namen der neuen Spalten abzuleiten.
@MS :
Was die Dokumentation für JSL betrifft, denke ich, dass die Skriptindex (Hilfemenü) ist eine großartige Ressource voller gebrauchsfertiger Beispiele. Und ja, << Vorhersageformel ist da.
Betreff: Wie speichere ich eine Vorhersageformelspalte mit einem bestimmten Namen über JSL?Fortsetzung Ihres Beispiels:
GLM = Fit Model (......);
pf = GLM << prediction formula;
pf << Set Name( "my name" );
Ja, dieser Ansatz sollte mit allen Modellierungsplattformen funktionieren.
Betreff: JSL-Skripting: Wie speichere ich Vorhersageformeln?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe die doppelten Anführungszeichen aus „:Meine gespeicherte Vorhersage“ entfernt und jetzt funktioniert alles einwandfrei.
Vielen Dank für den Hinweis auf den Scripting Index – sehr nützlich!
Betreff: JSL-Skripting: Wie speichere ich Vorhersageformeln?Das leere Feld weist möglicherweise darauf hin, dass die Spalte „Meine gespeicherte Vorhersage“ (sollte nicht in doppelten Anführungszeichen stehen) in der aktuellen Datentabelle nicht vorhanden ist. Rechtschreibung prüfen.
Was die Dokumentation für JSL betrifft, denke ich, dass die Skriptindex (Hilfemenü) ist eine großartige Ressource voller gebrauchsfertiger Beispiele. Und ja, << Vorhersageformel ist da.
Betreff: JSL-Skripting: Wie speichere ich Vorhersageformeln?Mmm, es klingt sehr verworren. Was ich herausgefunden habe ist, dass, wenn meine Zielvariable „Mein Ziel“ heißt, die Spalte „Pred Formula My Target“ heißt, also verwende ich:
GLM = Fit Model (......);
GLM << prediction formula;
Column("Pred Formula My Target") << Set Name("New Column Name");
Wie wäre es mit der Dokumentation? Ist dies irgendwo in der JSL-Dokumentation ordnungsgemäß dokumentiert? Ich habe es nicht geschafft, es zu finden. Ich bin neu in der JMP-Skripterstellung, aber der erste Eindruck ist, dass es sich um eine leistungsstarke Sprache mit einer komplizierten Syntax und schlechter Dokumentation handelt, in gewisser Weise ein bisschen wie R – aber von einer kommerziellen Software würde ich eine bessere Dokumentation erwarten!
Schließlich erstelle ich eine weitere Spalte, die die Vorhersage mit etwas anderem multipliziert:
New Column("My new calculation", Numeric, Formula( :"My saved Prediction" * :another_field ));
Wo „Meine gespeicherte Vorhersage“ Leerzeichen im Namen enthält, ist das bei „other_field“ nicht der Fall. Die Formel wird korrekt berechnet, aber wenn ich mit der rechten Maustaste auf die Überschrift klicke und zur Formel gehe, sehe ich ein leeres Feld, multipliziert mit another_field. Ist das ein Fehler in JMP? Hätte ich die Formel anders angeben sollen?
Danke schön.
Betreff: JSL-Skripting: Wie speichere ich Vorhersageformeln?Im Allgemeinen ist die „Vorhersageformel speichern“ auf allen Plattformen konsistent. Die Namen der gespeicherten Spalten sind zwar festgelegt, Sie können sie jedoch umbenennen, indem Sie beispielsweise Folgendes tun:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
cols = dt << GetColumnNames("String");
For(c=1, c<=NItems(cols), c++,
Column(dt, cols[c]) << SetName("New "||cols[c]);
);
In seltenen Fällen kann es hilfreich sein, „Spaltennamen abrufen“ vor und nach der Erstellung der Spalten zu verwenden und die beiden Listen zu vergleichen, um die Namen der neuen Spalten abzuleiten.