美文网首页生物信息学习生物信息R语言学习
我的研究到底需要多少样本——功效分析

我的研究到底需要多少样本——功效分析

作者: 生信杂谈 | 来源:发表于2017-06-25 23:11 被阅读345次

    在研究过程中我们通常会面临这样的问题““我的研究到底需要多少个受试者呢?”,“我的实验究竟需要多少样本才有意义呢?”,这类问题都可通过功效分析(power analysis)来解决,它在实验设计中占有重要地位。

    功效分析可以帮助在给定置信度的情况下,判断检测到给定效应值时所需的样本量。 反过来, 它也可以帮助你在给定置信度水平情况下,计算在某样本量内能检测到给定效应值的概率。对于其原理在这里我们不做更多说明,直接使用R进行举例:


    假设你想评价使用手机对驾驶员反应时间的影响,则零假设为H0:μ1-μ2 = 0,μ1是驾驶员使用手机时的反应时间均值,μ2是驾驶员不使用手机时的反应时间均值 。假如你拒绝该零假设,那就是 μ1 ≠ μ2,即两种条件下反应时间的均值不相等。
    现在要设计实验来验证假设,挑选一个由不同个体构成的样本,将他们随机分配到下面两组中:

    第一组是:参与者边打手机,边在一个模拟器中应对一系列驾驶挑战;
    第二组是:参与者不打手机在一个模拟器中完成 一系列相同的驾驶挑战;
    然后评估每个个体的总体反应时间。

    根据过去的经验我们知道反应时间的标准差是1.25s,并认定反应时间1 s的差值是巨大的差异。

    那么问题来了,我假设打手机对于驾驶员的反应时间是有影响的,并且希望在95%的置信区间(p<0.05)的情况下有80%的把握检测到这种效应,这时我需要多少个样本呢?


    在上面的例子中,我们一共涉及四个量:样本大小显著性水平功效效应

    • 样本大小指的是实验设计中每种条件/组中观测的数目。也即是上面例子中我们需要确定的量.
    • 显著性水平可以把它看做是发现效应不发生的概率(一般是0.05)。
    • 功效可以把它看做是真实效应发生的概率(上面的80%的把握)。
    • 效应值指的是在备择或研究假设下效应的量。效应值的表达式依赖于假设检验中使用的统计方法。

    一般来说,我们都希望使用尽可能少的样本,然后最大化检验的功效(省钱嘛)。四个量(样本大小显著性水平功效效应值)紧密相关,给定其中任意三个量,便可推 算第四个量。

    这里我们就需要用到R里的pwr包。本例使用t.test来检测显著性,所以使用pwr包里的pwr.t.test函数进行分析。

    pwr.t.test函数的格式:
    pwr.t.test(n = NULL, d = NULL, sig.level = 0.05, power = NULL, 
        type = c("two.sample", "one.sample", "paired"),
        alternative = c("two.sided", "less", "greater"))
    

    pwr.t.test中的每个参数解释如下:

    • n为样本大小
    • d为效应值,即标准化的均值之差.
    • sig.level表示显著性水平(默认为0.05)。
    • power为功效水平。
    • type指检验类型:双样本t检验(two.sample) 、单样本t检验(one.sample)或相依样 本t检验(paired) 。默认为双样本t检验。
    • alternative指统计检验是双侧检验(two.sided)还是单侧检验(less或greater) 。 默认为双侧检验。
    结合上面的条件以及参数的含义,我们就明白上面的例子我们需要输入的参数如下: d =1/1.25=0.8,sig.level=0.05 (0.05的显著差异),power=0.8 (80%的把握),type=two.sample,alternative=two.sided。

    将这些信息输入到pwr.t.test()函数中:

    library(pwr)
    pwr.t.test(d=0.8,sig.level = 0.05,power = 0.8,type = "two.sample")
    

    结果如下:

    结果标明,每组需要26个样本(总共52个),才能保证有80%的把握检测到0.8的效应(p<0.05).


    现在再换个问法,假设我们现在经费有限,最多只能有30个样本,那我有多大的把握得到预期0.8的功效呢(p<0.05)?
    代码如下:

    # 注意这里n=15,输入的是每组的数量。
    pwr.t.test(n=15, d=0.8, sig.level = 0.05, type = "two.sample")
    

    结果如下:

    也就是说我只有30个样本时想达到预期目标只有56%(功效)的可能性,这时就要考虑还要不要做这个实验了,毕竟得到预期结果的把握有点低。

    更多原创精彩视频敬请关注生信杂谈:

    相关文章

      网友评论

        本文标题:我的研究到底需要多少样本——功效分析

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