McNemar检验和卡方检验有什么区别,您如何知道何时使用它们?


30

我尝试阅读不同的资料,但仍不清楚哪种测试适合我的情况。关于数据集,我要问三个不同的问题:

  1. 在不同的时间测试受试者的X感染。我想知道X之后的X的正比例与X之前的X的正比例是否相关:

                 After   
               |no  |yes|
    Before|No  |1157|35 |
          |Yes |220 |13 |
    
    results of chi-squared test: 
    Chi^2 =  4.183     d.f. =  1     p =  0.04082 
    
    results of McNemar's test: 
    Chi^2 =  134.2     d.f. =  1     p =  4.901e-31
    

    根据我的理解,由于数据是重复测量的,所以我必须使用麦克尼马尔检验,该检验用于检验X的正数比例是否已更改。

    但是我的问题似乎需要卡方检验-测试X之后的阳性比例是否与X之前的阳性比例相关。

    我什至不确定我是否正确理解了麦克尼马尔检验与卡方检验之间的区别。如果我的问题是:“与以前不同的X感染对象的比例是多少?”将是正确的检验方法?

  2. 类似的情况,但我在某个时间点测量了两种不同的感染,而不是之前和之后:

            Y   
          |no  |yes|
    X|No  |1157|35 |
     |Yes |220 |13 |
    

    如果问题是“一种感染的较高比例是否与Y较高比例相关”,那么哪个测试对这里正确?

  3. 如果我的问题是“在时间t2的感染Y是否与在时间t1的感染X相关?”,哪个测试合适?

                  Y at t2   
                |no  |yes|
    X at t1|No  |1157|35 |
           |Yes |220 |13 |
    

在所有这些情况下,我都使用McNemar的测试,但是我怀疑这是否是回答我的问题的正确测试。我正在使用R。可以glm代替二项式吗?这类似于卡方检验吗?


1
您是否尝试过在Mcnemar测试中阅读stats.stackexchange.com/questions/tagged/mcnemar-test主题?
ttnphns

“两个概率之间的关系”是什么意思?
Michael M

@ttnphns我确实通过了它们,但是无法将其重新格式化为我的问题。经过更多的思考,似乎我可以根据Q1回答两个问题:Chi-sq会告诉我+之后的+ ve X的比例是否与之前+ ve X的比例有关,而Mcnemar会告诉我是否存在改变比例。我对吗?
Anto

你不能用一个标准的,因为每个人是通过使非随机抽样的两个值来表示-测试的独立性在这里。χ2
Michael M

谢谢@MichaelMayer。我一直在使用mcnemar的,直到看到为止。在解释麦克内马尔的地方,他说在同一情况下做奇数平方会回答什么。我很困惑。本页上每项测试告诉我们的方式,我必须选择Chi-sq,但是由于它们是针对同一主题的测量,因此我必须选择McNemar。
安托

Answers:


48

不幸的是,麦克尼玛的测验很难让人理解。我什至注意到在其Wikipedia页面的顶部,它指出该页面上的解释使人们难以理解。McNemar检验的典型简短解释是:“受试者内部卡方检验”或“对列联表的边际均匀性的检验”。我发现这些都不是很有帮助。首先,不清楚“对象内卡方”的含义,因为您总是两次测量主题(一次在每个变量上),并试图确定这些变量之间的关系。此外,“边际同质性” (可悲的是,即使这个答案也可能令人困惑。如果是这样,那么可能有助于阅读下面的第二次尝试。)

让我们看看我们是否可以对您的最佳示例进行推理,以了解我们是否可以理解McNemar的测试是否合适(如果可以,为什么)。您已输入:

在此处输入图片说明

这是列联表,因此表示卡方分析。此外,您想了解A f t e r之间的关系,并且卡方检验检查变量之间的关系,因此乍一看似乎卡方检验必须是回答您问题的分析。 BeforeAfter

但是,值得指出的是,我们还可以像这样显示这些数据:

在此处输入图片说明

