前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🧐 pwr | 谁说样本量计算是个老大难问题!?(二)(独立样本均值篇)

🧐 pwr | 谁说样本量计算是个老大难问题!?(二)(独立样本均值篇)

作者头像
生信漫卷
发布2023-02-24 14:24:20
5470
发布2023-02-24 14:24:20
举报
文章被收录于专栏:R语言及实用科研软件

1写在前面

上次介绍了两组发生率样本量计算方法,通过pwr包进行计算非常简单,可以有效地减少我们的工作量。😘 有时候我们想比较两组之间的均值,如何计算样本量又一次成了老大难问题。🤒 本期我们还是基于pwr包,试一下通过两组的均值进行样本量的估算。😏

2用到的包

代码语言:javascript
复制
rm(list = ls())
library(pwr)
library(tidyverse)

3研究假设

还是假设我们正在进行一项RCT研究,旨在评估Treatment ATreatment B之间血红蛋白A1c (HbA1c)相对于基线平均变化的差异。🤪

我们先提出研究假设,H_0H_1 :👇

  • H_0 : Treatment ATreatment BHbA1c相对于基线的平均变化没有差异。
  • H_1 : Treatment ATreatment BHbA1c相对于基线的平均变化存在差异。

接着我们还有几个参数需要设置:👇

  • alpha level (通常为two-sided);
  • effect size (Cohen’s d);
  • power (通常为80%);

4计算样本量

Treatment ATreatment BHbA1c平均变化我们还是需要检索既往文献,然后做出假设。😉 这里我们假设Treatment A的预期平均变化为1.5%,标准差为0.25%Treatment B的预期平均变化为1.0%,标准差为0.20。🥳

4.1 计算并合标准偏差

首先我们计算一下并合标准偏差(pooled standard deviation, σpooled)。😂

代码语言:javascript
复制
sd1 <- 0.25
sd2 <- 0.30
sd_pooled <- sqrt((sd1^2 +sd2^2) / 2)
sd_pooled

4.2 计算Cohen’s d

得到了σpooled,我们就可以计算Cohen’s d了。🥰

代码语言:javascript
复制
mu1 <- 1.5
mu2 <- 1.0
d <- (mu1 - mu2) / sd_pooled
d

4.3 pwr计算样本量

现在,我们可以利用pwr包计Treatment ATreatment B之间平均HbA1c变化差0.5%1.5% - 1.0%)所需的样本量,具有 80%power0.05显著性

代码语言:javascript
复制
n_i <- pwr.t.test(d = d, power = 0.80, sig.level = 0.05)
n_i

Note! 这里我们得到每组需要6个受试者。🤔

5Power Analysis

接着是效力分析Power Analysis),还是和之前的一样,如果结果不好的话,我们应该修改或者直接终止实验。🫠 我们绘制一下Power随着样本量的变化吧。🥳

代码语言:javascript
复制
n <- seq(1, 10, 1)
nchange <- pwr.t.test(d = d, n = n, sig.level = 0.05)
nchange.df <- data.frame(n, power = nchange$power * 100)
nchange.df

代码语言:javascript
复制
plot(nchange.df$n, 
     nchange.df$power, 
     type = "b", 
     xlab = "Sample size, n", 
     ylab = "Power (%)")

随着样本量的增加,power也是不断增加的。😗 与我们之前的例子一样,随着我们增加样本量,我们减少了估算的不确定性。🤤

通过减少这种不确定性,有效减少了犯II类错误的可能性。🥸

6改变一下

接着我们固定一下两组各位6例受试者,alpha0.05。😬 我们再改变一下Treatment AHbA1c相对于基线的平均变化设为0-2%,间隔为0.1%。🤒

代码语言:javascript
复制
mu1 <- seq(0.0, 2.0, 0.1)

d <- (mu1 - mu2) / sd_pooled

power1 <- pwr.t.test(d = d, n = 6, sig.level = 0.05)
powerchange <- data.frame(d, power = power1$power * 100)
powerchange

随着Cohen's d的绝对值增大,power也随之增大。⤴️

也就是说在固定样本大小的情况小,两组间差异越大我们越有可能得到阳性结果。🤠 相反,如果差异很小,那么我们在当前样本量6的情况下没有足够的把握得到阳性结果。🤒

代码语言:javascript
复制
plot(powerchange$d, 
     powerchange$power, 
     type = "b", 
     xlab = "Cohen's d", 
     ylab = "Power (%)")

最后祝大家早日不卷!~


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1写在前面
  • 2用到的包
  • 3研究假设
  • 4计算样本量
    • 4.1 计算并合标准偏差
      • 4.2 计算Cohen’s d
        • 4.3 pwr计算样本量
        • 5Power Analysis
        • 6改变一下
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档