使用 R 确定两种算法之间特异性的 p 值

问题描述 投票:0回答:1

在 R 中,我有一个看起来像这样的数据框(2000 多行):

Sample  AlgoA   AlgoB
A   FP  TP
B   TN  TN
C   TP  TP
D   FN  TP
E   FP  FP
F   TN  TN
G   TP  TP

TN/TP 等是通过将算法与真值集进行比较而得出的。

我通过进行常规计算生成了规格/感知值,并且还生成了 95% CI。

我现在只需要看看两组之间是否存在统计差异。这种情况我该怎么办? AlgoA 和 AlgoB 完全无关,只是两种不同的实验室方法。

r statistics statistical-test
1个回答
0
投票

Trajman & Luiz (2008) 提倡使用对照的 McNemar 检验来比较特异性。

library(dplyr)

set.seed(42)

P <- c("TP", "FN")
N <- c("TN", "FP")

data <- tibble(
  sample = 1:100, 
  truth = sample(0:1, 100, TRUE),
  algo_a = if_else(truth == 0, sample(N, 100, TRUE), sample(P, 100, TRUE)),
  algo_b = if_else(truth == 0, sample(N, 100, TRUE), sample(P, 100, TRUE))
) %>% 
  select(sample, algo_a, algo_b)

data %>% 
  filter(algo_a %in% N) %>% # controls only: same as `algo_b %in% N` or `truth == 0`
  count(algo_a, algo_b) %>% 
  pull(n) %>%
  matrix(nrow = 2) %>% 
  mcnemar.test()
#> 
#>  McNemar's Chi-squared test with continuity correction
#> 
#> data:  .
#> McNemar's chi-squared = 2.7222, df = 1, p-value = 0.09896

创建于 2024-04-12,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.