当您以这种方式查看数据时,您可能会认为可以进行常规的旧检验。但是,t检验并不完全正确。有两个问题:首先,因为每一行都列出了从同一主题测得的数据,所以我们不想进行对象间的t检验,而希望进行对象内的t检验。其次,由于这些数据以二项式分布,因此方差是均值的函数。这意味着一旦估计了样本均值(即,您不必随后估计方差),就无需担心其他不确定性,因此您不必参考t分布,可以使用žtttttz分配。(更多关于这一点,它可以帮助读到这里我的答案是: -test主场迎战χ 2测试zχ2)。因此,我们需要一个试内 -测试。就是说,我们需要进行主题内是否相等的测试。 z

我们已经看到,有两种不同的方式来考虑和分析这些数据(由两种不同的查看数据方式来提示)。因此,我们需要决定应该使用哪种方式。卡方检验评估A f t e r是否独立。也就是说,事先患病的人比从未患病的人更容易患病。鉴于这些测量是在同一主题上进行评估的,因此很难想象情况并非如此。如果确实得到了不重要的结果(就像您几乎做到的那样),那将仅仅是II型错误。相反,是否Ë ˚FBeforeAfter一个˚F 牛逼é [R是独立的,你几乎可以肯定想知道,如果污水处理厂(一问题卡方没有接听)。这与您想查看均值是否相等的任何数量的治疗与对照研究非常相似,只是在这种情况下,您的测量结果为是/否,并且在受试者内。考虑一个更典型的牛逼BeforeAftert试验情况在治疗前后测量血压。那些事先在样本平均点以上的bp的人几乎肯定会在之后出现在较高的bps之中,但是您不想知道排名的一致性,您想知道治疗是否导致平均bp的变化。您在这里的情况直接相似。 具体来说,您要运行主题内的 -tests进行相等的比例测试。那就是麦克尼马尔的考验。z

因此,在意识到我们要进行McNemar的测试后,它如何工作?运行主体间 -test很容易,但是如何运行主体间版本?了解如何进行对象内部比例测试的关键是检查列联表,该表将比例分解z
显然,Ë˚FöřË比例是行的总数由整体总划分,和˚Féř比例列总计由整体总分开。当我们查看列联表时,我们可以看到它们是,例如:在比例之前= =220+13

AfterNoYestotalBeforeNo1157351192Yes22013233total1377481425
BeforeAfter
有趣的是,前后有13个观察结果是肯定的。它们最终成为两个比例的一部分,但是由于两次计算都没有添加有关yes比例变化的明确信息。此外,它们被计数两次,这是无效的。同样,总体总数最终出现在两个计算中,并且不添加任何不同的信息。通过分解比例,我们能够认识到关于yes和before和after比例的唯一区别信息存在于22035中,因此这是我们需要分析的数字。这是麦克尼马尔的见识。此外,他意识到在零值下,这是220/
Before proportion yes=220+131425,After proportion yes=35+131425
1322035而不是 0.5的无效部分。(有一个等效的公式以卡方分布,这就是输出。) 220/(220+35).5R

关于McNemar的测试,还有另一个讨论,此处扩展了大于2x2的列联表。


这是一个R包含您的数据的演示:

mat = as.table(rbind(c(1157, 35), 
                     c( 220, 13) ))
colnames(mat) <- rownames(mat) <- c("No", "Yes")
names(dimnames(mat)) = c("Before", "After")
mat
margin.table(mat, 1)
margin.table(mat, 2)
sum(mat)

mcnemar.test(mat, correct=FALSE)
#  McNemar's Chi-squared test
# 
# data:  mat
# McNemar's chi-squared = 134.2157, df = 1, p-value < 2.2e-16
binom.test(c(220, 35), p=0.5)
#  Exact binomial test
# 
# data:  c(220, 35)
# number of successes = 220, number of trials = 255, p-value < 2.2e-16
# alternative hypothesis: true probability of success is not equal to 0.5
# 95 percent confidence interval:
#  0.8143138 0.9024996
# sample estimates:
# probability of success 
#              0.8627451 

如果我们不考虑您数据的主题内性质,那么对比例相等性的检验将稍微没有那么强大:

prop.test(rbind(margin.table(mat, 1), margin.table(mat, 2)), correct=FALSE)
#  2-sample test for equality of proportions without continuity
#  correction
# 
# data:  rbind(margin.table(mat, 1), margin.table(mat, 2))
# X-squared = 135.1195, df = 1, p-value < 2.2e-16
# alternative hypothesis: two.sided
# 95 percent confidence interval:
#  0.1084598 0.1511894
# sample estimates:
#    prop 1    prop 2 
# 0.9663158 0.8364912 

X-squared = 133.6627chi-squared = 134.215713N=2850N=1425


以下是您的具体问题的答案:

  1. 正确的分析是McNemar的检验(如上所述)。
  2. 这个版本比较棘手,措辞“确实是一种感染的较高比例与Y的较高比例有关”。有两个可能的问题:

    • 想要知道感染其中一种感染的患者是否倾向于另一种感染是完全合理的,在这种情况下,您将使用卡方独立性检验。这个问题问的是,两种不同感染的易感性是独立的(可能是因为它们通过不同的生理途径收缩)还是不是独立的(也许是由于免疫系统普遍减弱而收缩)。
    • 知道是否有相同比例的患者倾向于同时感染两种感染也是完全合理的,在这种情况下,您将使用McNemar检验。这里的问题是有关感染是否同样具有毒性。
  3. 由于这再次是相同的感染,因此它们当然是相关的。我认为此版本不是在治疗之前和之后,而是在稍后的某个时间点。因此,您要询问背景感染率是否正在自然变化,这又是一个完全合理的问题。无论如何,正确的分析是麦克尼马尔的检验。
    编辑:看来我可能是由于错字误解了您的第三个问题。我现在将其解释为在两个不同的时间点的两种不同的感染。根据这种解释,卡方检验将是适当的。

@Alexis据我所知,您和gung似乎互相交谈。即使是所谓的“未配对”或“独立样本” t检验,或“单向”或“独立样本方差分析”,实际上也需要配对意义上的配对数据:对于每个主题,您都必须记录两个类别成员变量连续结果变量。(如果组成员资格变量具有两个级别,我们通常使用不成对的t检验;对于3个以上级别,您需要单向方差分析)。
银鱼

2
在解释使用哪种测试时,我会展示两种查看方式-如果您观察到连续变量,每个主题一个,并且主题来自2个(或3+个)组,并且您对之间的差异感兴趣分组,然后使用独立样本t检验(或单向方差分析)。然后,通过查看数据表来确认您的选择:对于每个主题,您是否有两条信息:组成员身份的类别和连续变量。我们甚至可以扭转局面,说t检验是二进制和连续变量之间关联的一种检验
银鱼

2
如果对于每个受试者,您有两个(或3个以上)连续读数(在不同条件下获取),并且想要测试条件之间的差异,则使用配对t检验(或相关样本ANOVA)。这在不同意义上是“配对”的。但是在这个问题上,我们为每个主题记录了两个类别变量。查看数据表,这些分类变量的记录值必须成对出现。但这并不意味着研究设计本身就是成对的。这令人困惑(如gung所述)。但是,如果您知道自己的研究设计,就可以解决它(正如亚历克西斯笔记所述)
Silverfish

@Silverfish如果您对每个主题有两个(具有相同名义变量的)观察结果,那么从什么意义上说这不是成对的设计?
亚历克西斯(Alexis)2015年

1
@Alexis这是“相同变量”的关键,它可能会引起混淆。您可能知道它代表相同的变量,尽管在不同的条件下或在不同的时间,但是根据我们布置数据表的方式,它们似乎被记录为不同的变量(例如,单独的“之前”和“之后”变量)。
银鱼

22

好吧,看来我已经对此做了一个哈希。让我尝试以另一种方式再次解释这一点,我们将看看它是否有助于解决问题。

解释McNemar检验与卡方检验的传统方法是询问数据是否“配对”,并建议McNemar检验数据是否配对,而卡方检验则推荐数据是否“未配对”。我发现这引起很多混乱(该线程就是一个例子!)。代替此,我发现将重点放在您要提出的问题上,并使用与您的问题匹配的测试是最有用的。为了使这一点更加具体,让我们看一个组合方案:

您在统计会议上走来走去,对于遇到的每个统计学家,都要记录他们是来自美国还是来自英国。您还记录他们是高血压还是正常血压。

数据如下:

mat = as.table(rbind(c(195,   5),
                     c(  5, 195) ))
colnames(mat)        = c("US", "UK")
rownames(mat)        = c("Hi", "Normal")
names(dimnames(mat)) = c("BP", "Nationality")
mat
#         Nationality
# BP        US  UK
#   Hi     195   5
#   Normal   5 195

在这一点上,弄清楚我们要对数据提出什么问题很重要。我们可以在这里提出三个不同的问题:

  1. 我们可能想知道分类变量BPNationality是相关的还是独立的。
  2. 我们可能想知道,高血压在美国统计学家中是否比在英国统计学家中更普遍?
  3. 最后,我们可能想知道高血压统计学家的比例是否等于我们所讨论的美国统计学家的比例。这是指表格的边际比例。这些不是默认情况下在R中打印的,但是我们可以这样得到它们(请注意,在这种情况下,它们是完全相同的):

    margin.table(mat, 1)/sum(mat)
    # BP
    #    Hi Normal 
    #   0.5    0.5 
    margin.table(mat, 2)/sum(mat)
    # Nationality
    #  US  UK 
    # 0.5 0.5 

正如我所说,许多教科书中都讨论了传统方法,即根据数据是否“配对”来确定要使用哪种测试。但这很令人困惑,这个列联表是否“配对”了?如果我们将美国和英国的统计学家之间高血压的比例进行比较,则您正在比较在不同人群上测得的两个比例(尽管变量相同)。另一方面,如果要将高血压比例与US比例进行比较,则需要比较在同一组人身上测得的两个比例(尽管变量不同)。这些数据是同时“配对”和“未配对”(尽管就数据的不同方面而言)。这导致混乱。为了避免这种混乱,我认为您应该从询问哪个问题的角度考虑。具体来说,如果您想知道:

  1. 如果变量是独立的:请使用卡方检验。
  2. 如果高血压比例因国籍而异:请使用z检验对比例差异进行调整。
  3. 如果边际比例相同:请使用McNemar检验。

这里有人可能会不同意我的说法,因为列联表不是“成对的”,因此不能使用McNemar的检验来检验边际比例的相等性,而应使用卡方检验。既然这是争论的焦点,那么让我们一起尝试看看结果是否有意义:

chisq.test(mat)
#  Pearson's Chi-squared test with Yates' continuity correction
# 
# data:  mat
# X-squared = 357.21, df = 1, p-value < 2.2e-16
mcnemar.test(mat)
#  McNemar's Chi-squared test
# 
# data:  mat
# McNemar's chi-squared = 0, df = 1, p-value = 1

50%=50%

让我们尝试另一个示例:

mat2 = as.table(rbind(c(195, 195),
                      c(  5,   5) ))
colnames(mat2)        = c("US", "UK")
rownames(mat2)        = c("Hi", "Normal")
names(dimnames(mat2)) = c("BP", "Nationality")
mat2
#         Nationality
# BP        US  UK
#   Hi     195 195
#   Normal   5   5
margin.table(mat2, 1)/sum(mat2)
# BP
#     Hi Normal 
#  0.975  0.025 
margin.table(mat2, 2)/sum(mat2)
# Nationality
#  US  UK 
# 0.5 0.5 

97.5%50%

chisq.test(mat2)
#  Pearson's Chi-squared test
# 
# data:  mat2
# X-squared = 0, df = 1, p-value = 1
mcnemar.test(mat2)
#  McNemar's Chi-squared test with continuity correction
# 
# data:  mat2
# McNemar's chi-squared = 178.605, df = 1, p-value < 2.2e-16

这次,卡方检验的p值为1,这意味着边际比例尽可能相等。但是我们发现边际比例显然很不相等,因此根据我们的数据,这个结果没有任何意义。另一方面,McNemar的检验得出的p值大约为0。换句话说,如果人口中的边际比例确实相等,则极不可能获得与平等程度相差甚远的数据。由于我们观察到的边际比例远非相等,因此该结果有意义。

根据我们的数据,卡方检验得出的结果毫无意义,这表明在此处使用卡方检验存在错误。当然,麦克尼马尔检验提供了有意义的结果这一事实并不能证明它是有效的,这可能只是一个巧合,但是卡方检验显然是错误的。

让我们看看我们是否可以解决为什么麦克尼玛的测试可能是正确的争论。我将使用第三个数据集:

mat3 = as.table(rbind(c(190,  15),
                      c( 60, 135) ))
colnames(mat3)        = c("US", "UK")
rownames(mat3)        = c("Hi", "Normal")
names(dimnames(mat3)) = c("BP", "Nationality")
mat3
#         Nationality
# BP        US  UK
#   Hi     190  15
#   Normal  60 135
margin.table(mat3, 1)/sum(mat3)
# BP
#     Hi Normal 
# 0.5125 0.4875 
margin.table(mat3, 2)/sum(mat3)
# Nationality
#    US    UK 
# 0.625 0.375 

51.25%62.5%

prop.test(x=c(205, 250), n=c(400, 400))
#  2-sample test for equality of proportions with continuity correction
# 
# data:  c(205, 250) out of c(400, 400)
# X-squared = 9.8665, df = 1, p-value = 0.001683
# alternative hypothesis: two.sided
# 95 percent confidence interval:
#   -0.18319286 -0.04180714
# sample estimates:
# prop 1 prop 2 
# 0.5125 0.6250 

(要prop.test()测试边际比例,我必须手动输入“成功”的数量和“试验”的总数,但是您可以从输出的最后一行看到比例是正确的。)这表明考虑到我们拥有的数据量,如果它们实际上是相等的,则不可能从平等中获得如此远的边际比例。

这个测试有效吗?这里有两个问题:测试认为我们有800个数据,而实际上我们只有400个数据。此测试也没有考虑到这两个比例不是独立的,因为它们是在同一个人上测量的。


% high BP: 190+15400% US: 190+60400
1904001560π=.5在null下。那是麦克尼马尔的见识。实际上,McNemar的检验本质上只是一个二项式检验,用于确定观察是否同样有可能落入这两个单元中:
binom.test(x=15, n=(15+60))
#  Exact binomial test
# 
# data:  15 and (15 + 60)
# number of successes = 15, number of trials = 75, p-value = 1.588e-07
# alternative hypothesis: true probability of success is not equal to 0.5
# 95 percent confidence interval:
#   0.1164821 0.3083261
# sample estimates:
# probability of success 
#                    0.2 

在此版本中,仅使用信息量大的观测值,并且不会被计算两次。这里的p值要小得多,为0.0000001588,这在考虑数据的相关性时通常是这种情况。也就是说,该检验比比例差异的z检验更强大。我们可以进一步看到上述版本与McNemar的测试基本相同:

mcnemar.test(mat3, correct=FALSE)
#  McNemar's Chi-squared test
# 
# data:  mat3
# McNemar's chi-squared = 27, df = 1, p-value = 2.035e-07

如果非同一性令人困惑,则通常使用McNemar检验,在R中对结果求平方,然后将其与卡方分布进行比较,这与上面的二项式方法并不完全相同:

(15-60)^2/(15+60)
# [1] 27
1-pchisq(27, df=1)
# [1] 2.034555e-07

因此,当您要检查列联表的边际比例是否相等时,McNemar的检验(或手动计算的精确二项式检验)是正确的。它仅使用相关信息,而不会两次非法使用任何数据。产生数据意义的结果不只是“发生”。

我仍然认为,试图找出一个偶合表是否“配对”是没有帮助的。我建议使用与您要查询的数据相匹配的测试。


1
你得到我的投票。:)
Alexis

