Skript zum Speichern von Resten der Spline-AnpassungHallo,
Weiß jemand, wie man ein Skript schreibt, um Residuen (oder Vorhersagen) als neue Spalte für die Spline-Anpassung zu speichern? Es ist einfach, wenn ich es manuell mache, ich muss nur „Residuen speichern“ im roten Dropdown-Dreieck auswählen. Ich weiß, wie man Skripte schreibt, um Residuen als neue Spalte für die Linienanpassung mithilfe von „Modell anpassen“ zu speichern. Ich muss jedoch häufig Zeittrenddaten mithilfe der standardisierten X-Spline-Anpassung anpassen und bin mir nicht sicher, ob es eine einfachere Möglichkeit gibt, dies zu tun. Mein letztes Ziel besteht darin, Residuen oder Vorhersagen für mehrere Variablen in einer Schleife zu ermitteln, daher wird ein einfaches Skript sehr hilfreich sein.
Danke!!

Betreff: Skript zum Speichern von Resten der Spline-AnpassungHallo Jim
Gibt es eine Lösung/Korrektur, damit wir Reste in Version 14 speichern können?
danke für die Hilfe
Betreff: Skript zum Speichern von Resten der Spline-AnpassungPeng,
Ja, das scheint inkonsistent zu sein, aber ich vermute, dass dies absichtlich gemacht wurde, um die Vorhersagen zu vergleichen (zum Beispiel sind die Männchen ein Überbrückungssatz für die Vorhersagen basierend auf den Weibchen und umgekehrt).
Um eine einzelne Spalte mit Vorhersagen basierend auf dem Modell „Gruppieren nach“ zu erstellen, erstellen Sie eine neue Spalte mit einer Formel oder legen Sie jeden Wertausdruck fest
If( :sex=="M", Spalte für die männlichen Vorhersagen, :sex=="F", Spalte für die männlichen Vorhersagen);
Wenn Sie eine Spalte wünschen, die wie die restlichen Spalten aussieht, erstellen Sie eine Spalte für Männer und verwenden Sie einen Ausdruck wie
If( :sex=="M", Spalte für die männlichen Vorhersagen, empty() );
Dann machen Sie dasselbe für Frauen.
Betreff: Skript zum Speichern von Resten der Spline-AnpassungCool, das ist großartig!!
Nur noch eine Frage:
Wenn ich es tue obj<SPAN class="token operator"> <</SPAN><SPAN class="token operator"> <</SPAN><SPAN class="token punctuation"> (</SPAN> Kurve<SPAN class="token punctuation"> [</SPAN> ich<SPAN class="token punctuation"> ]</SPAN><SPAN class="token operator"> <</SPAN><SPAN class="token operator"> <</SPAN><SPAN class="token messages"> Restbestände speichern</SPAN><SPAN class="token punctuation"> )</SPAN> und gruppieren nach (:sex), JMP berechnete die Residuen für „M“ und „F“ und speicherte sie in verschiedenen Spalten mit einigen leeren Zellen. Aus diesem Grund ist „Transponieren“ erforderlich, um alle Residuen in einer Spalte zu erhalten. Wenn ich jedoch die Vorhersagen <
Danke
Betreff: Skript zum Speichern von Resten der Spline-AnpassungDie neue JMP 13-Tabellen-Subset-Referenz gefällt mir sehr gut. Es gibt jedoch immer noch eine einfache Methode, die Werte mit der Meldung „Get as Matrix“ abzurufen. Die Schlüsselsyntax lautet dt << get as matrix( list | index ).Es gibt keine zeilenweise Max-Funktion, aber es gibt eine VMax-Funktion, die ein spaltenweises Max ist.Ich habe dies in JMP 12 getestet.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ), GroupBy( :sex),
Fit Spline( 0.1, Standardized )
);
//Find how many in a group. We know it is 2 for Big Class
summarize(_by = By(:sex));
//Find out how many columns before adding residuals
ncpre = ncol(dt);
_nby = nitems(_by);
for(i=1, i<=_nby, i++,
obj << (Curve[i] << Save Residuals);
wait(0);
);
idx = ncpre+1::(ncpre+_nby);
cmat = Transpose(VMax(Transpose(dt << get as matrix(idx)))); //matrix _nby x nrow(dt)
/*the previous line of code is performing these tasks
- get the columns of residuals into a matrix of size nrow(dt) x _nby
- create the transpose: coloumns are rows and rows are columns, size _nby x nrow(dt)
- Vmax is a vertical maximum, it finds the max of each column (previously rows)
returns a 1 x nrow(dt) vector, a row vector
- transpose again so it is a column vector
*/
//create a single column of residuals
resids = dt << New Column("Weight v Height Spline Residuals",
Numeric, Continuous, Values( cmat )
);
Betreff: Skript zum Speichern von Resten der Spline-AnpassungVielen Dank euch allen für die Lösungen!! Der Die Syntax für mehrere Unterabschnitte einer Datentabelle funktioniert in JMP12 nicht. Ich habe eine andere Diskussion über die Rückgabe des Maximalwerts mehrerer Zeilen gelesen. Eine ähnliche Methode wurde auch für JMP13 angewendet. Gibt es eine bessere Möglichkeit, in JMP12 Maximalwerte über mehrere Zeilen hinweg zu ermitteln? Das Schreiben einer Formel zum Vergleichen von Zeilenwerten für eine unbekannte Anzahl von Zeilen scheint nicht effizient zu sein. Danke!
Betreff: Skript zum Speichern von Resten der Spline-AnpassungJim,
Mir ist das gleiche Problem bei JMP 14 aufgefallen. Der JMP-Support gibt an, dass es in JMP 14.1 (August?) behoben wurde.
Hier ist eine kleine Modifikation von Jims Drehbuch. Es wird eine einzelne Spalte mit Residuen erstellt. Es verwendet die neue (in JMP 13) Syntax für mehrere Unterabschnitte einer Datentabelle. Dabei werden die Restspalten zeilenweise abgerufen und das Maximum ermittelt (eigentlich wird der einzige nicht leere Wert ermittelt).
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ), GroupBy( :sex),
Fit Spline( 0.1, Standardized )
);
//Find how many in a group. We know it is 2 for Big Class
summarize(_by = By(:sex));
//Find out how many columns before adding residuals
ncpre = ncol(dt);
_nby = nitems(_by);
for(i=1, i<=_nby, i++,
obj << (Curve[i] << Save Residuals);
wait(0);
);
idx = ncpre+1::(ncpre+_nby);
//create a single column of residuals
resids = dt << New Column("Weight v Height Spline Residuals",
Numeric, Continuous,
<< Set Each Value( max(dt[row(),idx]) )
);
Betreff: Skript zum Speichern von Resten der Spline-AnpassungFür jede einzelne angegebene „Anpassung“ müssen die Residuen separat gespeichert werden.Der Substript auf der Referenz „Curve[]“ übernimmt dies.Das folgende Beispiel hat ein GroupBy(:Sex), das eine Passform für Frauen, „F“, und eine für Männer, „M“, erzeugt.Somit müssen 2 „Save Residuals“ ausgegeben werden.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ),
GroupBy( :sex),
Fit Spline( 0.1, Standardized )
);
obj << (Curve[1] << Save Residuals);
obj << (Curve[2] << Save Residuals);
Als ich diesen Code für Ihr Beispiel testete.Ich habe festgestellt, dass JMP 14 beim Speichern von Residuen für eine Spline-Anpassung nicht funktioniert.Ich werde das als Fehler an den JMP-Support weiterleiten.
Betreff: Skript zum Speichern von Resten der Spline-AnpassungDanke Jim! Es klappt. Wenn ich „GroupBy“ in Bivariate hinzufügen muss, ist es dann möglich, alle Residuen zu speichern? Es sieht so aus, als ob JMP nur die letzte Anpassungslinie beibehält. Danke!
<SPAN class="token function">Names Default To Here</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token number">1</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
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>
obj <SPAN class="token operator">=</SPAN> Bivariate<SPAN class="token punctuation">(</SPAN>
Y<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Weight <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
X<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Height <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,<BR /></SPAN> GroupBy( :Team),
Fit Spline<SPAN class="token punctuation">(</SPAN> 0.1, Standardized <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
obj <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> <SPAN class="token punctuation">(</SPAN>Curve<SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Save Residuals</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Betreff: Skript zum Speichern von Resten der Spline-AnpassungSie finden diese Syntaxtypen im Scripting Index
Hilfe==>Skriptindex==>Bivariate==>Bivariate Kurve
Hier ist das Beispiel für einen Skriptindex aus diesem Eintrag
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ),
Fit Polynomial( 3 )
);
obj << (Curve[1] << Save Residuals);