Gewichtete KappasHallo, wir haben eine Studie, in der zwei Bewerter 50 Artikel auf einer Skala von 1 bis 4 hinsichtlich ihrer Qualität bewerten. Wir wollten ein gewichtetes Kappa in JMP machen; Ich habe die Daten eingegeben und den Datentyp auf Ordinal festgelegt, aber JMP scheint nur dann ein einfaches Kappa zu erzeugen, wenn ich Y an X anpasse und mir die Übereinstimmungsstatistik ansehe.
Ist JMP in der Lage, ein gewichtetes Kappa zu berechnen?
Dank im Voraus!
Betreff: Gewichtete KappasBekommst du tatsächlich eine Notfalltabelle? Ich sehe nicht, dass Sie in Ihrer Tabelle ein X und ein Y angeben. Der folgende Code funktioniert auf meinem System (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);
Betreff: Gewichtete KappasIch habe das zuerst versucht und es hat nicht funktioniert. Ich habe es in „ohne Funktion“ geändert, weil das der Name meines Skripts war. Ich habe das Skript so geändert, dass es mit Weighted Kappa Function.jsl übereinstimmt, aber es funktioniert immer noch nicht. Ich erhalte den gleichen Fehler
Gewichtetes Kappa.jsl bindet sich selbst über einen geschlossenen Pfad ein:
Gewichtetes Kappa.jsl beim Zugriff oder bei der Auswertung von „Include“,
Include/*###*/("Weighted Kappa Function.jsl")
Hier ist mein Code, den ich mit der Funktion einfüge:
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);
Betreff: Gewichtete KappasDu musst sagen
include("Weighted Kappa Function.jsl");
Betreff: Gewichtete KappasEntschuldigung, ich verwende JMP Pro 17.0.0 auf einem Mac. Ich habe versucht, was Sie hatten, aber der Pfad wurde immer wieder dupliziert. Also habe ich es geändert in:
dt = open("Subset of Data for Kappa index.jmp");
Include("Weighted Kappa.jsl" );Dadurch wird die Datei geöffnet (ich versuche es zuerst mit der Datei hier, meine ist etwas komplizierter und ich wollte sicherstellen, dass sie mit der Datei hier funktioniert), aber dann erhalte ich eine Fehlermeldung wie:
Gewichtetes Kappa.jsl bindet sich selbst über einen geschlossenen Pfad ein:
Gewichtetes Kappa.jsl beim Zugriff oder bei der Auswertung von „Include“,
Include/*###*/("Weighted Kappa.jsl")
Betreff: Gewichtete KappasSiehe Anhang
Betreff: Gewichtete Kappas@lcmaley ,
Ich musste etwas Rost abbürsten, da ich mir mein Drehbuch seit mehreren Jahren nicht mehr angeschaut habe.
Sie sollten immer angeben, welche Version von JMP Sie verwenden. Dennoch schlage ich vor, dass Sie die im Jahr 2021 veröffentlichte Lösung von @ghartel verwenden.
Laden Sie die Weighted Kappa Function.jsl herunter, die im @ghartel- Beitrag bereitgestellt wurde, und speichern Sie sie auf einem Laufwerk für Ihre Skripte.
Beachten Sie, dass die gewichtete Kappa-Funktionslösung die Standardfehler- und Konfidenzgrenzen sowie eine By-Variable umfasst. mein Skript nicht. Die Lösung von @ghartel ist eine viel bessere Lösung.
Unten finden Sie die JSL, die ich zum Ausführen der Weighted-Kappa-Funktion für die Beispieltabelle verwendet habe, die mit meinem ursprünglichen Skript bereitgestellt wurde. Sehen Sie sich den beigefügten Screenshot des Ergebnisses für die JMP-Tabelle slide58.jmp an.
Notiz:
- Udir kann ein beliebiges Laufwerk sein und die Datentabelle und Funktion können in verschiedenen Verzeichnissen liegen.
- Sie müssen nicht jede Option für den Notfall aufrufen, wahrscheinlich haben Sie Standardeinstellungen eingerichtet. Allerdings müssen „Counts“ und „Expected“ in die Optionen Ihrer Contingency Platform aufgenommen oder in Ihrem Skript erwähnt werden.
Ein großes Lob an @ghartel für die tolle Funktion!
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);
Betreff: Gewichtete KappasIch versuche, Ihr Skript zu verwenden, ich habe das am Ende eingefügt,
dt0 = Current Data Table();
CT = dt0 << Contingency(
Contingency Table( Expected( 1 )), Agreement Statistic( 1 ), Tests(0) );
WeightedKappa( CT );
Und es funktioniert nicht, es wird nichts angehängt. Was mache ich falsch?
Ich erhalte die Fehlermeldung, dass es sich nicht um eine Kontingenztabelle handelt. Dann wird nichts angehängt. Vorschläge?
Betreff: Gewichtete KappasHallo zusammen,
Ich konnte dieses Skript nicht so ausführen, wie es ist, und außerdem wollte ich eine Funktion, die in Skripten verwendet werden kann, und nicht etwas Interaktives, also habe ich diesen Code angepasst, um eine Funktion zu erstellen. Außerdem habe ich die Berechnung von Standardfehlern und asymptotischen Konfidenzintervallen sowie den Umgang mit BY-Variablen hinzugefügt.
Um es zu verwenden, fügen Sie es einfach in Ihr Skript ein, führen Sie eine Notfallanalyse durch, weisen Sie es einer Variablen zu und übergeben Sie es dann an die Funktion. Die Funktion fügt jeder Kappa-Tabelle ein Gliederungselement hinzu und gibt die linear und quadratisch gewichteten Kappas an. Lassen Sie mich wissen, wenn Sie Fehler entdecken.
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
Betreff: Gewichtete KappasDanke @gzmorgan0 ,
Ich schaffe es zwar, es Zeile für Zeile auszuführen, aber nicht als Funktion. Das ist die große Überraschung. Auf jeden Fall schaffe ich es, die tatsächlichen Zahlen zu ermitteln, und ich muss das nicht oft tun, also geht es mir gut.
Vielen Dank,
Ron
Betreff: Gewichtete KappasHallo Ron, @ron_horne .
Entschuldigung für die späte Antwort. Ich habe das gewichtete Kappa-Skript ausgeführt, während Ihre Teilmengentabelle die aktuelle Datentabelle war. Ich habe BP1 als Y und BP2 als X angegeben. Die Ergebnisse sind als .jrn-Datei angehängt. Unten ist ein Ausschnitt.