11

χ2χ2


χ2

例如,您可能有一个来自美国的20名统计学家的样本,以及一个来自英国的37个统计学家的独立样本,并评估了这些统计学家是高血压还是血压正常。您的零假设是,英国和美国的统计学家都有相同的潜在高血压可能性(即,知道一个人来自美国还是来自英国,并不能告诉您高血压的可能性)。当然,每个组中可能有相同的样本量,但这不会改变样本是独立的(即,不成对的)的事实。


χ2

例如,您可能从国际统计学家会议上获得了单独匹配的病例对照研究数据,其中30位患有高血压的统计学家(病例)和30位没有高血压的统计学家(对照;他们分别按年龄,性别,BMI和吸烟状况进行匹配) (针对特定情况),对英国的专业居住权与其他地方的居住权进行回顾性评估。无效的是,病例之间在英国居住的可能性与在对照组中居住在英国的可能性相同(即,知道一个人的高血压状态并不能说明一个人在英国的居住历史)。

rsχ2=[(rs)1]2(r+s)

在您的示例中,Anto将您的数据配对(同一变量在同一主题中两次测量),因此McNemar的测试是关联测试的适当选择。

[gung和我不同意关于较早答案的时间。]

带引号的参考文献
“假设我们仍然对比较比例感兴趣,如果我们的数据是配对的而不是独立的,该怎么办? ……在这种情况下,我们使用McNemar检验。” –Pagano和Gauvreau,《生物统计学原理》,第二版版,第349页。[ 添加重点 ]

