在 R 或 python 中进行流行率调整偏差调整后 Kappa (PABAK) 的计算(两者都开放)

Conducting the calculations for Prevalence Adjusted bias Adjusted Kappa (PABAK) in R or python (Am open for both)

提问人:Bryan Timothy 提问时间:11/9/2023 最后编辑:Bryan Timothy 更新时间:11/14/2023 访问量:55

问:

[完成新手] 所以嗨,我目前在进行编码器间可靠性方面遇到了一些问题。因此,我所拥有的数据集是这样组织的(表 1)。当我使用软件包 tidycomm 中的函数 test_icr() 时,这种当前格式效果很好,但当我使用软件包 epiR 中的 epi.kappa() 时,这种格式就不行了。我现在面临的问题是 test_icr() 不提供流行率调整偏差调整器 Kappa (PABAK) 作为度量,而 epi.kappa() 提供。对于 epi.kappa(),我需要输入数据集如下所示(表 2)。所以我的问题是如何在不手动操作的情况下将当前的表 1 转换为表 2?或者test_icr有什么方法可以计算 PABAK?

a 是两个编码员同意“存在”的次数

b 是编码器 2 指示“存在”,但编码器 1 指示“不存在”的次数

c 是 Coder 2 指示“不存在”,但 Coder 1 指示“存在”的次数

d 是两个编码员都同意“缺席”的次数

我尝试手动执行此操作,并且对如何执行此操作非常不熟悉。我尝试在 excel 中使用透视,但 excel 无法按照我想要的方式重新排列数据

[表格][1] [1]:https://i.stack.imgur.com/IS0Ff.png

ChatGPT 为 R 生成的示例代码:

# Create a function to calculate a, b, c, and d for a specific 
response
calculate_a_b_c_d <- function(data, question_column, response) {
a <- sum(data[[question_column]] == response & data$`Coder ID` == 
1 & duplicated(data$`Post ID`))
b <- sum(data[[question_column]] == response & data$`Coder ID` == 
1 & data[[question_column]] != response & data$`Coder ID` == 2 & 
duplicated(data$`Post ID`))
c <- sum(data[[question_column]] != response & data$`Coder ID` == 
1 & data[[question_column]] == response & data$`Coder ID` == 2 & 
duplicated(data$`Post ID`))
d <- sum(data[[question_column]] != response & data$`Coder ID` == 
1 & duplicated(data$`Post ID`))

return(c(a, b, c, d))
}  

# Create a data frame with corrected column names
'''R
data <- data.frame(
'Coder ID' = c(1, 1, 2, 2, 1, 2),
'Post ID' = c(70, 71, 70, 71, 72, 72),
'Question 1' = c('Present', 'Absent', 'Present', 'Absent', 
'Absent', 'Absent'),
'Question 2' = c('Present', 'Present', 'Absent', 'Present', 
'Present', 'Present')
 )  
# Calculate values a2, b2, c2, and d2 for 'Present' in Question 2
 
 results_question2_present <- calculate_a_b_c_d(data, 'Question 
 2', 'Present') 

# Create a data frame with corrected column names
 data <- data.frame(
 'Coder ID' = c(1, 1, 2, 2, 1, 2),
 'Post ID' = c(70, 71, 70, 71, 72, 72),
 'Question 1' = c('Present', 'Absent', 'Present', 'Absent', 
 'Absent', 'Absent'),
 'Question 2' = c('Present', 'Present', 'Absent', 'Present', 
 'Present', 'Present')
  )  
# Calculate values a2, b2, c2, and d2 for 'Present' in Question 2
results_question2_present <- calculate_a_b_c_d(data, 'Question 2', 
'Present')

# Calculate values a2, b2, c2, and d2 for 'Absent' in Question 2
results_question2_absent <- calculate_a_b_c_d(data, 'Question 2', 
'Absent')

# Create Table 2 for Question 2
table2_question2 <- data.frame(
'Coder 2 Present' = c(results_question2_present[1], 
results_question2_absent[1]),
'Coder 2 Absent' = c(results_question2_present[2], 
 results_question2_absent[2]),
 row.names = c('Coder 1 Present', 'Coder 1 Absent')
 )

# Print Table 2 for Question 2
cat("Table 2 for Question 2:\n")
print(table2_question2)
Python DataFrame R-Package Cohen-Kappa

评论


答: 暂无答案