Script para guardar residuos de ajuste splineHola,
¿Alguien sabe cómo escribir un script para residuos (o previsiones) de sava como una nueva columna para ajuste de spline? Es fácil si lo hago manualmente, solo necesito seleccionar Guardar residuos en el triángulo rojo desplegable. Sé cómo escribir scripts para guardar residuos como una nueva columna para el ajuste del revestimiento usando Fit Model. Sin embargo, a menudo necesito ajustar datos de tendencia temporal utilizando un ajuste x spline estandarizado y no estoy seguro de si existe una manera más fácil de hacerlo. Mi objetivo final es adquirir residuos o predicciones para varias variables en un bucle, por lo que un script simple será de gran ayuda.
¡¡Gracias!!

Re: Script para guardar residuos de ajuste splineHola Jim
¿Alguna resolución/solución para que podamos guardar residuos en v14?
gracias por la ayuda
Re: Script para guardar residuos de ajuste splinePeng,
Sí, esto parece inconsistente, sin embargo, supongo que esto se hace a propósito para comparar las predicciones (por ejemplo, los hombres son un conjunto de reservas para las predicciones basadas en las mujeres y viceversa).
Para crear una sola columna de Predicciones basada en el modelo Agrupar por, cree una nueva columna con una fórmula o establezca cada expresión de valor
If( :sex=="M", columna para las predicciones masculinas, :sex=="F", columna para las predicciones masculinas);
Si desea una columna que se parezca a las columnas residuales, cree una columna para hombres y use una expresión como
If( :sex=="M", columna para las predicciones masculinas, vacía() );
Luego haz lo mismo con las mujeres.
Re: Script para guardar residuos de ajuste spline¡¡Genial, esto es increíble!!
Solo una pregunta mas:
Cuando lo hago objeto<SPAN class="token operator"> <</SPAN><SPAN class="token operator"> <</SPAN><SPAN class="token punctuation"> (</SPAN> Curva<SPAN class="token punctuation"> [</SPAN> i<SPAN class="token punctuation"> ]</SPAN><SPAN class="token operator"> <</SPAN><SPAN class="token operator"> <</SPAN><SPAN class="token messages"> Guardar residuos</SPAN><SPAN class="token punctuation"> )</SPAN> y agrupar por (:sexo), JMP calculó los residuos para "M" y "F" y los guardó en diferentes columnas con algunas celdas vacías. Es por eso que se necesita "transponer" para obtener todos los residuos en una columna. Sin embargo, si <
Gracias
Re: Script para guardar residuos de ajuste splineMe gusta mucho la nueva referencia del subconjunto de tablas JMP 13. Sin embargo, todavía existe un método sencillo para obtener los valores con el mensaje Obtener como matriz. La sintaxis clave es dt << obtener como matriz (lista | índice).No existe una función máxima en filas, pero sí una función VMax que es un máximo en columnas.Probé esto en JMP 12.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ), GroupBy( :sex),
Fit Spline( 0.1, Standardized )
);
//Find how many in a group. We know it is 2 for Big Class
summarize(_by = By(:sex));
//Find out how many columns before adding residuals
ncpre = ncol(dt);
_nby = nitems(_by);
for(i=1, i<=_nby, i++,
obj << (Curve[i] << Save Residuals);
wait(0);
);
idx = ncpre+1::(ncpre+_nby);
cmat = Transpose(VMax(Transpose(dt << get as matrix(idx)))); //matrix _nby x nrow(dt)
/*the previous line of code is performing these tasks
- get the columns of residuals into a matrix of size nrow(dt) x _nby
- create the transpose: coloumns are rows and rows are columns, size _nby x nrow(dt)
- Vmax is a vertical maximum, it finds the max of each column (previously rows)
returns a 1 x nrow(dt) vector, a row vector
- transpose again so it is a column vector
*/
//create a single column of residuals
resids = dt << New Column("Weight v Height Spline Residuals",
Numeric, Continuous, Values( cmat )
);
Re: Script para guardar residuos de ajuste spline¡¡Gracias a todos por las soluciones!! El La sintaxis para múltiples subsecciones de una tabla de datos no funciona en JMP12. Leí otra discusión sobre cómo devolver el valor máximo de varias filas; también se aplicó un método similar para JMP13. ¿Existe una mejor manera de adquirir valores máximos en varias filas en JMP12? Escribir una fórmula para comparar valores de fila para un número desconocido de filas no parece ser eficiente. ¡Gracias!
Re: Script para guardar residuos de ajuste splineJim,
Noté el mismo problema para JMP 14. El soporte de JMP indica que está solucionado en JMP 14.1 (¿agosto?).
Aquí hay una pequeña modificación del guión de Jim. Crea una sola columna de residuos. Utiliza la nueva sintaxis (en JMP 13) para múltiples subsecciones de una tabla de datos. Esto consiste en obtener las columnas residuales por fila y encontrar el máximo (en realidad, obtiene el único valor que no está vacío).
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ), GroupBy( :sex),
Fit Spline( 0.1, Standardized )
);
//Find how many in a group. We know it is 2 for Big Class
summarize(_by = By(:sex));
//Find out how many columns before adding residuals
ncpre = ncol(dt);
_nby = nitems(_by);
for(i=1, i<=_nby, i++,
obj << (Curve[i] << Save Residuals);
wait(0);
);
idx = ncpre+1::(ncpre+_nby);
//create a single column of residuals
resids = dt << New Column("Weight v Height Spline Residuals",
Numeric, Continuous,
<< Set Each Value( max(dt[row(),idx]) )
);
Re: Script para guardar residuos de ajuste splineCada "Ajuste" separado que se especifica debe tener sus residuos guardados por separado.La substrip de la referencia "Curva[]" es la que maneja esto.El siguiente ejemplo tiene un GroupBy(:Sex) que producirá un ajuste para mujeres, "F" y uno para hombres, "M".Por lo tanto, se deben emitir 2 "Guardar Residuales".
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ),
GroupBy( :sex),
Fit Spline( 0.1, Standardized )
);
obj << (Curve[1] << Save Residuals);
obj << (Curve[2] << Save Residuals);
Mientras estaba probando este código para su ejemplo.Descubrí que JMP 14 no funciona para Guardar residuos para un ajuste de spline.Se lo comunicaré al soporte de JMP como un error.
Re: Script para guardar residuos de ajuste splineGracias Jim! Funciona. Si necesito agregar "GroupBy" en Bivariado, ¿es posible guardar todos los residuos? Parece que JMP sólo mantiene la última línea de ajuste. ¡Gracias!
<SPAN class="token function">Names Default To Here</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token number">1</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
dt <SPAN class="token operator">=</SPAN> <SPAN class="token function">Open</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"$SAMPLE_DATA/Big Class.jmp"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
obj <SPAN class="token operator">=</SPAN> Bivariate<SPAN class="token punctuation">(</SPAN>
Y<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Weight <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
X<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Height <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,<BR /></SPAN> GroupBy( :Team),
Fit Spline<SPAN class="token punctuation">(</SPAN> 0.1, Standardized <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
obj <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> <SPAN class="token punctuation">(</SPAN>Curve<SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Save Residuals</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Re: Script para guardar residuos de ajuste splinePuede encontrar estos tipos de sintaxis en el Índice de secuencias de comandos
Ayuda==>Índice de secuencias de comandos==>Bivariado==>Curva bivariada
Aquí está el ejemplo del índice de secuencias de comandos de esa entrada.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ),
Fit Polynomial( 3 )
);
obj << (Curve[1] << Save Residuals);