Wenn Sie das Skript ausführen:
- Enthält die Kontingenztabelle „Gesamt“, „Spalte“, „Zeile %“ und „Erwartet“?
- Ich schlage vor, dass Sie Zeile 88 des Skripts auskommentieren, das die aus der Kontingenztabelle erstellte Tabelle löscht. Führen Sie dann das Skript aus. Wird eine Tabelle erstellt und sieht sie so aus?

Der von Ihnen gemeldete Fehler besagt, dass cmat = dt[idx,ccols]; nicht ausgeführt werden kann. idx ist ein Index von Zeilen, wobei Cell == „Count“ oder später „Expected“ und ccols fortlaufende Spalten sind, die der Liste {„0“, „0,25“, „0,5“, „0,75“, „1“} entsprechen sollten. Wenn die Zellnamen nicht identisch sind, kann es sich um ein zusätzliches Leerzeichen oder etwas handeln, das das Skript stören könnte. Eine robustere Lösung wäre möglicherweise die Verwendung von where Contains(:Cell, „Count“).
Ich rate hier nur ab.
Betreff: Gewichtete Kappas@gzmorgan0
zum Beispiel dieser Datensatz. Jede Spalte enthält eine andere Bewertung derselben Skala.
Bitte teilen Sie mir mit, ob Sie es mit dem Skript ausführen können.
vielen Dank,
Ron
Betreff: Gewichtete Kappas@gzmorgan0 ,
Das ist es, was ich mit der Beispieldatei Slide58 bekomme, nicht meine eigenen Daten. Es erzeugt auch den gleichen Fehler auf JMP11 und JMP 15.
Ich habe lediglich die Datei geöffnet und das Skript ausgeführt.
Danke,
Ron
Betreff: Gewichtete Kappas@ron_horne,
Genauer gesagt verwende ich JMP PRO. Ich habe es mit JMP PRO 13.2.1 getestet und die gleichen Ergebnisse erhalten.
Betreff: Gewichtete Kappas@ron_horne , hallo.
Ich verwende JMP 14.3. Könnten Sie ein Beispiel senden, eine anonymisierte Datentabelle? Bevor ich es als Versionsproblem erkläre, möchte ich es mir ansehen. In meinem Skript waren ein paar Prüfungen enthalten, allerdings hätte ich einen Eckfall übersehen können.
Betreff: Gewichtete KappasDanke @gzmorgan0 für das Skript,
Aus irgendeinem Grund erhalte ich beim Ausführen des Skripts eine Fehlermeldung. Ich verwende JMP 14.2.
Irgendeine Ahnung, wie man das Problem beheben kann?

