No se pueden obtener nombres de columna en multivariable.Hola,
Estoy tratando de automatizar un proceso. Aquí hay una descripción general de la parte inicial:
-Tabular
-Hacer mesa
- Ejecute multivariable en todas las columnas continuas, para que pueda obtener una matriz de correlación
Estoy luchando en la parte multivariable de la carrera. No estoy seguro de cómo hacer que pongan las columnas que quiero allí. Esto funciona si conozco los nombres de las columnas y las pego en esta parte:
Multivariable (
Y ( NOMBRES DE COLUMNA AQUÍ ) ,
Pero no sabré los nombres de las columnas, así que me gustaría haber puesto una variable de lista o algo para acomodar. Cualquier ayuda muy apreciada!
Aquí está todo el asunto:
dt = data table("wpu10");
tab1= dt<<TABULATE></TABULATE>
Re: No se pueden obtener nombres de columnas en multivariableEstuviste muy cerca ... prueba esto
Names Default To Here( 1 );
dt = Data Table( "wpu10" );
tab1 = dt << Tabulate(
Add Table( Column Table( Grouping Columns( :series_id, :series_title ), Analysis Columns( :value ) ), Row Table( Grouping Columns( :year ) ) )
);
dtTab1 = tab1 << makeintodatatable;
dtTab1 << set name( "dtTab1" );
// Get Column names returns a list
colnameslist = dtTab1 << get column names( Continuous, string );
Multivariate(
Y( Eval List( colnameslist ) ),
Estimation Method( "Pairwise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) )
);
Re: No se pueden obtener nombres de columnas en multivariableEl argumento Y () espera una o referencias de columna, no nombres (cadenas de caracteres). Aquí hay otra forma de hacerlo funcionar:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
col name = dt << Get Column Names( "Continuous" );
col expr = Expr( Y() );
For( i = 1, i <= N Items( col name ), i++,
Insert Into( col expr, Column( col name[i] ) );
);
Eval(
Substitute(
Expr(
Multivariate(
yyy,
Estimation Method( "Pairwise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) )
);
),
Expr( yyy ),
Name Expr( col expr )
)
);Re: No se pueden obtener nombres de columnas en multivariableGracias por la ayuda, pero parece que todavía estoy teniendo problemas. Saqué esto de mi registro en caso de que ayude:
"Suma (valor, WPU106, PPI Datos de productos básicos para metales y productos metálicos - Equipos de calefacción, no ajustados estacionalmente)",
"Suma (valor, WPU107, PPI Datos de productos básicos para metales y productos metálicos: productos metálicos estructurales fabricados, sin ajuste estacional)",
El rol requiere al menos 1 columnas.}
), Multivariable (/ * ### * / Y (Lista de evaluación (lista de nombres)),
Método de estimación ("Pairwise"),
Formato matricial ("cuadrado"),Re: No se pueden obtener nombres de columnas en multivariableIntenté adaptar su solutino pero no pude obtenerlo para obtener la salida multivariable.
Creo que el problema es que no sé los nombres de las columnas. Necesito una forma de obtener los nombres después de hacer "dtTab1 = tab1 << makeintodatatable;"
Tal vez me muestre su código, pero aún me cuesta ver cómo. ¿Necesita los nombres de columna donde tiene yyy o va a ser un varaible que tendrá los nombres?
Re: No se pueden obtener nombres de columnas en multivariableNo veo cómo se relacionan estos errores. ¿Está tratando de usar las etiquetas de Tabulación como nombres de columna para Multivariante en el rol Y?
Olvida el guión por ahora. ¿Se puede lograr interactivamente el resultado? Es decir, ¿obtener de forma interactiva el resumen con Tabulate, guardar los resultados en una nueva tabla de datos e iniciar Multivariate?
Nombres de columna como "Suma (... ) "se interpretará como una llamada a una función en lugar de una referencia de columna en la llamada Eval List () sin un manejo especial.
Re: No se pueden obtener nombres de columnas en multivariableEl problema con el que se está encontrando son los nombres complejos que se generan al crear su tabla desde la tabla Tabulate. En la secuencia de comandos a continuación, he cambiado la tabla por una plataforma de resumen. Eso no elimina el problema del nombre complejo, pero crea una tabla de datos en una acción rápida, que en su mayor parte es idéntica a la salida de Tabulate. Lo que hace el script para manejar los nombres complejos, es el lugar alrededor de cada elemento en la lista de nombres de columna, la función: Nombre (), para especificar directamente a JMP para tratar el contenido de la función como un nombre de columna. Finalmente, esta lista se pasa a la Plataforma Multivariante para hacer el análisis.
Names Default To Here( 1 );
dt = Data Table( "wpu10" );
/*tab1 = dt << Tabulate(
Add Table( Column Table( Grouping Columns( :series_id, :series_title ), Analysis Columns( :value) ), Row Table( Grouping Columns( :year) ) )
);
dtTab1 = tab1 << makeintodatatable;
dtTab1 << set name( "dtTab1" );*/
// Create the data table directly
dtTab1 = dt << Summary(
Group( :year ),
Sum( :value ),
Subgroup( :series_id, :series_title ),
Freq( "None" ),
Weight( "None" )
);
// Get Column names returns a list
colnameslist = dtTab1 << get column names( Continuous,string);
// Get rid of the Row Number column from the list
colnameslist = remove( colnameslist, 2, 1 );
// Create a new list adding the :Name() function around each column name
// to handle the complex names the summary gave them
thelist={};
For( i = 1, i <= N Items( colnameslist ), i++,
xx = colnameslist[i];
Insert Into( thelist, Parse( Eval Insert( ":Name(\!"^xx^\!")" ) ) );
);
// Run the correlations
dtTab1 << Multivariate(
Y( eval(thelist) ),
Estimation Method( "Pairwise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) )
);
Además, apoyaré @markbailey en su comentario acerca de poder hacer análisis de forma interactiva. Si este no es un análisis que va a hacer una y otra vez, ¿por qué molestarse en crear un script?
Re: No se pueden obtener nombres de columnas en multivariable¡Muchas gracias por su ayuda! Terminé haciéndolo todo apuntar y hacer clic. Intenté seguir tu último mensaje esta mañana, pero aún estoy un poco perdido. Los nombres de columna definitivamente podrían ser un problema. Además, cuando lo hago manualmente y llego a la tabla dtTab1, vaya a Analizar> Métodos multivariados> JMP multivariante cree que quiero hacerlo en la tabla dt. No es hasta la segunda vez que paso por ese proceso que JMP se da cuenta de que quiero hacerlo en la nueva tabla.
Estoy usando JMP 12, así que no sé si eso también me está causando problemas.
Re: No se pueden obtener nombres de columnas en multivariable¿Puedes compartir una muestra de tu tabla de datos?
Re: No se pueden obtener nombres de columnas en multivariableSí, lo que adjunto es la tabla donde me quedo atrapado en el código con el que me han estado ayudando. Quiero ir de esta tabla (dtTab1) a una tabla de coeficientes de correlación, como la creada a partir del Análisis> métodos multivariados> salida multivariada.
Como mencioné incluso cuando tomo los pasos para hacerlo manualmente, es un poco raro. Después de que se crea dtTab1, la primera vez que sigo los pasos que describí anteriormente, la solicitud para que las columnas realicen el análisis multivariado es de la tabla inicial (todos los índices en una columna con el nombre en otra columna. Déjame saber si también quieres uno)