Kappas ponderadosHola, tenemos un estudio en el que dos evaluadores califican 50 elementos de calidad en una escala del 1 al 4. Queríamos hacer un kappa ponderado en JMP; Ingresé los datos, configuré el tipo de datos como ordinal, pero parece que JMP solo produce un Kappa simple cuando ajusto Y por X y miro la estadística de acuerdo.
¿JMP es capaz de calcular un kappa ponderado?
¡Gracias de antemano!
Re: Kappas ponderados¿Realmente obtienes una tabla de contingencia? No veo que especifiques una X y una Y en tu tabla. El siguiente código funciona en mi sistema (V17.2.0, Windows 10)
Names Default To Here( 1 );
Include("Weighted Kappa Function.jsl" );
dt = Open( "$SAMPLE_DATA/Prime Minister Ratings.jmp" );
CT = dt << Contingency(
Y( :Second Survey ),
X( :First Survey ),
Freq( :Count ),
Tests( 0 ),
Agreement Statistic( 1 )
);
WeightedKappa(CT);
Re: Kappas ponderadosLo intenté al principio y no funcionó. Lo cambié a sin función porque ese era el nombre de mi script. Cambié el script para que coincida con Weighted Kappa Function.jsl y todavía no funciona. Estoy teniendo el mismo error
Kappa.jsl ponderado se incluye a sí mismo a través de un camino cerrado:
Kappa.jsl ponderado en acceso o evaluación de 'Incluir',
Incluir/*###*/("Función Kappa ponderada.jsl")
Aquí está mi código que estoy poniendo con la función:
Names Default to Here(1);
dt = open("Subset of Data for Kappa index.jmp");
Include("Weighted Kappa Function.jsl" );
CT = dt << Contingency(
Contingency Table(
Count( 1, Format( "Fixed Dec", 8, 0 ) ),
Total %( 1, Format( "Fixed Dec", 8, 2 ) ),
Col %( 1, Format( "Fixed Dec", 8, 2 ) ),
Row %( 1, Format( "Fixed Dec", 8, 2 ) ),
Expected( 1, Format( "Best", 8 ) ),
Deviation( 0, Format( "Best", 8 ) ),
Cell Chi Square( 0, Format( "Fixed Dec", 8, 4 ) ),
Col cumulative( 0, Format( "Fixed Dec", 8, 0 ) ),
Col cumulative %( 0, Format( "Fixed Dec", 8, 2 ) ),
Row cumulative( 0, Format( "Fixed Dec", 8, 0 ) ),
Row cumulative %( 0, Format( "Fixed Dec", 8, 2 ) )
),
Agreement Statistic( 1 )
);
WeightedKappa(CT);
Re: Kappas ponderadosnecesitas decir
include("Weighted Kappa Function.jsl");
Re: Kappas ponderadosLo siento, estoy usando JMP Pro 17.0.0 en una Mac. Probé lo que tenías pero seguía duplicando la ruta. Entonces lo cambié a:
dt = open("Subset of Data for Kappa index.jmp");
Include("Weighted Kappa.jsl" );Lo cual abre el archivo (primero estoy probando el archivo aquí, el mío es un poco más complicado y quería asegurarme de que funcionara con el archivo aquí), pero luego aparece un error como:
Kappa.jsl ponderado se incluye a sí mismo a través de un camino cerrado:
Kappa.jsl ponderado en acceso o evaluación de 'Incluir',
Incluir/*###*/("Kappa.jsl ponderado")
Re: Kappas ponderadosVer archivo adjunto
Re: Kappas ponderados@lcmaley ,
Tuve que quitarme algo de óxido, ya que no he vuelto a mirar mi guión desde hace varios años.
Siempre debes mencionar qué versión de JMP estás utilizando. Dicho esto, le sugiero que utilice la solución de @ghartel publicada en 2021.
Descargue el archivo Weighted Kappa Function.jsl que se proporcionó en la publicación @ghartel y guárdelo en una unidad para sus scripts.
Tenga en cuenta que la solución Función Kappa ponderada incluye Std Err y límites de confianza, así como una variable Por; mi guión no. La solución de @ghartel es una solución mucho mejor.
A continuación se muestra el JSL que utilicé para ejecutar la función Kappa ponderada, para la tabla de muestra proporcionada con mi script original. Vea la captura de pantalla adjunta del resultado de la tabla JMP slide58.jmp.
Nota:
- Udir puede ser cualquier unidad que desee y la tabla de datos y la función pueden estar en directorios diferentes.
- No es necesario que mencione cada opción para la Contingencia; probablemente tenga valores predeterminados configurados. Sin embargo, los recuentos y los esperados deben incluirse en las opciones de su plataforma de contingencia o mencionarse en su guión.
¡Felicitaciones a @ghartel por la excelente función!
Names Default to Here(1);
Udir ="C:\temp";
dt = open(Udir || "\slide58.jmp");
Include( Udir || "\Weighted Kappa Function.jsl" );
CT = dt << Contingency(
Y( :Y ),
X( :X ),
Freq( :n ),
Contingency Table(
Count( 1, Format( "Fixed Dec", 8, 0 ) ),
Total %( 1, Format( "Fixed Dec", 8, 2 ) ),
Col %( 1, Format( "Fixed Dec", 8, 2 ) ),
Row %( 1, Format( "Fixed Dec", 8, 2 ) ),
Expected( 1, Format( "Best", 8 ) ),
Deviation( 0, Format( "Best", 8 ) ),
Cell Chi Square( 0, Format( "Fixed Dec", 8, 4 ) ),
Col Cum( 0, Format( "Fixed Dec", 8, 0 ) ),
Col Cum %( 0, Format( "Fixed Dec", 8, 2 ) ),
Row Cum( 0, Format( "Fixed Dec", 8, 0 ) ),
Row Cum %( 0, Format( "Fixed Dec", 8, 2 ) )
),
Agreement Statistic( 1 )
);
WeightedKappa(CT);
Re: Kappas ponderadosEstoy intentando usar tu script, puse esto al final,
dt0 = Current Data Table();
CT = dt0 << Contingency(
Contingency Table( Expected( 1 )), Agreement Statistic( 1 ), Tests(0) );
WeightedKappa( CT );
Y no funciona, no se agrega nada. ¿Qué estoy haciendo mal?
Recibo un error que dice que no es una tabla de contingencia y luego no se agrega nada. ¿Sugerencias?
Re: Kappas ponderadosHola a todos,
No pude ejecutar este script tal cual y de todos modos quería usar una función dentro de los scripts en lugar de algo interactivo, así que adapté este código para crear una función. También agregué el cálculo de errores estándar e intervalos de confianza asintóticos y el manejo de variables BY.
Para usarlo simplemente inclúyelo en tu script, ejecuta un análisis de contingencia y asígnalo a una variable y luego pásalo a la función. La función agregará un elemento de esquema a cada tabla Kappa que proporcione los Kappas ponderados lineales y cuadráticos. Déjame saber si descubres algún error.
Include( Udir || "\Weighted Kappa Function.jsl" );
CT = Contingency( Y( :Comparison ), X( :Reference ), Contingency Table(), Tests( 0 ) );
CT2 = Contingency( by( :Rater), Y( :Comparison ), X( :Reference ), Contingency Table(), Tests( 0 ) );
WeightedKappa(CT);
WeightedKappa(CT2);s
Re: Kappas ponderadosGracias @gzmorgan0 ,
Me las arreglo para ejecutarlo fila por fila, pero no como una función. Ésa es la gran sorpresa. en cualquier caso, logro producir los números reales y no necesito hacerlo muchas veces, así que estoy bien.
Muchas gracias,
ron
Re: Kappas ponderadosHola Ron, @ron_horne .
Lo siento por la respuesta tardía. Ejecuté el script Kappa ponderado mientras su tabla de subconjunto era la tabla de datos actual. Especifiqué BP1 como Y y BP2 como X. Los resultados se adjuntan como un archivo .jrn. A continuación se muestra un fragmento.

