Script JSL: resultado de fórmula de predicción de capturaHola,
Estoy tratando de obtener el valor predicho después de configurar las X en una fórmula de predicción.
Por ejemplo, si Y = X1 + X2, quiero crear una nueva fila, establecer X1 = 2 y X2 = 4 y obtener el valor predicho de Y = 6.
Pensé que la forma más fácil de hacer esto sería guardar la fórmula de predicción en un nuevo conjunto de columnas.
Luego agregaría una nueva fila y establecería todas las X.
Luego, simplemente acceda al valor de la fila de la fórmula de predicción.
Sin embargo, esto no funciona. El registro muestra que el valor devuelve un '.'. Si ejecuto el script dos veces, por lo que se crean varias filas, el valor se devuelve correctamente. Si agrego dos filas y ejecuto el script solo una vez, todavía obtengo el 'nulo' o '.' en el archivo de registro. Parece haber una razón por la que JMP necesita ejecutar el script dos veces para obtener el resultado de la fórmula prevista de una fila recién agregada con valores X establecidos.
¿Hay una mejor manera de obtener valores predichos de fórmulas de predicción usando scripts?
Gracias,
Nate
Re: Script JSL - Resultado de fórmula de predicción de capturaExcelente. Se ejecuta ahora y está funcionando como se esperaba. Muchas gracias.Re: Script JSL - Resultado de fórmula de predicción de capturaMe estaba olvidando del hecho de que hay una funcionalidad PLS adicional en JMP Pro que no está en la versión normal. Para JMP será similar, pero un poco más simple:
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Do a PLS fit in JMP (also works in JMP Pro)
pls = dt << Partial Least Squares(
Y( :ls, :ha, :dt ),
X(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
Validation Method( Name( "Leave-One-Out" ), Initial Number of Factors( 15 ) ),
Fit(
Method( NIPALS ),
Number of Factors( 7 ),
Show Confidence Band( 1 ),
Distance Plots( 1 ),
Scatter Scores Plots( 1 ),
Diagnostics Plots( 1 ),
Overlay Loadings Plots( 1 ),
T Square Plot( 1 ),
Overlay Coefficients Plots( 1 )
)
);
// See what messages the PLS platform understands (look in the Log Window)
ClearLog();
ShowProperties(pls);
// Save some results from the (7 factor) fit
pls << (Fit[1] << savePredictionFormula);
pls << (Fit[1] << saveYresiduals);
Para entender por qué funciona el código, comenzaría con 'Ayuda> Libros> Guía de secuencias de comandos' para aprender los rudimentos de JSL.
Re: Script JSL - Resultado de fórmula de predicción de capturagracias ian
Lo siento, mi conocimiento de secuencias de comandos es demasiado limitado, su ayuda no me está acelerando, ¿puede obtener más ayuda?
Primero trabajo con JMP no con PRO. Supongo que esa es la razón por la que mi secuencia de comandos PLS automatizada JMP se ve diferente a la suya. Adjunté mi guión.
Muchas preguntas aparecen al leer su guión.
¿Por qué se separa entre PLSLAUNCH y PLSFITS? ¿Es eso necesario o solo para su comodidad al leer/documentar?
¿Es necesario asignar PLSFITS los ajustes si solo tengo uno "ajustes", por ejemplo. solo 7 factores ( plsFits << ( Adaptar [ 1 ] << guardarPredicciónFórmula );
plsFits << ( Adaptar [ 1 ] << guardarYresiduales ); Supongo que eso significa: Guarde el residuo de Fit[1] en el objeto PLSFITS (y este nombre lo puedo elegir yo, es solo PLSFITS para una mejor identificación)
Si ejecuto su secuencia de comandos, aparece este error en la ventana de registro: plsFits << (Fit[/*###*/1] << savePredictionFormula); ¿Se debe a la terminología PRO?
Muchas gracias
Pedro
Re: Script JSL - Resultado de fórmula de predicción de capturaHola Peter, Esto debería ayudarte a empezar. Los comandos 'Esperar()' tienen un efecto cosmético y se pueden eliminar.
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Launch the PLS platform
plsLaunch = dt << Fit Model(
Y( :ls, :ha, :dt ),
Effects(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
No Intercept( 1 ),
Center Polynomials( 0 ),
Personality( "Partial Least Squares" )
);
// Do a couple of fits
Wait(2);
plsFits = plsLaunch << Run(
Fit( Method( NIPALS ), Number of Factors( 7 ) ),
Fit( Method( NIPALS ), Number of Factors( 6 ) )
);
// Save the prediction formula for the first fit (7 factors)
Wait(2);
plsFits << (Fit[1] << savePredictionFormula);
// Save the prediction formula for the second fit (6 factors)
Wait(2);
plsFits << (Fit[2] << savePredictionFormula);
// Now save the Y residuals
Wait(2);
plsFits << (Fit[1] << saveYresiduals);
plsFits << (Fit[2] << saveYresiduals);
Re: Script JSL - Resultado de fórmula de predicción de capturaHola Ian,
Estoy buscando en la comunidad para guardar "Guardar valores predichos Y" del PLS en un JSL. ¿Hay un documento disponible que diga en qué herramienta me dirijo a qué columna guardada (por ejemplo, fórmulas de predicción, intervalos de confianza, valores pronosticados)?
gracias pedro
Re: Script JSL - Resultado de fórmula de predicción de capturaLo siento, no, es posible que haya confundido el problema. El 'Esperar ()' fue solo por efecto cosmético. En general, nunca debería necesitar esto en JSL (pero hay algunas situaciones muy raras en las que podría). Probablemente sea mejor enviar a la tabla de datos un mensaje de 'Ejecutar fórmulas'.
Re: Script JSL - Resultado de fórmula de predicción de captura¡Perfecto! Solo necesito poner Wait(). ¡Gracias!
Re: Script JSL - Resultado de fórmula de predicción de capturaLos detalles dependen de la plataforma que utilice, pero esto muestra la idea básica:
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate(X(:height), Y(:weight));
// Do a regression
biv << fitLine;
/// Save the prediction formula column
biv << (curve[1] << savePredicteds);
// Add a new observation (row) that we want to predict for
Wait(2);
dt << addRows(1);
// Give predictor values and get the prediction back
Column(dt, "weight")[NRow(dt)] = 160;
Column(dt, "height")[NRow(dt)] = 65;