¿Cómo guardar una columna de fórmula de predicción con un nombre específico a través de JSL?Estimados,
Estoy ejecutando un modelo lineal generalizado a través de un script JSL.
¿Cómo puedo guardar la fórmula de predicción en una columna con un nombre específico?
Todo lo que logré encontrar ( ¿Automatizar el guardado de la fórmula de predicción usando el script JMP? ) era algo como:
GLM = Modelo de ajuste (......);
GLM << fórmula de predicción;
Sin embargo:
1) ¿puedo elegir el nombre de la columna que almacenará la fórmula de predicción? JMP lo guardará automáticamente en: "Pred Formula 'Target Variable'"
2) ¿Esta funcionalidad está documentada en alguna parte? Lo encontré en el foro anterior, pero no en la documentación de JMP.
3) ¿Funciona la misma sintaxis para otras plataformas (por ejemplo, partición)?
Gracias.
Re: JSL scripting: ¿cómo guardar fórmulas de predicción?La respuesta de Ian responde a las preocupaciones n.° 1 y n.° 3, mientras que el usuario ms responde a la pregunta n.° 2 sobre la documentación relacionada con el lenguaje de secuencias de comandos JMP (JSL).
@ian_jmp :
Generalmente, 'Guardar fórmula de predicción' es consistente en todas las plataformas. Los nombres de las columnas guardadas son fijos, pero puede cambiarles el nombre usando cosas como:
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>
cols <SPAN class="token operator">=</SPAN> dt <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> GetColumnNames<SPAN class="token punctuation">(</SPAN><SPAN class="token string">"String"</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN>c<SPAN class="token operator">=</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> c<SPAN class="token operator"><=</SPAN><SPAN class="token function">NItems</SPAN><SPAN class="token punctuation">(</SPAN>cols<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> c<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token function">Column</SPAN><SPAN class="token punctuation">(</SPAN>dt<SPAN class="token punctuation">,</SPAN> cols<SPAN class="token punctuation">[</SPAN>c<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">)</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> SetName<SPAN class="token punctuation">(</SPAN><SPAN class="token string">"New "</SPAN><SPAN class="token operator">||</SPAN>cols<SPAN class="token punctuation">[</SPAN>c<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
En raras ocasiones, puede ser útil usar 'Obtener nombres de columnas' antes y después de crear las columnas, comparando las dos listas para inferir los nombres de las nuevas columnas.
@EM :
En cuanto a la documentación para JSL, creo que el Índice de secuencias de comandos (Menú de ayuda) es un gran recurso, repleto de ejemplos listos para usar. Y si, << Fórmula de predicción está ahí.
Re: ¿Cómo guardar una columna de fórmula de predicción con un nombre específico a través de JSL?Continuando con tu ejemplo:
GLM = Fit Model (......);
pf = GLM << prediction formula;
pf << Set Name( "my name" );
Sí, este enfoque debería funcionar con cualquiera de las plataformas de modelado.
Re: JSL scripting: ¿cómo guardar fórmulas de predicción?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Eliminé las comillas dobles de: Mi predicción guardada y ahora todo funciona bien.
Gracias por señalarme el índice de secuencias de comandos, ¡muy útil!
Re: JSL scripting: ¿cómo guardar fórmulas de predicción?El cuadro vacío puede indicar que la columna: Mi predicción guardada (no debe estar entre comillas dobles) no existe en la tabla de datos actual. Revisa la ortografía.
En cuanto a la documentación para JSL, creo que el Índice de secuencias de comandos (Menú de ayuda) es un gran recurso, repleto de ejemplos listos para usar. Y si, << Fórmula de predicción está ahí.
Re: JSL scripting: ¿cómo guardar fórmulas de predicción?Mmm, suena muy complicado. Lo que encontré es que si mi variable objetivo se llama "Mi objetivo", la columna se llamará "Pred Formula My Target", así que uso:
GLM = Fit Model (......);
GLM << prediction formula;
Column("Pred Formula My Target") << Set Name("New Column Name");
¿Qué hay de la documentación? ¿Está esto debidamente documentado en algún lugar de la documentación de JSL? No he logrado encontrarlo. Soy nuevo en las secuencias de comandos JMP, pero las primeras impresiones son que es un lenguaje poderoso con una sintaxis intrincada y documentación deficiente, un poco como R en cierto modo, ¡pero esperaría una mejor documentación de un software comercial!
Finalmente, creo otra columna que multiplica la predicción por otra cosa:
New Column("My new calculation", Numeric, Formula( :"My saved Prediction" * :another_field ));
donde "Mi predicción guardada" tiene espacios en el nombre, otro_campo no. La fórmula se calcula correctamente, pero si hago clic derecho en el encabezado y voy a la fórmula, veo un cuadro vacío multiplicado por otro_campo. ¿Es esto un error en JMP? ¿Debería haber especificado la fórmula de manera diferente?
Gracias.
Re: JSL scripting: ¿cómo guardar fórmulas de predicción?Generalmente, 'Guardar fórmula de predicción' es consistente en todas las plataformas. Los nombres de las columnas guardadas son fijos, pero puede cambiarles el nombre usando cosas como:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
cols = dt << GetColumnNames("String");
For(c=1, c<=NItems(cols), c++,
Column(dt, cols[c]) << SetName("New "||cols[c]);
);
En raras ocasiones, puede ser útil usar 'Obtener nombres de columnas' antes y después de crear las columnas, comparando las dos listas para inferir los nombres de las nuevas columnas.