lineare Regression im FormeleditorHallo,
Ich untersuche die Steigung einer biologischen Variablen im Laufe der Zeit in einer klinischen Studie mit linearer Regression.
Ist es möglich, die Steigung in einer neuen Spalte mit dem Formeleditor zu berechnen? Oder eine andere Möglichkeit, eine solche Spalte zu generieren?
Ich verwende JMP 12.
Danke für Ihre Hilfe,
Florent
Betreff: Lineare Regression im FormeleditorHier sind zwei Beispiele für Spaltenformeln zur Berechnung der Steigungen der Längen-Gewichts-Regression. Es wird der Beispieltisch „Große Klasse“ verwendet.
Die erste berechnet die Steigung basierend auf allen Beobachtungen und zeigt sie nur in der ersten Zeile an, anstatt die gleiche Zahl in der gesamten Spalte zu wiederholen.
Die zweite berechnet die Steigung inkrementell (was möglicherweise das ist, wonach Sie fragen) und ermöglicht es zu sehen, wie sich die Steigung ändert / stabilisiert, wenn mehr Daten enthalten sind, und schließlich mit der gesamten Stichprobensteigung konvergiert (dh erstes Beispiel).
Um dies auf Ihre eigenen Daten anzuwenden, kopieren Sie die gesamte Formel innerhalb der Klammern hinein F=Ausdr( ) und fügen Sie es in den Formeleditor ein und ersetzen Sie es Gewicht und Höhe für deine Variablen.
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Slope",
Formula(
If(Row() == 1,
Col Sum((:height - Col Mean(:height)) * (:weight - Col Mean(:weight))) /
Col Sum((:height - Col Mean(:height)) ^ 2),
.
)
)
);
F = Expr(
Eval(
Eval Expr(
Col Sum(
(:height - Col Mean(:height, Row() <= Expr(Row()))) * (:weight
-Col Mean(:weight, Row() <= Expr(Row()))),
Row() <= Expr(Row())
) / Col Sum(
(:height - Col Mean(:height, Row() <= Expr(Row()))) ^ 2,
Row() <= Expr(Row())
)
)
)
);
dt << New Column("Incremental Slope", Formula(Name Expr(F)));
Betreff: Lineare Regression im FormeleditorEs fühlt sich falsch an, den Steigungswert in eine Spalte in derselben Tabelle wie die Daten zu setzen.
Aber wenn Sie das tatsächlich gemeint haben und die Verwendung einer JMP-Plattform vermeiden möchten, finden Sie hier eine Möglichkeit, dies in JMP 12 zu tun:
NamesDefaultToHere(1);
myLinearRegression =
Function({x, y}, {Default Local},
// Add the unit vector to the design matrix
x = J(NRow(x), 1, 1)||x;
// Get the parameters
betas = Transpose(Inv(x`*x)*x`*y);
);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(3);
xVals = Column(dt, "height") << getValues;
yVals = Column(dt, "weight") << getValues;
betas = myLinearRegression(xVals, yVals);
slope = betas[2];
dt << NewColumn("Slope of weight vs. height", Numeric, Continuous, Values(Repeat(slope, NRow(dt))));
Führen Sie „Datei“ > „Neu“ > „Neues Skript“ aus, schneiden Sie die obige JSL aus und fügen Sie sie in dieses Fenster ein, und klicken Sie dann auf „Bearbeiten“ > „Skript ausführen“.
Natürlich ist es immer eine gute Idee, die Daten zu plotten, bevor Sie einer berechneten Steigung vertrauen, und genau dafür ist „Analysieren > Y nach X anpassen“ konzipiert.