加權卡帕斯您好,我們有一項研究,兩位評估者對 50 個項目的品質進行 1-4 級評分。我們想在 JMP 中進行加權 kappa;我輸入了數據,將數據類型設為序數,但當我用 X 擬合 Y 並查看一致性統計量時,JMP 似乎只產生簡單的 Kappa。
JMP 是否能夠計算加權 kappa?
先致謝!
回覆:加權 Kappas你真的有列聯表嗎?我沒有看到您在表中指定 X 和 Y。以下程式碼適用於我的系統(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);
回覆:加權 Kappas我一開始確實嘗試過,但沒有成功。我將其更改為“沒有功能”,因為這是我的腳本的名稱。我更改了腳本以匹配 Weighted Kappa Function.jsl,但它仍然不起作用。我遇到了同樣的錯誤
加權 Kappa.jsl 透過閉合路徑包含自身:
加權 Kappa.jsl 存取或評估 'Include' ,
Include/*###*/("加權 Kappa 函數.jsl")
這是我使用該函數放置的程式碼:
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);
回覆:加權 Kappas你需要說
include("Weighted Kappa Function.jsl");
回覆:加權 Kappas抱歉,我在 Mac 上使用 JMP Pro 17.0.0。我嘗試了你的方法,但它不斷重複路徑。所以我把它改為:
dt = open("Subset of Data for Kappa index.jmp");
Include("Weighted Kappa.jsl" );它確實打開了文件(我首先在此處嘗試該文件,我的文件有點複雜,我想確保它與此處的文件一起使用),但隨後我收到以下錯誤:
加權 Kappa.jsl 透過閉合路徑包含自身:
加權 Kappa.jsl 存取或評估 'Include' ,
Include/*###*/("加權 Kappa.jsl")
回覆:加權 Kappas請參閱附件
回覆:加權 Kappas@lcmaley ,
我必須清除一些鏽跡,因為從那時起我已經很多年沒有看過我的劇本了。
您應該始終提及您正在使用的 JMP 版本。也就是說,我建議您使用@ghartel在 2021 年發布的解決方案。
下載@ghartel帖子中提供的 Weighted Kappa Function.jsl,並將其儲存到腳本的磁碟機中。
請注意,加權 Kappa 函數解包括標準誤差和置信限,以及 By 變數;我的腳本沒有。 @ghartel的解決方案是一個更好的解決方案。
下面是我用於執行加權 Kappa 函數的 JSL,用於我的原始腳本提供的範例表。請參閱隨附的 JMP 表 slip58.jmp 結果螢幕截圖。
筆記:
- Udir 可以是您想要的任何驅動器,資料表和函數可以位於不同的目錄中。
- 您不需要調出應急方案的每個選項,很可能您已經設定了預設值。但是,計數和預期需要包含在緊急平台選項中或在腳本中呼叫。
感謝@ghartel的出色功能!
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);
回覆:加權 Kappas我正在嘗試使用你的腳本,我把它放在最後,
dt0 = Current Data Table();
CT = dt0 << Contingency(
Contingency Table( Expected( 1 )), Agreement Statistic( 1 ), Tests(0) );
WeightedKappa( CT );
它不起作用,沒有附加任何內容。我究竟做錯了什麼?
我收到一條錯誤訊息,說它不是列聯表,然後沒有附加任何內容。建議?
回覆:加權 Kappas大家好,
我無法讓這個腳本按原樣運行,無論如何我想要一個在腳本中使用的函數而不是互動的東西,所以我調整了這個程式碼來創建一個函數。我還添加了標準誤差和漸近置信區間的計算以及 BY 變數的處理。
要使用它,只需將其包含在腳本中,執行應急分析並將其分配給變量,然後將其傳遞給函數。此函數將向每個 Kappa 表格新增一個大綱項,給出線性和二次加權 Kappa。如果您發現任何錯誤,請告訴我。
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
回覆:加權 Kappas謝謝@gzmorgan0 ,
我確實設法逐行運行它,但不是作為一個函數。這是最大的驚喜。無論如何,我確實設法產生實際數字,而且我不需要多次這樣做,所以我很好。
非常感謝,
榮恩
回覆:加權 Kappas嗨羅恩, @ron_horne 。
這麼晚才回覆很抱歉。我運行了加權 Kappa 腳本,而您的子集表是當前資料表。我將 BP1 指定為 Y,將 BP2 指定為 X。結果作為 .jrn 檔案附加。下面是一個片段。

