Cálculo de la pendiente y compilación para varios casos con diferentes números de observacionesHola,
Sé que el tema del cálculo lineal de la pendiente se ha discutido anteriormente, pero no pude encontrar una manera eficiente de crear una salida tabulada de Pendientes para un conjunto de Casos (es decir, Pacientes) para los cuales tengo diferentes cantidades de observaciones en función del tiempo.
Aquí hay una captura de pantalla de los datos (simulacro; el archivo real está adjunto):
Mock data for SLOPE calculationDatos simulados para el cálculo de SLOPE
Siguiendo los consejos de discusiones anteriores en este panel, usé Fit Y by X (Change in Measure by Time) usando Patient_ID como variable By, y trazando un ajuste lineal con restricciones de intercepción a 0:
Salida: 5 análisis idénticos a los siguientes:

Donde estoy atascado es cómo recopilar la Estimación de la pendiente en una nueva tabla que se vería así:
| ID del paciente | Cuesta abajo |
| AAA | m1 |
| BBB | m2 |
| CCC | m3 |
| DDD | m4 |
| EEE | m5 |
Cualquier sugerencia sería bienvenida: no estoy adjunto al formato de datos original ni al método de análisis.
Gracias
Re: Cálculo de la pendiente y compilación para varios casos con diferentes números de observacionesCompruebe la estructura de árbol y la versión JMP. Mi código funciona en JMP 11.2.1, 12.2.0 y 13.1.0. A veces hay diferencias en las estructuras subyacentes cuando se pasa de una versión a otra. Si ve un patrón regular en los cuadros de col numérico (por ejemplo, 7, 22, 37, 52, 67) puede construirlo en el bucle.
Re: Cálculo de la pendiente y compilación para varios casos con diferentes números de observacionesUn guión podría extraer las estimaciones, también, utilizando varias técnicas diferentes. El enfoque de iteración común se vuelve engorroso debido a los grupos Por, pero puede ser directo, aunque solo sea fuerza bruta. Una solución más elegante usaría una única consulta XPath en el árbol de visualización del informe para recuperar todas sus pendientes como un vector. No tengo tiempo ahora para investigar la sintaxis exacta, pero sería fácil, aparte de los detalles. Algo como esto:
plat << XPath( "//NumberColBox[NumberColBoxHeader=\!"Estimate\!"]" ) << Get( 2 );
Re: Cálculo de la pendiente y compilación para varios casos con diferentes números de observacionesGracias: siempre me olvido de esta muy buena característica
Re: Cálculo de la pendiente y compilación para varios casos con diferentes números de observacionesHola,
Gracias por su rápida respuesta: es lo que estaba buscando, con la excepción de que la "recuperación" del parámetro_estimate del informe de múltiples gráficos no funciona porque el NumberColBox (7) solo funciona para el primer gráfico, los siguientes gráficos tienen su NumberColBox 23, 37 correspondiente y así sucesivamente.
No estoy seguro de cómo iterar a través de la llamada NumberColBox.
¿Alguna idea?
Gracias
TS
Re: Cálculo de la pendiente y compilación para varios casos con diferentes números de observacionesUsted descubrió el Por grupo de roles los datos para el análisis de regresión separado. (Espero que sepa presionar y mantener presionada la tecla Ctrl antes de hacer clic en el triángulo rojo y seleccionar el comando Ajustar línea). Ahora haga clic con el botón derecho en la tabla Estimaciones de parámetros y seleccione Crear tabla de datos combinados.
Re: Cálculo de la pendiente y compilación para varios casos con diferentes números de observacionesEste código hará el truco. El "secreto" es mirar la estructura de árbol subyacente de la salida, convertida en un informe.
dt = data table("SLOPE_Calculation_mock_data");
bv = dt << Bivariate(
Y( :Change in Measure ),
X( :Time ),
Fit Line( {Line Color( {213, 72, 87} )} ),
By( :Patient_ID )
);
// Figure out how many patients there are
dtab = dt << Tabulate(
Show Control Panel( 0 ),
Add Table( Row Table( Grouping Columns( :Patient_ID ) ) ),
invisible
);
pdt = dtab << Make Into Data Table;
np = nrows(pdt);
patient_list = pdt:Patient_ID << get values;
dtab << close window;
pdt << new column("Slope", numeric, continuous);
bvrep = bv << report;
//bvrep << show tree structure; // Used to get underlying structure
for (i = 1, i <= np, i++,
parameter_estimates = bvrep[i][numbercolbox(7)] << get;
one_slope = parameter_estimates[2];
pdt:Slope[i] = one_slope;
);