如何在移動窗口(例如一次 10 對數據)中計算兩個變量(即列)之間的 R2?
新浪
謝謝@馬克貝利和@ron_horne 。 這非常有幫助!
我明白。
以下是基於 Sample Data 文件夾中 Big Class 數據表的示例。 它適合跨度為 5 的移動線性回歸。 它返回每行中的 R 平方值。 您可以運行此腳本來查看它是如何工作的。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// example creates a new column with a moving R square with a span of 5
// for regression of :weight versus :height
dt << New Column( "Moving R Square",
Numeric,
Continuous,
Formula(
If( Row() > 2 & Row() < (N Row()-1),
x = J( 5, 1, 1 ) || :height[Index( Row() - 2, Row() + 2 )]`;
y = :weight[Index( Row() - 2, Row() + 2 )]`;
sst = Sum( (y - Mean( y )) ^ 2 );
b = (Inv( x` * x ) * x` * y);
yhat = x * b;
sse = Sum( (y - yhat) ^ 2 );
(sst-sse) / sst;
,
Empty()
)
)
);
您可以選擇該腳本中 Formula 參數後面括號內的部分,並將該表達式傳遞到數據表中的新列公式中,然後更改列名稱以匹配您的 X 和 Y 數據列。
謝謝@馬克貝利。JSL中計算R2的函數是什麼? (抱歉,我是 JSL 腳本新手,無法在網上找到它)。
請參閱此討論在列公式中執行線性回歸。 這種方法可以擴展以獲得 R 平方或其他結果。