擬合線和截距列公式,幫助解決錯誤JMP18.1.1
我正在處理測量數據,我想使用相鄰數據點計算特定數據點的擬合線。然後得到 y=0 時的 x 軸截距。
環顧四周並嘗試自己解決這個問題,似乎我可以使用 JMP 中的“線性回歸”或“最小二乘求解”功能來完成。
我已經在列公式中完成了此操作(使用 if 語句來識別要評估的資料點):
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];
這段程式碼產生了正確的輸出,但是當它運行時,它會拋出一個錯誤:
“無法估計參數估計的方差,因為 X 的排名等於 X 的行數”
我真的不明白這裡的問題是什麼。無論如何我只想要攔截。有沒有簡單的方法來解決這個問題?或關閉警告?
我可以使用最小二乘函數嘗試類似的方法,但這會引發相同的錯誤。
我製作了一個範例表來顯示問題。重新運行該表上的公式以查看錯誤。
謝謝
基礎資料分析與建模回覆:擬合線和截距列公式,幫助解決錯誤我似乎立即透過將回歸中的數據點數量增加到 3 個來解決這個問題,包括當前的數據點。
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];
這會阻止錯誤出現,目前可能沒問題。不過,我仍然希望將來只計算 2 個點的截距。所以我的問題仍然存在。
謝謝
回覆:擬合線和截距列公式,幫助解決錯誤您可以包括進行計算的點(因此 3 點而不是 2 點)
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];
,
.
);
回覆:擬合線和截距列公式,幫助解決錯誤我現在遇到一個問題,返回的截距值不正確...
我必須展示真實數據的摘錄來證明這一點。附有文件。
我正在評估另一列處於最大值的行的截距。
該腳本從相鄰行正確獲取值,我可以在日誌輸出中看到它正在正確形成矩陣。
它給出截距“-1053478758”的輸出值。但是,如果我手動將這些 x/y 值放入單獨的表中並對其運行二元線擬合,則會給出截距“-1.22”,這是正確的。
代碼:
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];
)
完全想不通為什麼不對......
回覆:擬合線和截距列公式,幫助解決錯誤可能是一些準確性問題/疏忽/錯誤。您可以聯絡 JMP 支援@mzwald
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();回覆:擬合線和截距列公式,幫助解決錯誤我想知道是否是精度問題。看起來該函數中的某些內容沒有處理具有足夠有效數字的輸入。
現在可以使用您的修復並將 x 軸值乘以它可以處理的值。
謝謝!
回覆:擬合線和截距列公式,幫助解決錯誤您好@GRoberts86 :為了完整起見,「錯誤」訊息「無法估計參數估計的方差,因為 X 的秩等於 X 的行數」是因為您只有兩個點,並且您將它們與直線連接線。因此,這條線沒有變化……也就是說,你並沒有真正執行統計過程,你只是在數學上連接兩個點。但是,您可以使用統計套件透過矩陣代數來做到這一點,如下所示。
https://www.stat.cmu.edu/~cshalizi/mreg/15/lectures/13/lecture-13.pdf.
您調用的統計過程(線性回歸(y,x)[1])嘗試做的不僅僅是在數學上連接兩個點。它還提供斜率和截距的置信區間、p 值等。但就您而言,由於您只有兩個點(X 的等級 =2),因此沒有變異性,因此沒有置信區間等。
因此,長話短說,「錯誤」實際上只是一個通知,表明不會有統計(與數學不同)輸出。
回覆:擬合線和截距列公式,幫助解決錯誤@MRB3855
我想了一下之後意識到了這一點。如果您只處理 2 個點,那麼古老的「直線方程式」y=mc+c 是合適的選擇。
不過,「沉默」的標誌還是不錯的,哈哈。