當您執行腳本:
- 列聯表是否包含總計 %、列 %、行 % 和預期?
- 我建議您註解掉腳本的第 88 行,該行刪除從列聯表建立的表。然後運行腳本。是否創建了一個表並且它看起來像這樣嗎?

您報告的錯誤似乎無法執行 cmat = dt[idx,ccols]; idx 是 Cell == "Count" 或更高版本 "Expected" 的行索引,ccols 是連續列,應為列表 {"0", "0.25", "0.5", "0.75", "1"}。如果儲存格名稱不同,可能是額外的空格或可能導致腳本失效的內容,也許更可靠的解決方案是使用 where Contains(:Cell, "Count")
這裡只是猜測。
回覆:加權 Kappas@gzmorgan0
例如這個資料集。每個欄位對同一量表都有不同的評估。
如果您設法使用該腳本運行它,請告訴我。
非常感謝,
榮恩
回覆:加權 Kappas@gzmorgan0 ,
這是我使用範例文件 Slide58 得到的結果,而不是我自己的資料。它也會在 JMP11 和 JMP 15 上產生相同的誤差。
我所做的就是打開文件並運行腳本。
謝謝你,
榮恩
回覆:加權 Kappas@ron_horne,
具體來說,我使用 JMP PRO。我在 JMP PRO 13.2.1 上進行了測試,得到了相同的結果。
回覆:加權 Kappas@ron_horne ,你好。
我使用的是 JMP 14.3。您能否發送一個範例,一個匿名資料表。在宣布它是版本問題之前,我想檢查一下。我的腳本包含一些檢查,但是,我可能錯過了一個極端情況。
回覆:加權 Kappas謝謝@gzmorgan0的腳本,
由於某種原因,我在運行腳本時遇到錯誤。我正在使用 JMP 14.2。
任何線索如何修復它?

回覆:加權 Kappas我沒有找到您問題的內建解決方案。 JMP 當然有能力,但它需要一個腳本(除非 JMP 開發人員之一有替代解決方案)。
您沒有報告您擁有哪個版本的 JMP 以及哪個作業系統,因此我不確定這是否適合您。附件是我在 JMP 12,13 和 14 上測試過的腳本。它使用向後相容 JMP12 的方法。它 :
- 在目前資料表上執行並呼叫應急分析。換句話說,它使用 JMP UI。
- 該腳本是為一份應急報告編寫的,即一個 Y 和一個 X 序數變數。
- 指定列聯表中包含的預期值,以降低腳本錯誤的複雜度(和風險)。
- 從列聯表建立一個表。
- 由此,它創建了觀察到的和預期的機率。
- 它計算標準 kappa,其中權重矩陣是單位矩陣; a 線性權重 1- abs(i - j)/(k-1);以及二次權重,即 1 - square( (ij)/(k-1) )。請參閱腳本中報告的參考文獻。
- k、kL 和 kQ 的值附加到 JMP 報告中(見下文)。
- 計算出的 kappa 將報告為檢查,因為它應與 JMP 報告的 kappa 相符
- 此腳本中不計算加權誤差和信賴區間。
這可能是未來 JMP 版本的願望清單項目。由於加權 kappa 的一些參考不僅包括序數類別的線性和二次權重,因此您應該指定此願望清單項目是否允許自訂權重。
附加了腳本和範例資料集,其中第n列應用作Freq。 Slide58.jmp 是第三個報告參考文獻(第 58 頁)的總結表。它是用於測試腳本的 10 個表之一。我希望這有幫助。
回覆:加權 Kappas抱歉,我正在旅行。這樣我就得不到列聯表。我嘗試使用指定的 X 和 Y 進行操作,並得到了相同的結果。我剛剛把 X 和 Y 取出來,這樣就可以將它與任何表一起使用。它只是彈出一個對話框讓我輸入 X 和 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 );
當我運行這個程式時,我確實得到了一個列聯表,但是沒有附加任何內容:
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 />
回覆:加權 Kappas我嘗試了完全相同的程式碼,它可以報告列聯表,但它顯示「維度錯誤」並且沒有計算加權 kappa。 (JMP18.01,Win11)
回覆:加權 Kappas這似乎是 JMP 的語言問題。我把腳本中的「單元格」修改成了日語,現在可以正常工作了。謝謝你的辛苦付出。