“该表达式被称为McNemar 匹配对检验统计量(McNemar,1949),并且一直是匹配对分析的支柱。” — Rothman,Greenland和Lash。现代流行病学,286页。[ 添加重点 ]

“成对的t检验和方差分析的重复测量可用于分析实验,在该实验中,可以以区间尺度测量正在研究的变量(并满足参数方法的其他假设)。与实验相似的是什么呢?在第5章,那里的结局是在测量标称规模?这个问题问了一个人是否没有回应治疗或比较的是分类的积极或消极的两种不同的诊断测试的结果时,当经常出现在同一个人我们将在这样一项研究的背景下,开发一种程序来分析此类实验,这是麦克内马尔对变化的检验。”-格兰茨生物统计学入门,第7版,第200页[χ2

“对于每个病例只有一个对照的匹配病例对照数据,结果分析很简单,而适当的统计检验是麦克尼马尔的卡方检验……请注意,对于比值比和统计量的计算,唯一的贡献者是是在暴露方面完全不同,即暴露了病例但对照没有暴露的,以及暴露了对照但病例没有暴露的对。”-艾尔伍德。流行病学研究和临床试验的关键评估,第一版,第189-190页。[ 重点添加 ]


7

我对McNemar检验的理解如下:它用于查看干预是否对二元结果产生重大影响。在您的示例中,检查了一组受试者是否感染,并且响应记录为是或否。然后,对所有受试者进行某种干预,比如说一种抗生素药物。然后再次检查它们是否被感染,并再次将回答记录为是/否。(成对的)响应可以放在应急表中:

             After   
           |no  |yes|
Before|No  |1157|35 |
      |Yes |220 |13 |

McNemar的测试将适用于此。

从表中可以清楚地看到,从“是”转换为“否”(220 /(220 + 13)或94.4%)比从“否”转换为“是”(35 /(1157 + 35)或2.9)要多得多%)。考虑这些比例,McNemar的P值(4.901e-31)似乎比卡方P值(0.04082)更正确。

