Kappas pondérésBonjour, nous avons une étude dans laquelle deux évaluateurs évaluent la qualité de 50 éléments sur une échelle de 1 à 4. Nous voulions faire un kappa pondéré dans JMP ; J'ai entré les données, défini le type de données comme ordinal, mais JMP semble produire un simple Kappa uniquement lorsque j'ajuste Y par X et que je regarde les statistiques d'accord.
JMP est-il capable de calculer un kappa pondéré ?
Merci d'avance!
Re : Kappas pondérésobtenez-vous réellement un tableau de contingence ? Je ne vous vois pas spécifier un X et un Y dans votre tableau. Le code suivant fonctionne sur mon système (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 pondérésJ'ai essayé ça au début et ça n'a pas marché. Je l'ai changé en sans fonction car c'était le nom de mon script. J'ai modifié le script pour qu'il corresponde à Weighted Kappa Function.jsl et cela ne fonctionne toujours pas. Je reçois la même erreur
Weighted Kappa.jsl s'inclut via un chemin fermé. :
Kappa.jsl pondéré dans l'accès ou l'évaluation de 'Include' ,
Inclure/*###*/("Fonction Kappa pondérée.jsl")
Voici mon code que je mets avec la fonction :
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 pondéréstu dois dire
include("Weighted Kappa Function.jsl");
Re : Kappas pondérésDésolé, j'utilise JMP Pro 17.0.0 sur un Mac. J'ai essayé ce que vous aviez mais cela continuait à dupliquer le chemin. Je l'ai donc changé en :
dt = open("Subset of Data for Kappa index.jmp");
Include("Weighted Kappa.jsl" );Ce qui ouvre le fichier (j'essaie d'abord le fichier ici, le mien est un peu plus compliqué et je voulais m'assurer qu'il fonctionnait avec le fichier ici), mais j'obtiens ensuite une erreur du type :
Weighted Kappa.jsl s'inclut via un chemin fermé. :
Kappa.jsl pondéré dans l'accès ou l'évaluation de 'Include' ,
Inclure/*###*/("Kappa pondéré.jsl")
Re : Kappas pondérésVoir pièce jointe
Re : Kappas pondérés@lcmaley ,
J'ai dû enlever un peu de rouille, car je n'ai pas regardé mon scénario depuis plusieurs années.
Vous devez toujours mentionner la version de JMP que vous utilisez. Ceci dit, je vous propose d'utiliser la solution de @ghartel publiée en 2021.
Téléchargez le fichier Weighted Kappa Function.jsl fourni dans le message @ghartel et enregistrez-le sur un lecteur pour vos scripts.
Notez que la solution de fonction Kappa pondérée inclut l'erreur standard et les limites de confiance, ainsi qu'une variable By ; mon script ne l'a pas fait. La solution de @ghartel est une bien meilleure solution.
Vous trouverez ci-dessous le JSL que j'ai utilisé pour exécuter la fonction Kappa pondérée, pour l'exemple de table fourni avec mon script d'origine. Voir la capture d'écran ci-jointe du résultat pour la table JMP slide58.jmp.
Note:
- Udir peut être n'importe quel lecteur de votre choix et la table de données et la fonction peuvent se trouver dans différents répertoires.
- Vous n'avez pas besoin d'appeler chaque option pour la contingence, vous avez probablement configuré des valeurs par défaut. Cependant, les nombres et les attentes doivent être inclus dans les options de votre plateforme de contingence ou indiqués dans votre script.
Félicitations à @ghartel pour cette fonction formidable !
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 pondérésJ'essaie d'utiliser votre script, je mets ceci à la fin,
dt0 = Current Data Table();
CT = dt0 << Contingency(
Contingency Table( Expected( 1 )), Agreement Statistic( 1 ), Tests(0) );
WeightedKappa( CT );
Et ça ne marche pas, rien n'est ajouté. Qu'est-ce que je fais mal?
J'obtiens une erreur disant qu'il ne s'agit pas d'un tableau de contingence, alors rien n'est ajouté. Suggestions?
Re : Kappas pondérésSalut tout le monde,
Je ne parvenais pas à exécuter ce script tel quel et de toute façon, je voulais une fonction à utiliser dans des scripts plutôt que quelque chose d'interactif, j'ai donc adapté ce code pour créer une fonction. J'ai également ajouté le calcul des erreurs types et des intervalles de confiance asymptotiques et le traitement des variables BY.
Pour l'utiliser, incluez-le simplement dans votre script, exécutez une analyse de contingence et affectez-la à une variable, puis transmettez-la à la fonction. La fonction ajoutera un élément de plan à chaque tableau Kappa donnant les Kappas pondérés linéaires et quadratiques. Faites-moi savoir si vous découvrez des erreurs.
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 pondérésMerci @gzmorgan0 ,
J'arrive à l'exécuter ligne par ligne mais pas en fonction. C'est la grande surprise. en tout cas, j'arrive à produire les chiffres réels et je n'ai pas besoin de le faire plusieurs fois donc je vais bien.
Merci beaucoup,
Ron
Re : Kappas pondérésSalut Ron, @ron_horne .
Désolé pour la réponse tardive. J'ai exécuté le script Kappa pondéré alors que votre table de sous-ensemble était la table de données actuelle. J'ai spécifié BP1 comme Y et BP2 comme X. les résultats sont joints sous forme de fichier .jrn. Ci-dessous un extrait.

Lorsque vous exécutez le script :
- le tableau de contingence contient-il Total %, Col %, Ligne % et Attendu ?
- Je vous propose de commenter la ligne 88 du script qui supprime le tableau réalisé à partir du tableau de contingence. Exécutez ensuite le script. Un tableau est-il créé et ressemble-t-il à ceci ?

L'erreur que vous avez signalée semble indiquer qu'il ne peut pas exécuter cmat = dt[idx,ccols]; idx est un index de lignes où Cell == "Count" ou version ultérieure "Expected" et ccols sont des colonnes continues qui devraient être la liste {"0", "0.25", "0.5", "0.75", "1"}. Si les noms de cellules ne sont pas les mêmes, peut-être un espace supplémentaire ou quelque chose qui pourrait perturber le script, une solution plus robuste consiste peut-être à utiliserwhere Contains(:Cell, "Count")
Je devine juste ici.
Re : Kappas pondérés@gzmorgan0
par exemple cet ensemble de données. chaque colonne a une évaluation différente de la même échelle.
s'il vous plaît faites-moi savoir si vous parvenez à l'exécuter à l'aide du script.
merci beaucoup,
Ron
Re : Kappas pondérés@gzmorgan0 ,
c'est ce que j'obtiens en utilisant le fichier d'exemple Slide58, pas mes propres données. cela produit également la même erreur sur JMP11 et JMP 15.
tout ce que j'ai fait, c'est ouvrir le fichier et exécuter le script.
merci,
Ron
Re : Kappas pondérés@ron_horne,
Pour être précis, j'utilise JMP PRO. J'ai testé sur JMP PRO 13.2.1 et j'ai obtenu les mêmes résultats.
Re : Kappas pondérés@ron_horne , bonjour.
Je suis sur JMP 14.3. Pourriez-vous envoyer un exemple, un tableau de données anonymisé. Avant de déclarer un problème de version, j'aimerais le vérifier. Mon script comportait quelques vérifications, cependant, j'aurais pu manquer un cas d'angle.
Re : Kappas pondérésmerci @gzmorgan0 pour le script,
Pour une raison quelconque, j'obtiens une erreur lors de l'exécution du script. j'utilise JMP 14.2.
une idée de comment le réparer ?

Re : Kappas pondérésJe n'ai pas trouvé de solution intégrée à votre question. Bien sûr, JMP en est capable, mais il nécessite un script (à moins que l'un des développeurs JMP n'ait une solution alternative).
Vous n'avez pas indiqué quelle version de JMP ni quel système d'exploitation vous possédez, je ne suis donc pas sûr que cela fonctionnera pour vous. Vous trouverez ci-joint un script que j'ai testé sur JMP 12, 13 et 14. Il utilise des méthodes pour être rétrocompatible avec JMP12. Il :
- S'exécute sur la table de données actuelle et appelle une analyse de contingence. En d’autres termes, il utilise l’interface utilisateur de JMP.
- Le script est écrit pour un rapport d'urgence, c'est-à-dire une variable ordinale Y et une variable ordinale X.
- Spécifie les valeurs attendues à inclure dans le tableau de contingence pour réduire la complexité (et le risque) des erreurs de script.
- Crée un tableau à partir du tableau de contingence.
- À partir de là, il crée les probabilités observées et attendues.
- Il calcule le kappa standard où la matrice de poids est la matrice Identité ; a Poids linéaire 1- abs(i - j)/(k-1) ; et un poids quadratique qui est 1 - square( (ij)/(k-1) ). Voir les références rapportées dans le script.
- Les valeurs de k, kL et kQ sont annexées au rapport JMP (voir ci-dessous).
- Le kappa calculé est signalé sous forme de contrôle car il doit correspondre au kappa rapporté par JMP.
- Les erreurs pondérées et les intervalles de confiance ne sont pas calculés dans ce script.
Cela pourrait être un élément de liste de souhaits pour les futures versions de JMP. Étant donné que certaines références pour le kappa pondéré incluent plus que des poids linéaires et quadratiques pour les catégories ordinales, vous devez spécifier si cet élément de liste de souhaits doit autoriser des poids personnalisés.
Le script est joint et un exemple d'ensemble de données où la colonne n doit être utilisée comme Freq. slide58.jmp est un tableau récapitulatif de la troisième référence rapportée (page 58). C'est l'une des 10 tables utilisées pour tester le script. J'espère que ça aide.
Re : Kappas pondérésDésolé, j'étais en déplacement. De cette façon, je n'obtiens pas de tableau de contingence. J'ai essayé avec les valeurs X et Y spécifiées et j'ai fait la même chose. J'ai simplement supprimé les valeurs X et Y pour pouvoir l'utiliser avec n'importe quel tableau. Cela ouvre simplement la boîte de dialogue permettant de saisir les valeurs X et 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 );
J'obtiens un tableau de contingence lorsque j'exécute ceci, mais rien n'est ajouté :
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 />
Ré: Kappas pondérésJ'ai essayé exactement le même code et il a fonctionné jusqu'à signaler le tableau de contingence, mais il affichait « Dimensionnellement incorrect » et ne calculait pas le kappa pondéré. (JMP18.01, Win11)
Ré: Kappas pondérésIl semble que ce soit un problème de langue avec JMP. J'ai modifié « Cell » dans le script en japonais et ça fonctionne. Merci pour votre excellent travail.