Fisher精确检验配对数据

机器算法验证 列联表 渔民精确测试 配对数据 mcnemar 测试
2022-03-22 08:25:09

给定40肺癌病例和40匹配对照(无肺癌)(根据年龄、性别等进行匹配)。为了试图找到吸烟对肺癌影响之间的证据,我在列联表上使用了费舍尔精确检验。然而,这并没有考虑到控制和案例是匹配的。

所以我想知道是否有一种方法可以使用Fisher精确检验来考虑两组之间的匹配?

4个回答

您需要 McNemar 的测试http://en.wikipedia.org/wiki/McNemar%27s_test,http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3346204/下面是一个例子:

研究了 1300 个点和 1300 个匹配的对照。吸烟状况如下表:

             Normal   
           |no  |yes|
Cancer|No  |1000|40 |
      |Yes |200 |60 |

表中的每个条目都显示了有关病例-对照对的信息:1000 表示在 1000 个病例-对照对中,既不是吸烟者。40 是病例对照对的数量,其中对照组是吸烟者,而癌症患者不是,依此类推。以下 R 代码可用于生成此表并进行 McNemar 测试。

mat = as.table(rbind(c(1000, 40), c( 200, 60) ))
colnames(mat) <- rownames(mat) <- c("Nonsmoker", "Smoker")
names(dimnames(mat)) = c("Cancer", "Normal")
mat
#                  Normal
#              Nonsmoker Smoker
# Cancer
#  Nonsmoker      1000     40
#  Smoker          200     60


mcnemar.test(mat)

#        McNemar's Chi-squared test with continuity correction
#
#data:  mat
#McNemar's chi-squared = 105.34, df = 1, p-value < 2.2e-16

McNemar 检验也用于评估干预对二元结果变量的影响。如上列出并测试这对前后结果。

编辑:扩展@gung 给出的示例,如果吸烟状态列在您的数据框 mydf 中,如下所示:

pairID  cancer  control
1       1       1
2       1       1
3       1       0
...

McNemars 测试可以使用以下 R 命令完成:

> tt = with(mydf, table(cancer, control))
> tt
      control
cancer 0 1
     0 5 1
     1 3 2

> mcnemar.test(tt)

        McNemar`s Chi-squared test with continuity correction

data:  tt
McNemar`s chi-squared = 0.25, df = 1, p-value = 0.6171

您是对的,Fisher 的精确检验不适合您的数据。您将不得不重新形成您的列联表。新表将用于pairs,因此它似乎有一半的数据表示(在你的情况下是 40 而不是 80)。例如,假设您的数据看起来像这样(每组配对的受试者都在自己的行中,并1表示吸烟者):

cancer  control
1       1
1       1
1       0
1       0
1       0
0       1
0       0
0       0
0       0
0       0
0       0

那么您的旧列联表可能是:

       cancer  control
smoker 5       3
non    6       8

您的新列联表将如下所示:

            control
cancer    smoker  non           
  smoker  2       3
  non     1       5

第一个列联表的总和为 22(您研究中的总受试者数),但第二个列联表的总和为 11(匹配对的数量)。

以这种方式表示您的数据,您感兴趣的是边际比例是否相同。对此的测试是McNemar 的测试我已经在这里这里解释了 McNemar 的测试。

不必使用配对测试。人口的匹配确定了 covaraites 的分布(年龄,...)在两个人口中是相同的,因此它不会“扭曲”图片。

该测试比较了总体的平均值,因此不需要配对个体。这只需要“重复”测量,例如比较同一人群治疗前后的menas。

是和否:

可能您的案例属于Pearce (2015)案例:文章中的重点是,您用于选择控制的变量应该在研究中而不是在测试中进行控制。由于 N = 80,这可能很困难。

希望这有帮助:)