¿Cómo puedo calcular R2 entre dos variables (es decir, columnas) en una ventana móvil (por ejemplo, 10 pares de datos a la vez)?
Sina
Ver esta discusión sobre realizar regresión lineal en una fórmula de columna . Este enfoque podría extenderse para obtener R cuadrado u otros resultados.
Gracias @markbailey . ¿Cuál es la función para calcular R2 en JSL? (lo siento, soy nuevo en las secuencias de comandos JSL y no pude encontrarlo en línea).
Entiendo.
Aquí hay un ejemplo basado en la tabla de datos Big Class en la carpeta Datos de muestra. Se ajusta a una regresión lineal móvil con un lapso de 5. Devuelve el valor R cuadrado en cada fila. Puede ejecutar este script para ver cómo funciona.
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()
)
)
);
Puede seleccionar la parte de este script que está entre paréntesis después del argumento Fórmula y pegar esa expresión en una nueva fórmula de columna en su tabla de datos, luego cambie los nombres de las columnas para que coincidan con sus columnas de datos X e Y.
Gracias @markbailey y @ron_horne . ¡Esto fue muy útil!