Kappa ponderatiSalve, abbiamo uno studio in cui due valutatori valutano la qualità di 50 elementi su una scala da 1 a 4. Volevamo fare un kappa ponderato in JMP; Ho inserito i dati, impostato il tipo di dati come ordinale, ma JMP sembra produrre solo un semplice Kappa quando adattamento Y per X e guardo la statistica dell'accordo.
JMP è in grado di calcolare un kappa ponderato?
Grazie in anticipo!
Ri: Kappa ponderatistai effettivamente ricevendo una tabella di contingenza? Non ti vedo specificare una X e una Y nella tua tabella. Il seguente codice funziona sul mio 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);
Ri: Kappa ponderatiL'ho provato all'inizio e non ha funzionato. L'ho cambiato in senza funzione perché quello era il nome del mio script. Ho modificato lo script in modo che corrisponda a Weighted Kappa Function.jsl e continua a non funzionare. Ricevo lo stesso errore
Weighted Kappa.jsl si include attraverso un percorso chiuso:
Kappa.jsl ponderato nell'accesso o nella valutazione di 'Include',
Include/*###*/("Funzione Kappa ponderata.jsl")
Ecco il mio codice che sto inserendo con la funzione:
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);
Ri: Kappa ponderatidevi dire
include("Weighted Kappa Function.jsl");
Ri: Kappa ponderatiMi spiace, sto utilizzando JMP Pro 17.0.0 su un Mac. Ho provato quello che avevi ma continuava a duplicare il percorso. Quindi l'ho cambiato in:
dt = open("Subset of Data for Kappa index.jmp");
Include("Weighted Kappa.jsl" );Il che apre il file (sto provando prima il file qui, il mio è un po' più complicato e volevo assicurarmi che funzionasse con il file qui), ma poi ricevo un errore come:
Weighted Kappa.jsl si include attraverso un percorso chiuso:
Kappa.jsl ponderato nell'accesso o nella valutazione di 'Include',
Includi/*###*/("Kappa ponderato.jsl")
Ri: Kappa ponderatiVedi allegato
Ri: Kappa ponderati@lcmaley ,
Ho dovuto spazzolare via un po' di ruggine, dato che non guardavo la mia sceneggiatura da diversi anni.
Dovresti sempre menzionare quale versione di JMP stai utilizzando. Detto questo, ti suggerisco di utilizzare la soluzione di @ghartel pubblicata nel 2021.
Scarica il Weighted Kappa Function.jsl fornito nel post @ghartel e salvalo su un'unità per i tuoi script.
Si noti che la soluzione Funzione Kappa ponderata include Std Err e limiti di confidenza, nonché una variabile By; la mia sceneggiatura no. La soluzione di @ghartel è una soluzione molto migliore.
Di seguito è riportato il JSL che ho utilizzato per eseguire la funzione Weighted Kappa, per la tabella di esempio fornita con il mio script originale. Vedere lo screenshot allegato del risultato per la tabella JMP slide58.jmp.
Nota:
- Udir può essere qualsiasi unità desiderata e la tabella dati e la funzione possono trovarsi in directory diverse.
- Non è necessario richiamare ciascuna opzione per la Contingenza, probabilmente hai impostato le impostazioni predefinite. Tuttavia, Conteggi e Atteso devono essere inclusi nelle opzioni della piattaforma di contingenza o richiamati nello script.
Complimenti a @ghartel per la fantastica funzione!
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);
Ri: Kappa ponderatiSto cercando di usare il tuo script, lo metto alla fine,
dt0 = Current Data Table();
CT = dt0 << Contingency(
Contingency Table( Expected( 1 )), Agreement Statistic( 1 ), Tests(0) );
WeightedKappa( CT );
E non funziona, non viene aggiunto nulla. Che cosa sto facendo di sbagliato?
Ricevo un errore che dice che non è una tabella di contingenza, quindi non viene aggiunto nulla. Suggerimenti?
Ri: Kappa ponderatiCiao a tutti,
Non sono riuscito a far funzionare questo script così com'è e comunque volevo una funzione da utilizzare all'interno degli script piuttosto che qualcosa di interattivo, quindi ho adattato questo codice per creare una funzione. Ho anche aggiunto il calcolo degli errori standard e degli intervalli di confidenza asintotici e la gestione delle variabili BY.
Per usarlo basta includerlo nel proprio script, eseguire un'analisi di contingenza e assegnarlo ad una variabile e poi passarlo alla funzione. La funzione aggiungerà un elemento di contorno a ciascuna tabella Kappa fornendo i Kappa ponderati lineari e quadratici. Fammi sapere se scopri qualche errore.
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
Ri: Kappa ponderatiGrazie @gzmorgan0 ,
Riesco a eseguirlo riga per riga ma non come funzione. Questa è la grande sorpresa. in ogni caso riesco a produrre i numeri effettivi e non ho bisogno di farlo molte volte, quindi sto bene.
Grazie molto,
Ron
Ri: Kappa ponderatiCiao Ron, @ron_horne .
Scusa per il ritardo della risposta. Ho eseguito lo script Kappa pesato mentre la tabella dei sottoinsiemi era la tabella dati corrente. Ho specificato BP1 come Y e BP2 come X. I risultati sono allegati come file .jrn. Di seguito è riportato uno snippet.