如果应急表代表2种不同的感染(问题2),则卡方比较合适。

您的第三个问题是模棱两可的:首先声明将t2处的Y与t1处的Y相关联,但在表中,您在t1处相对于Y在t2处写入了“ X”。t2处的Y与t1处的Y与您的第一个问题相同,因此需要McNemar检验,而t1处的X和t2处的Y表示正在比较不同的事件,因此卡方更为合适。

编辑:正如亚历克西斯(Alexis)在评论中提到的那样,匹配的病例对照数据也通过麦克尼马尔(McNemar)的检验进行了分析。例如,招募了1425名癌症患者进行研究,还为每名患者招募了匹配的对照。检查所有这些(1425 * 2)是否感染。每对的结果可以通过类似的表格显示:

             Normal   
           |no  |yes|
Cancer|No  |1157|35 |
      |Yes |220 |13 |

更清楚:

                                    Normal:
                                    No infection   Infection  
Cancer patient:     No infection    1157            35      
                    Infection       220             13      

它表明癌症患者感染和控制没有感染的可能性更高,而不是相反。其重要性可以通过麦克尼马尔的检验来检验。

如果这些患者和对照者不匹配且独立,则只能制作下表并进行卡方检验:

            Infection
            No    Yes
Cancer  No  1377   48
        Yes 1192  233

