Formel für Anpassungsgerade und Spaltenabschnitt, Hilfe bei einem FehlerJMP18.1.1
Ich arbeite mit Messdaten, bei denen ich unter Verwendung der benachbarten Datenpunkte eine Anpassungsgerade an einem bestimmten Datenpunkt berechnen möchte. Um dann einen Achsenabschnitt für y=0 zu erhalten.
Wenn ich mich umschaue und versuche, das Problem selbst zu lösen, scheint es mir möglich zu sein, entweder die Funktion „Lineare Regression“ oder „Kleinste Quadrate lösen“ in JMP zu verwenden.
Ich habe dies in einer Spaltenformel getan (mit einer if-Anweisung zum Identifizieren des Datenpunkts, der ausgewertet werden soll):
x = J( 2, 1, 0 );
y = J( 2, 1, 0 );
x[1, 1] = Lag( :y_column, 1 );
x[2, 1] = Lag( :y_column, -1 );
y[1, 1] = Lag( :x_column, 1 );
y[2, 1] = Lag( :x_column, -1 );
Coeffs = Linear Regression( y, x )[1];
Coeffs[1];
Dieser Code erzeugt die richtige Ausgabe, aber bei der Ausführung wird ein Fehler ausgegeben:
„Die Varianz der Parameterschätzungen kann nicht geschätzt werden, da der Rang von X gleich der Anzahl der Zeilen von X ist.“
Ich verstehe nicht wirklich, wo das Problem hier liegt. Ich will sowieso nur das Abfangen. Gibt es eine einfache Möglichkeit, das zu beheben? Oder die Warnung abzuschalten?
Ich kann einen ähnlichen Ansatz mit der Funktion „Kleinste Quadrate“ versuchen, aber dabei tritt derselbe Fehler auf.
Ich habe eine Beispieltabelle erstellt, die das Problem zeigt. Führen Sie die Formel für diese Tabelle erneut aus, um den Fehler anzuzeigen.
Danke
Grundlegende Datenanalyse und ModellierungBetreff: Formel für Anpassungsgerade und Spaltenabschnitt, Hilfe bei einem FehlerIch habe dies anscheinend sofort selbst behoben, indem ich die Anzahl der Datenpunkte in der Regression auf 3 erhöht habe, einschließlich des aktuellen Datenpunkts.
x = J( 3, 1, 0 );
y = J( 3, 1, 0 );
x[1, 1] = Lag( :y_column, 1 );
x[2, 1] = :y_column;
x[3, 1] = Lag( :y_column, -1 );
y[1, 1] = Lag( :x_column, 1 );
y[2, 1] = :x_column;
y[3, 1] = Lag( :x_column, -1 );
Coeffs = Linear Regression( y, x )[1];
Coeffs[1];
Dadurch wird der Fehler vermieden, was für den Moment ok sein kann. Ich würde in Zukunft aber trotzdem gerne Schnittpunkte von nur 2 Punkten aus berechnen. Meine Frage bleibt also bestehen.
Danke
Betreff: Formel für Anpassungsgerade und Spaltenabschnitt, Hilfe bei einem FehlerSie können den Punkt einschließen, an dem Sie die Berechnung durchführen (also 3 Punkte statt zwei).
If(Row() > 1 & Row() < Col Number(:y_column),
Linear Regression(:y_column[Index(Row() - 1, Row() + 1)]`, :x_column[Index(Row() - 1, Row() + 1)]`)[1][1];
,
.
);
Betreff: Formel für Anpassungsgerade und Spaltenabschnitt, Hilfe bei einem FehlerIch habe jetzt ein Problem mit dem zurückgegebenen Achsenabschnittswert, der nicht korrekt ist ...
Um dies zu verdeutlichen, muss ich einen Auszug echter Daten zeigen. Datei angehängt.
Ich bewerte den Achsenabschnitt in der Zeile, in der eine andere Spalte ihren Maximalwert aufweist.
Das Skript übernimmt die Werte korrekt aus den angrenzenden Zeilen. Ich kann in der Protokollausgabe sehen, dass es die Matrix richtig bildet.
Es ergibt einen Ausgabewert für den Achsenabschnitt von „-1053478758“. Aber wenn ich diese x/y-Werte manuell in eine separate Tabelle übernehme und eine bivariate Linienanpassung darauf ausführe, ergibt sich ein Achsenabschnitt von „-1,22“, was korrekt ist.
Code:
If( :"dlogIds/dVgs"n == Col Maximum( :"dlogIds/dVgs"n ),
x = J( 3, 1, 0 );
y = J( 3, 1, 0 );
x[1, 1] = Lag( :I_Drain Abs, 1 );
x[2, 1] = :I_Drain Abs;
x[3, 1] = Lag( :I_Drain Abs, -1 );
y[1, 1] = Lag( :V_GATE, 1 );
y[2, 1] = :V_GATE;
y[3, 1] = Lag( :V_GATE, -1 );
Show( x );
Show( y );
Coeffs = Linear Regression( y, x )[1];
Coeffs[1];
)
Ich kann überhaupt nicht verstehen, warum es nicht richtig ist …
Betreff: Formel für Anpassungsgerade und Spaltenabschnitt, Hilfe bei einem FehlerKönnte ein Genauigkeitsproblem/Versehen/Fehler sein. Sie können den JMP-Support unter @mzwald kontaktieren.
Names Default To Here(1);
ys = [-0.999986, -1.49994, -1.99997];
xs = [1.3500e-12, 1.0600e-10, 1.9700e-9];
xs2 = Matrix(Eval List({1.3500e-12*10^12, 1.0600e-10*10^12, 1.9700e-9*10^12}));
ls = Linear Regression(ys, xs, << print to log);
ls2 = Linear Regression(ys, xs2, << print to log);
dt = New Table("",
New Column("Y", Numeric, Continuous, Values(ys)),
New Column("X1", Numeric, Continuous, Values(xs)),
New Column("X2", Numeric, Continuous, Values(xs2)),
);
biv1 = dt << Bivariate(Y(:Y), X(:X1), Fit Line({Line Color({230, 159, 0})}));
biv_estimates1 = Report(biv1)[Outline Box("Parameter Estimates"), Number Col Box("Estimate")];
Show(biv_estimates1 << get);
biv2 = dt << Bivariate(Y(:Y), X(:X2), Fit Line({Line Color({230, 159, 0})}));
biv_estimates2 = Report(biv2)[Outline Box("Parameter Estimates"), Number Col Box("Estimate")];
Show(biv_estimates2 << get);
Write();Betreff: Formel für Anpassungsgerade und Spaltenabschnitt, Hilfe bei einem FehlerIch habe mich gefragt, ob es ein Präzisionsproblem ist. Es sieht so aus, als würde etwas in dieser Funktion die Eingabe nicht mit genügend signifikanten Ziffern verarbeiten.
Im Moment funktioniert es, Ihren Fix zu verwenden und die Werte der X-Achse auf einen für die Verarbeitung geeigneten Wert zu multiplizieren.
Danke!
Betreff: Formel für Anpassungsgerade und Spaltenabschnitt, Hilfe bei einem FehlerHallo @GRoberts86 : Der Vollständigkeit halber sei erwähnt, dass die Fehlermeldung „Varianzen der Parameterschätzungen können nicht geschätzt werden, da der Rang von X gleich der Anzahl der Zeilen von X ist“ daher kommt, dass Sie nur zwei Punkte haben und diese mit einer geraden Linie verbinden. Daher gibt es keine Variabilität um die Linie herum, d. h. Sie führen kein wirkliches statistisches Verfahren durch, sondern verbinden nur mathematisch zwei Punkte. Sie verwenden hierfür jedoch ein Statistikpaket, und zwar über Matrizenalgebra, wie hier gezeigt.
https://www.stat.cmu.edu/~cshalizi/mreg/15/lectures/13/lecture-13.pdf.
Das statistische Verfahren, das Sie als lineare Regression (y, x)[1] bezeichnet haben, versucht viel mehr, als nur zwei Punkte mathematisch zu verbinden. Es liefert auch Konfidenzintervalle, p-Werte usw. für die Steigung und den Achsenabschnitt. Da Sie in Ihrem Fall jedoch nur zwei Punkte haben (Rang von X = 2), gibt es keine Variabilität und daher auch keine Konfidenzintervalle usw.
Kurz gesagt, der „Fehler“ ist eigentlich nur eine Benachrichtigung, dass keine statistische (im Gegensatz zu einer mathematischen ) Ausgabe erfolgen wird.
Betreff: Formel für Anpassungsgerade und Spaltenabschnitt, Hilfe bei einem Fehler@MRB3855
Das ist mir klar geworden, nachdem ich eine Weile darüber nachgedacht hatte. Wenn Sie nur mit 2 Punkten arbeiten, ist die gute alte „Liniengleichung“ y=mc+c das geeignete Mittel.
Trotzdem wäre eine „stille“ Flagge schön, haha.