如何计算移动窗口中两个变量(即列)之间的R2(例如,一次10对数据)?
新浪网
看到有关此的讨论在列公式中执行线性回归 。该方法可以扩展以获得R平方或其他结果。
谢谢 @马克贝利 。 在JSL中计算R2的功能是什么?(对不起,我是JSL脚本的新手,无法在线找到它)。
我明白。
这是一个基于“样本数据”文件夹中“大类”数据表的示例。它适合跨度为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数据列。
谢谢 @马克贝利和 @ron_horne 。这非常有帮助!!