<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola, estoy intentando crear un script dinámico que creará tablas de contingencia en un informe y estadísticas asociadas basadas en las asignaciones de columnas seleccionadas por el usuario. Este es mi primer intento en JSL, así que soy un principiante absoluto. Tengo el formulario de usuario y la creación de tablas funcionando, pero me cuesta entender cómo referirme a las diferentes partes del informe generado para hacer cosas simples como establecer el formato decimal para la estadística kappa. Eventualmente, también me gustaría poder extraer los valores de las tablas de contingencia mostradas, hacer cálculos y mostrar los resultados en otra parte del informe. He estado leyendo sobre subíndices y estoy tratando de usar ese concepto para profundizar en el informe, pero no puedo averiguar cómo usarlos correctamente. Sé que necesito tener una buena comprensión de este concepto porque el usuario podrá seleccionar de 2 columnas a 10 y, por lo tanto, el script puede producir de 1 a 25 tablas de contingencia, todas las cuales necesito hacer un seguimiento y consultar luego. Así que sé que podría ser mejor asignar variables a cada una, pero tampoco puedo entenderlo ya que la creación de las tablas está automatizada por JMP en lugar de usar algo como un bucle For. Cualquier ayuda es muy apreciada También me encantaría cualquier comentario sobre scripts JSL que no estén relacionados con mis preguntas específicas (por ejemplo, mejores prácticas, etc.) para fines de aprendizaje.
La parte con la que estoy luchando es la sección que se comenta con / * ------ * /. Lo siento por los comentarios excesivos, pero al ser mi primer guión, intento capturar conceptos que mi futuro yo pueda ver. Estoy usando JMP 10.0.1 versión 2 en Windows 7. No pude encontrar un conjunto de datos de muestra en JMP que sea típico de lo que estoy trabajando, así que aquí hay una versión en miniatura:
| Ejemplo de identificacion | Ensayo # 1 | Ensayo # 2 | Referencia |
| 307HV093 | Negativo | Negativo | Negativo |
| 307HV093 | Negativo | Negativo | Negativo |
| 307HV094 | Positivo | Positivo | Positivo |
| 307HV094 | Positivo | Positivo | Positivo |
| 307HV095 | Positivo | Positivo | Positivo |
| 307HV095 | Positivo | Positivo | Positivo |
| 307HV096 | Positivo | Positivo | Positivo |
| 307HV096 | Positivo | Positivo | Positivo |
| 307HV097 | Negativo | Negativo | Negativo |
| 307HV097 | Negativo | Negativo | Negativo |
| 307HV098 | Negativo | Negativo | Negativo |
// Basado en "Construcción de árboles de visualización", página 363 de JMP Scripting Guide for JMP 10
Globos claros () ;
Nombres predeterminados aquí ( 1 ) ; // todas las variables sin ámbito son locales
Si ( esta vacio ( dt = actualdatatable ()) , dt = abierto ( pickfile ( "Elija un archivo de datos de entrada:" ))) ;
// savedir = pickdirectory ("Elija una carpeta de destino para los archivos de resumen:"); // usa esto mas tarde
dt = currentDataTable () ; Carolina del Norte = ncol ( dt ) ; // obtener el # de columnas en la tabla
lbwidth = 130 ;
no se ha implementado = expr ( Nueva ventana ( "Característica no implementada todavía" , << Modal , Botonera ( "DE ACUERDO" ))) ; // No tengo idea de lo que hace << modal
clusterDlg = Nueva ventana ( "Tablas de contingencia 2x2 y estadísticas" , // crear una nueva ventana para la Selección de Usuario de Columnas
BorderBox ( izquierda ( 3 ) , parte superior ( 2 ) ,
VListBox (
Caja de texto ( "Comparando ensayos" ) ,
HlistBox (
VListBox (
PanelBox ( "Seleccionar columnas" , // recuadro para listar columnas disponibles
colListData = ColListBox ( Todos , anchura ( lbwidth ) , lineas ( min ( Carolina del Norte , 10 ))) // cuadro de lista de todas las columnas en la tabla de datos utilizando ancho estándar lbWidth (130)
) ,
) ,
PanelBox ( "Reparto de columnas seleccionadas en roles" , // cuadro para designar columnas para análisis
LineupBox ( NCol ( 2 ) , Espaciado ( 3 ) ,
Botonera ( "Ensayo, columnas" ,
colListy << Adjuntar ( colListData << GetSelected )) , // toma las columnas seleccionadas y agrégalas al cuadro de lista colListY
colListy = ColListBox ( anchura ( lbwidth ) , lineas ( 5 )) , // el número de líneas se limita a 5 y se puede ampliar, pero debería ser suficiente para la mayoría de los estudios
Botonera ( "Prueba comparativa o de referencia, columna" ,
colListB << Adjuntar ( colListData << GetSelected )) , // designar 1 columna como referencia o una prueba "comparativa" para comparar con las otras (esto terminará como la X y afectará las estadísticas futuras)
colListB = ColListBox ( anchura ( lbwidth ) , lineas ( 5 )) // el número de líneas está limitado a 5, lo que aumenta los resultados en comparaciones adicionales
// la orden será la primera referencia (X) a cada uno de los ensayos (Y), la segunda referencia a cada uno de los ensayos y así sucesivamente
) ,
) ,
PanelBox ( "Acción" ,
LineupBox ( NCol ( 1 ) ,
Botonera ( "DE ACUERDO" ,
contwin = Nueva ventana ( "Resultados de contingencia" || carbonizarse ( formato ( como fecha ( hoy ()) , "ddMonyyyy" )) ,
Cuadro de tabulación ( "Mesa de contingencia" , HListBox (
cont = Contingencia ( // cont es una referencia a la plataforma (capa de análisis)
Y ( colListB << obtener artículos ) ,
X ( colListy << obtener artículos )) ; //contingencia
cont << Mesa de contingencia (
Contar ( 1 ) ,
% Total ( 0 ) ,
Col% ( 0 ) ,
Fila % ( 0 ) ,
Esperado ( 0 ) ,
Desviación ( 0 ) ,
Cell Chi Squared ( 0 ) ,
Col Cum ( 0 ) ,
Col Cum% ( 0 ) ,
Fila cum ( 0 ) ,
Fila Cum% ( 0 ) ,
) ;
cont << ventana de tamaño ( 500 , 700 ) ; // Quiero que la tabla de contingencia deje de cortar palabras, pero parece que no puedo hacerla más grande
cont << Parcela de mosaico ( 0 ) ; //apagar
cont << Pruebas ( 0 ) ;
cont << Estadística de acuerdo ( 1 ) ; //encender
rcont = cont << informe ; // una referencia al informe
/ * rcont ["Estadística del acuerdo", "Prueba de Bowkker"] << cerrar (1)
para (i = 1, i <= nitems (rcont), i ++,
kap = rcont (Tabla de contingencia (i) ["Estadística del acuerdo", "Coeficiente Kappa"));
kapset = kap [NumberColbox ("Kappa")];
kap << establecer formato (8,3);
kap << establecer Formato Condicional ("Correlación");
rcont (SendToReport (
Despacho (// ¿tal vez el despacho funcionaría mejor?
{"Estadística del acuerdo", "Coeficiente Kappa"},
"Kappa",
NumberColBox,
{Establecer formato (8, 3), Establecer formato condicional ("Correlación")}
));
) , // Cuadro de lista H
"Copia de Contingencia 2x2" , // segunda pestaña
// testval = reportcont [TableBox (1)]; Necesito averiguar cómo agarrar los valores de la tabla de contingencia
// matrixbox (testval << get as matrix))
)) // tabulador
) ; // ventana, eliminando los resultados ";" "en la ventana de diálogo que no se cierra
clusterDlg << Cerrar ventana ) , // cuadro de botón OK
Botonera ( "Cancelar" ,
clusterDlg << Cerrar ventana ) ,
Caja de texto ( "" ) ,
Botonera ( "Retirar" , // eliminar las columnas seleccionadas de los dos cuadros de lista de ensayo
colListy << Eliminar selección ;
colListB << Eliminar selección ;
) ,
Botonera ( "Recordar" , no se ha implementado ) , // no ha sido programado
Botonera ( "Ayuda" , no se ha implementado )) // no ha sido programado
) // cuadro de panel
) // hlistbox
) // vlistbox
) // borderbox
) ; // ventana (cluster dlg)