Cuando ejecutas el script:
- ¿La tabla de contingencia contiene Total %, Col %, Fila % y Esperado?
- Le sugiero comentar la línea 88 del script que elimina la tabla realizada a partir de la tabla de contingencia. Luego ejecute el script. ¿Se crea una tabla y se ve así?

El error que informó parece que no se puede ejecutar cmat = dt[idx,ccols]; idx es un índice de filas donde Cell == "Count" o posterior "Expected" y ccols son columnas continuas que deberían ser la lista {"0", "0.25", "0.5", "0.75", "1"}. Si los nombres de las celdas no son los mismos, tal vez un espacio adicional o algo que pueda alterar el script, tal vez una solución más sólida sea usar Where contains(:Cell, "Count")
Sólo estoy adivinando.
Re: Kappas ponderados@gzmorgan0
por ejemplo este conjunto de datos. cada columna tiene una valoración diferente de la misma escala.
Avíseme si logra ejecutarlo usando el script.
muchas gracias,
ron
Re: Kappas ponderados@gzmorgan0 ,
esto es lo que obtengo usando el archivo de ejemplo Slide58, no mis propios datos. también produce el mismo error en JMP11 y JMP 15.
Todo lo que hice fue abrir el archivo y ejecutar el script.
gracias,
ron
Re: Kappas ponderados@ron_horne,
Para ser específico, uso JMP PRO. Probé en JMP PRO 13.2.1 y obtuve los mismos resultados.
Re: Kappas ponderados@ron_horne , hola.
Estoy en JMP 14.3. ¿Podría enviar un ejemplo, una tabla de datos anónimos? Antes de declararlo como un problema de versión, me gustaría comprobarlo. Mi guión tenía algunas comprobaciones incluidas, sin embargo, podría haber pasado por alto un caso de esquina.
Re: Kappas ponderadosgracias @gzmorgan0 por el guión,
Por alguna razón aparece un error al ejecutar el script. Estoy usando JMP 14.2.
¿Alguna pista de cómo solucionarlo?