更清楚:

                No infection        Infection
No cancer       1377                48
Cancer          1192                233

请注意,这些数字与第一个表的边距相同:

> addmargins(mat)
      After
Before   No  Yes  Sum
   No  1157   35 1192
   Yes  220   13  233
   Sum 1377   48 1425

这一定是在McNemar检验中使用“边际频率”和“边际同质性”之类的术语的原因。

有趣的是,addmargins函数还可以帮助您决定使用哪个测试。如果总计是观察到的受试者数量的一半(表明已经完成配对),则适用McNemar检验,否则卡方检验是合适的:

> addmargins(mat)
      Normal
Cancer   No  Yes  Sum
   No  1157   35 1192
   Yes  220   13  233
   Sum 1377   48 1425
> 
> addmargins(mat3)
      Infection
Cancer   No  Yes  Sum
   No  1377   48 1425
   Yes 1192  233 1425
   Sum 2569  281 2850

上表的R代码来自以上答案:

mat = as.table(rbind(c(1157, 35), 
                      c( 220, 13) ))
colnames(mat) <- rownames(mat) <- c("No", "Yes")
names(dimnames(mat)) = c("Cancer", "Normal")

mat3 = as.table(rbind(c(1377, 48), 
                     c(1192, 233) ))
colnames(mat3) <- rownames(mat3) <- c("No", "Yes")
names(dimnames(mat3)) = c("Cancer", "Infection")

