提问人:Bryan Timothy 提问时间:11/9/2023 最后编辑:Bryan Timothy 更新时间:11/14/2023 访问量:55
在 R 或 python 中进行流行率调整偏差调整后 Kappa (PABAK) 的计算(两者都开放)
Conducting the calculations for Prevalence Adjusted bias Adjusted Kappa (PABAK) in R or python (Am open for both)
问:
[完成新手] 所以嗨,我目前在进行编码器间可靠性方面遇到了一些问题。因此,我所拥有的数据集是这样组织的(表 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)
答: 暂无答案
评论