Betreff: Gewichtete KappasIch habe keine integrierte Lösung für Ihre Frage gefunden. Natürlich ist JMP dazu in der Lage, aber es benötigt ein Skript (es sei denn, einer der JMP-Entwickler hat eine alternative Lösung).
Sie haben nicht angegeben, welche Version von JMP und welches Betriebssystem Sie verwenden, daher bin ich nicht sicher, ob dies für Sie funktionieren wird. Anbei ist ein Skript, das ich auf JMP 12,13 und 14 getestet habe. Es verwendet Methoden, um mit JMP12 abwärtskompatibel zu sein. Es :
- Führt die aktuelle Datentabelle aus und ruft eine Notfallanalyse auf. Mit anderen Worten: Es wird die JMP-Benutzeroberfläche verwendet.
- Das Skript ist für einen Notfallbericht geschrieben, d. h. für eine Y- und eine X-Ordnungsvariable.
- Gibt die erwarteten Werte an, die in die Kontingenztabelle aufgenommen werden sollen, um die Komplexität (und das Risiko) von Skriptfehlern zu reduzieren.
- Erstellt eine Tabelle aus der Kontingenztabelle.
- Daraus werden die beobachteten und erwarteten Wahrscheinlichkeiten erstellt.
- Es berechnet den Standard-Kappa, wobei die Gewichtsmatrix die Identitätsmatrix ist; a Lineares Gewicht 1- abs(i - j)/(k-1); und ein quadratisches Gewicht, das 1 - Quadrat( (ij)/(k-1) ) ist. Siehe die im Skript angegebenen Referenzen.
- Die Werte von k, kL und kQ werden dem JMP-Bericht beigefügt (siehe unten).
- Der berechnete Kappa wird als Kontrolle gemeldet, da er mit dem von JMP gemeldeten Kappa übereinstimmen sollte
- Gewichtete Fehler und Konfidenzintervalle werden in diesem Skript nicht berechnet.
Dies könnte ein Wunschlistenpunkt für zukünftige JMP-Versionen sein. Da einige Referenzen für gewichtetes Kappa mehr als lineare und quadratische Gewichtungen für Ordinalkategorien enthalten, sollten Sie angeben, ob dieser Wunschlisteneintrag benutzerdefinierte Gewichtungen zulassen soll.
Das Skript ist beigefügt und ein Beispieldatensatz, in dem Spalte n als Freq verwendet werden sollte. slide58.jmp ist eine Übersichtstabelle aus der dritten gemeldeten Referenz (Seite 58). Es ist eine von 10 Tabellen, die zum Testen des Skripts verwendet werden. Ich hoffe das hilft.
Betreff: Gewichtete KappasEntschuldigung, ich war unterwegs. So erhalte ich keine Kontingenztabelle. Ich habe es mit den angegebenen X- und Y-Werten versucht und das gleiche Ergebnis erzielt. Ich habe X und Y einfach entfernt, damit ich es mit jeder Tabelle verwenden kann. Es öffnet sich lediglich das Dialogfeld, in dem ich X und Y eingeben kann.
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 );
Ich erhalte zwar eine Kontingenztabelle, wenn ich dies ausführe, aber es wird nichts angehängt:
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 />
Betreff: Gewichtete KappasIch habe genau denselben Code ausprobiert und er hat bis zur Ausgabe der Kontingenztabelle funktioniert, zeigte aber „Falsche Dimension“ an und berechnete das gewichtete Kappa nicht. (JMP18.01, Windows 11)
Betreff: Gewichtete KappasEs scheint ein Sprachproblem mit JMP zu sein. Ich habe "Cell" im Skript auf Japanisch geändert und es funktioniert. Vielen Dank für die tolle Arbeit.