Quando esegui lo script:
- la tabella di contingenza contiene % totale, % colonna, % riga e Previsto?
- Ti suggerisco di commentare la riga 88 dello script che cancella la tabella creata dalla tabella di contingenza. Quindi esegui lo script. Viene creata una tabella e assomiglia a questa?

L'errore che hai segnalato sembra che non possa essere eseguito cmat = dt[idx,ccols]; idx è un indice di righe in cui Cell == "Count" o successivo "Expected" e ccols sono colonne continue che dovrebbero essere l'elenco {"0", "0.25", "0.5", "0.75", "1"}. Se i nomi delle celle non sono gli stessi, forse uno spazio aggiuntivo o qualcosa che potrebbe eliminare lo script, forse una soluzione più robusta è usare where Contiene(:Cell, "Count")
Sto solo indovinando qui.
Ri: Kappa ponderati@gzmorgan0
ad esempio questo set di dati. ogni colonna ha una valutazione diversa della stessa scala.
per favore fatemi sapere se riuscite a eseguirlo utilizzando lo script.
grazie molto,
Ron
Ri: Kappa ponderati@gzmorgan0 ,
questo è ciò che ottengo utilizzando il file di esempio Slide58, non i miei dati. produce lo stesso errore anche su JMP11 e JMP 15.
tutto quello che ho fatto è stato aprire il file ed eseguire lo script.
Grazie,
Ron
Ri: Kappa ponderati@ron_horne,
Per essere precisi, utilizzo JMP PRO. Ho testato su JMP PRO 13.2.1 e ho ottenuto gli stessi risultati.
Ri: Kappa ponderati@ron_horne , ciao.
Sono su JMP 14.3. Potresti inviare un esempio, una tabella di dati anonimizzata. Prima di dichiarare che si tratta di un problema di versione, vorrei verificarlo. Il mio script includeva alcuni controlli, tuttavia avrei potuto perdere un caso particolare.
Ri: Kappa ponderatigrazie @gzmorgan0 per la sceneggiatura,
Per qualche motivo ricevo un errore durante l'esecuzione dello script. sto usando JMP 14.2.
qualche indizio su come risolverlo?

Ri: Kappa ponderatiNon ho trovato una soluzione integrata alla tua domanda. Naturalmente JMP è in grado di farlo, ma necessita di uno script (a meno che uno degli sviluppatori JMP non abbia una soluzione alternativa).
Non hai segnalato quale versione di JMP e quale sistema operativo possiedi, quindi non sono sicuro che funzionerà per te. In allegato c'è uno script che ho testato su JMP 12,13 e 14. Utilizza metodi per essere retrocompatibile con JMP12. Esso :
- Viene eseguito sulla tabella dati corrente e richiama un'analisi di contingenza. In altre parole, utilizza l'interfaccia utente JMP.
- Lo script è scritto per un rapporto di contingenza, ovvero una variabile ordinale Y e una X.
- Specifica i valori previsti da includere nella tabella di contingenza per ridurre la complessità (e il rischio) degli errori di script.
- Crea una tabella dalla tabella di contingenza.
- Da ciò, crea le probabilità osservate e attese.
- Calcola il kappa standard dove la matrice dei pesi è la matrice Identità; a Peso lineare 1- abs(i - j)/(k-1); e un peso quadratico che è 1 - quadrato( (ij)/(k-1) ). Vedi i riferimenti riportati nello script.
- I valori di k, kL e kQ vengono aggiunti al report JMP (vedere di seguito).
- Il kappa calcolato viene riportato come controllo poiché dovrebbe corrispondere al kappa riportato da JMP
- Gli errori ponderati e gli intervalli di confidenza non vengono calcolati in questo script.
Questo potrebbe essere un elemento della lista dei desideri per le future versioni di JMP. Poiché alcuni riferimenti per kappa ponderato includono pesi più che lineari e quadratici per le categorie ordinali, è necessario specificare se questa voce dell'elenco dei desideri deve consentire pesi personalizzati.
È allegato lo script e un set di dati di esempio in cui la colonna n deve essere utilizzata come Freq. slide58.jmp è una tabella riassuntiva dal terzo riferimento riportato (pagina 58). È una delle 10 tabelle utilizzate per testare lo script. Spero che aiuti.
Re: Kappas pesatiScusate, ero in viaggio. In questo modo non ottengo una tabella di contingenza. Ho provato specificando X e Y e ho ottenuto lo stesso risultato. Ho semplicemente rimosso X e Y in modo da poterlo usare con qualsiasi tabella. Si apre semplicemente la finestra di dialogo per inserire 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 );
Quando eseguo questo comando, ottengo una tabella di contingenza, ma non viene aggiunto nulla:
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 pesatiHo provato esattamente lo stesso codice e ha funzionato fino a segnalare la tabella di contingenza, ma mostrava "Dimensionalmente errato" e non calcolava il kappa ponderato. (JMP18.01, Win11)
Re: Kappas pesatiSembra che ci sia un problema di linguaggio con JMP. Ho modificato "Cell" nello script in giapponese e funziona. Grazie per l'ottimo lavoro.