以下伪代码也可能有助于了解它们之间的区别:

subject_id      result_first_observation    result_second_observation   
1               no                          yes                     
2               yes                         no                      
...

mcnemar.test(table(result_first_observation, result_second_observation))



pair_id     result_case_subject     result_control_subject  
1           no                      yes                     
2           yes                     no                      
...

mcnemar.test(table(result_case_subject, result_control_subject))



subject_id      result_first_test       result_second_test
1               yes                     no
2               no                      yes
..

chisq.test(table(result_first_test, result_second_test))

编辑:

mid-p有趣的McNemar测试变异(https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3716987/)。它比较bc列联表,即从“是”变为“否”的人数与从“否”变为“是”的人数(通过研究忽略那些保持“是”或“否”的人数)。可以在python中使用二项式测试来执行,如https://gist.github.com/kylebgorman/c8b3fb31c1552ecbaafb所示

它可能等同于,binom.test(b, b+c, 0.5)因为在随机变化中,人们期望b等于c


3
不仅用于干预分析:它还用于在观察意义上分析匹配的病例对照数据。
亚历克西斯(Alexis)

给定Q3表格之前的描述/设置,我怀疑“ X”是一个错字,但这是一个不错的选择,这对线程+1很有用。
gung-恢复莫妮卡

@mso编辑第3季。它是t1的X!否则,正如您所说的,它与第一季度没有区别。这个问题已经有一年多了,很惊讶看到有人带着同样的想法回到我面前,使我感到困惑。很有意思的跟随!
安托2015年

抱歉,OP已经阐明了Q3,显然是在2个不同的时间有2种不同的疾病。再次,好抓住。
gung-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.