Re: Kappas ponderadosNo encontré una solución integrada a su pregunta. Por supuesto, JMP es capaz, pero necesita un script (a menos que uno de los desarrolladores de JMP tenga una solución alternativa).
No informó qué versión de JMP ni qué sistema operativo tiene, por lo que no estoy seguro de que esto funcione para usted. Se adjunta un script que probé en JMP 12,13 y 14. Utiliza métodos para ser compatible con versiones anteriores de JMP12. Él :
- Se ejecuta en la tabla de datos actual y activa un análisis de contingencia. En otras palabras, utiliza la interfaz de usuario de JMP.
- El guión está escrito para un informe de contingencia, es decir, una variable ordinal Y y una X.
- Especifica los valores esperados que se incluirán en la tabla de contingencia para reducir la complejidad (y el riesgo) de los errores de secuencias de comandos.
- Elabora una tabla a partir de la tabla de Contingencia.
- A partir de eso, crea las probabilidades observadas y esperadas.
- Calcula el kappa estándar donde la matriz de peso es la matriz de identidad; a Peso lineal 1- abs(i - j)/(k-1); y un peso cuadrático que es 1 - cuadrado ((ij)/(k-1)). Vea las referencias reportadas en el guión.
- Los valores de k, kL y kQ se adjuntan al informe JMP (ver más abajo).
- El kappa calculado se informa como una verificación, ya que debe coincidir con el kappa informado por JMP.
- Los errores ponderados y los intervalos de confianza no se calculan en este script.
Este podría ser un elemento de la lista de deseos para futuras versiones de JMP. Dado que algunas referencias para kappa ponderado incluyen más que pesos lineales y cuadráticos para categorías ordinales, debe especificar si este elemento de la lista de deseos debe permitir pesos personalizados.
Se adjunta el script y un conjunto de datos de muestra donde la columna n debe usarse como Freq. slide58.jmp es una tabla resumen de la tercera referencia informada (página 58). Es una de las 10 tablas utilizadas para probar el script. Espero que esto ayude.
Re: Kappas ponderadasDisculpa, estaba de viaje. Así no obtengo una tabla de contingencia. Lo probé con X e Y especificados y obtuve el mismo resultado. Simplemente quité X e Y para poder usarlo con cualquier tabla. Simplemente me abre el cuadro de diálogo para ingresar X e Y.
dt = Open( "Subset of Data for Kappa index.jmp" );
Include( "Weighted Kappa Function.jsl" );
CT = dt << Contingency(
Contingency Table(
Y( :BP1),
X( :BP2 ),
Count( 1, Format( "Fixed Dec", 8, 0 ) ),
Total %( 1, Format( "Fixed Dec", 8, 2 ) ),
Col %( 1, Format( "Fixed Dec", 8, 2 ) ),
Row %( 1, Format( "Fixed Dec", 8, 2 ) ),
Expected( 1, Format( "Best", 8 ) ),
Deviation( 0, Format( "Best", 8 ) ),
Cell Chi Square( 0, Format( "Fixed Dec", 8, 4 ) ),
Col cumulative( 0, Format( "Fixed Dec", 8, 0 ) ),
Col cumulative %( 0, Format( "Fixed Dec", 8, 2 ) ),
Row cumulative( 0, Format( "Fixed Dec", 8, 0 ) ),
Row cumulative %( 0, Format( "Fixed Dec", 8, 2 ) )
),
Agreement Statistic( 1 )
);
WeightedKappa( CT );
Obtengo una tabla de contingencia cuando ejecuto esto, pero no se agrega nada:
dt0 = Current Data Table();
tsub = Subscribe to Data Table List( , On Open( WeightedKappa ) );
reportc = Contingency(
Contingency Table( Expected( 1 ) ),
Agreement Statistic( 1 ),
<
<MAKE into="" data="https://community.jmp.com/" table=""></MAKE>
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lcmaley_0-1710247375077.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="lcmaley_0-1710247375077.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="lcmaley_0-1710247375077.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="lcmaley_0-1710247375077.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/62115i2A7C53339B71665F/lcmaley_0-1710247375077.png" role="button" title="lcmaley_0-1710247375077.png" alt="lcmaley_0-1710247375077.png" /></span></SPAN></SPAN></SPAN>
<BR /><BR />
Re: Kappas ponderadasProbé exactamente el mismo código y funcionó hasta generar la tabla de contingencia, pero mostró "Dimensionalmente incorrecto" y no calculó el kappa ponderado. (JMP18.01, Win11)
Re: Kappas ponderadasParece ser un problema de idioma con JMP. Modifiqué "Cell" en el script a japonés y funciona. Gracias por el excelente trabajo.