美文网首页
概率值的检验丨数析学院

概率值的检验丨数析学院

作者: Datartisan数据工匠 | 来源:发表于2016-10-08 14:52 被阅读0次

    问题

    在对于定类数据的分析中,我们有时需要通过样本概率检验总体概率是否不同于某个既定的概率值,或是对比分组数据的分布情况,在R中,该如何处理这类问题?

    指南

    在概率值的检验中存在两个常见的问题:

    1. 总体中某一事件出现的概率是否不同于某一个给定的或是理论上的概率值(例如小明做判断题是否50%概率答对,50%概率答错)?(拟合优度检验)
    2. 某两组样本中的某一事件概率是否服从同一分布?(独立性检验)

    我们通常会运用统计检验的方法来解决上述的问题,所用的检验方法可被分为精确检验与近似检验。


    注:精确二项检验只能适用于仅含有两个层级的变量,而Fisher确切概率法则只能适用于二维列联表(例如,我们可以在存在一个自变量和一个因变量时使用它,却不能在村咋两个自变量和一个因变量时使用它。)

    为了确认数据中的匹配关系或是对象间的影响,这里我们用到了McNemar检验。需要说明的是,在我们使用这个方法之前,必须确保我们有且只有一个自变量和一个因变量,每一个变量中有且只有两个层级(两种类别属性)。

    通过重复测量的方法我们可以对两个变量间的独立性进行检验,这其中用到了Cochran-Mantel-Haenszel检验。

    假设下面就是我们的数据,其中每一条记录行代表一个样本:

    通常情况下,我们可能不会愿意对这样的样本记录列表进行直接的处理,相比而言,一个变量组合情况的计数表或是一个列联表更容易被数据分析工作者所接受。在此,我们必须将它转化为一个列联表的形式,具体的方法我们在“R语言行动指南-38 数据框与列联表的转换”中做过介绍。

    拟合优度检验(基于一个给定的预期概率)

    卡方检验

    我们的目标为检验原假设——反应结果的两种数值(0和1,不考虑condition)在总体中出现的概率是均等(各为50%)的:


    在对一个非均等概率的假设进行检验时,我么需要对chisq.test函数的参数p进行设置(下面的例子是假设概率为0.75:0.25的情况):

    如果你想从检验的结果中提取信息的话,你可以将其储存为一个变量,并用str()函数对其进行查看,最后从中筛选出你想要的信息,如下所示:

    精确二项检验

    精确二项检验只能适用于我们的数据中仅有一个二元变量的情况,比如说下面的例子。


    如果你想从检验的结果中提取信息的话,你可以将其储存为一个变量,并用str()函数对其进行查看,最后从中筛选出你想要的信息,如下所示:


    独立性检验(两个数据组的对比)

    卡方检验

    为了检验控制组(control)与实验组(treatment)是否存在显著的概率差异,我们需要用到二维的列联表结构。

    对于2x2的列联表,函数会默认采用Yates连续性校准的方法对其中的统计枢轴量进行调整,这一方法再检验样本规模较小的数据时较为保守。当我们设置参数correct=FALSE时,函数将会直接使用一般的Pearson卡方统计量作为枢轴量而不会去调整它。

    Fisher确切概率法

    对于样本规模小的数据,在概率检验时Fisher确切概率法也许会显得更为适用。这一方法普遍运用于2x2列联表即小样本数据集的原因是,当面对复杂一些的表格(例如2x3列联表)或样本量更大的数据集时,它需要十分巨大的计算量。但在R中,计算量的问题得到了解决,我们同样可以将它应用于对某些大样本数据的处理中。

    Cochran-Mantel-Haenszel检验

    Cochran-Mantel-Haenszel检验(CHM检验,或称Mantel-Haenszel检验)用于检验两组重复测量得到的二分变量之间的独立性。该方法的运算通常基于2x2xK的列联表,其中K为测量值的类别数。例如,我们想要研究一下某一激励或实验(吃药vs.没吃药)是否对医患的康复率(康复或没康复)产生显著的影响,现在假设这一激励发生于每天的三个时间段:早上、下午、晚上——我们在进行检验时必须控制这些变量。此时我们的CHM检验将会基于一个2x2x3的列联表,其中第三个变量就是我们所要控制的时间段变量。

    实际上,在R中的CHM检验可以处理的数据维度不局限于2x2xK,你也可以用这一方法去检验一个3x3xK的列联表数据。

    在下面的例子(引用于McDonald的《Handbook of Biological Statistics》)中,我们可以看到三个变量:Location,Allele,以及Habitat。我们的目标为在将Location作为控制变量的情况下,检验Allele (94或non-94)和Habitat (marine 或estuarine)是否相互独立。

    我们需要注意的是,上列数据是以一个变量组合计数表的形式作为输入的,而不是我们之前所见的样本记录列表。所以在这里我们要使用xtabs()函数将其转换为列联表形式,而非之前的table()函数。


    通过上述检验我们可以发现,在以Location为控制变量的条件下,变量Allele和变量Habitat之间存在显著的相互影响,p=.025。

    这里需要我们注意的是,在上述方法中,列联表内的头两个变量处于对等的地位关系(所以我们可以任意改变它们之间的次序而不会影响到检验的最终结果),而最后一个变量的地位则和它们不同,下面的例子将进一步说明它。

    McNemar检验

    McNemar检验从概念上来说很像是对于概率数据的组内检验。例如,现在我们要研究某一个激励是否显著增加了一个人在某个问题上回答“yes”的可能性,而对于每一个志愿者我们都进行了激励前的先验调查与激励后的后验调查,并记录下了他们的回答。在这个案例中,传统的卡方检验并不适用,因为卡方检验本身假设样本之间的相互独立,但事实并非如此。此时,McNemar检验就可以大显身手了,并且这种方法只能适用于对同一个二分变量进行两次测量的情况。对于一个2x2的列联表,McNemar检验在结果上也许会与“一般”的卡方检验几乎近似,但从方法的结构上来看,二者截然不同。

    假设下面便是我们的数据,每一个对象样本都对应着一组激励前与激励后的数据。


    如上所示,如果我们的数据不属于宽数据,那么我应该先将它转换为宽型。

    接着,根据变量post和变量pre构建列联表:

    再构建了合适的列联表之后,调用函数进行检验:

    对于小样本数据,McNemar检验的过程中用到了连续性校对,如果我们不需要这样的调整过程,我们也可以通过调用exact2x2包,来使用一个精确版本的McNemar检验。


    复制链接,通过电脑学习效果最佳:http://datacademy.io/lesson/66

    相关文章

      网友评论

          本文标题:概率值的检验丨数析学院

          本文链接:https://www.haomeiwen.com/subject/fhvuyttx.html