前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据分析:两组数据的T检验power评估

数据分析:两组数据的T检验power评估

原创
作者头像
生信学习者
发布2024-08-01 09:29:52
1000
发布2024-08-01 09:29:52

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者!

介绍

  • 功效分析(power analysis)是在实验设计阶段进行的,用于确定在给定的效应量、显著性水平和样本大小下,实验能够检测到实际效应的概率。
  • 功效分析有助于确定所需的样本量,以确保实验设计能够检测到有意义的效应。
  • 通过计算功效,研究者可以评估当前设计的实验是否有足够的统计能力来检测效应,如果没有,可能需要增加样本量。
在这里插入图片描述
在这里插入图片描述

导入python包

代码语言:javascript
复制
import pandas as pd
import numpy as np
from math import sqrt
from statsmodels.stats.power import TTestPower
​

加载数据

百度网盘链接: https://pan.baidu.com/s/1NE-jYGWY9snI7j8NkJS-8A

提取码: gns9

代码语言:javascript
复制
​
df = pd.read_excel("ST1_oralASV_mouse.xlsx", sheet_name="S1b")
​
df.head()
​
在这里插入图片描述
在这里插入图片描述

数据预处理

代码语言:javascript
复制
df1 = df[df['Mouse ID'].str.contains('Abx_1')][['Mouse ID','Collection time point','Gut bacterial load']]
df1 = pd.pivot_table(df1, index='Mouse ID', columns='Collection time point', values='Gut bacterial load')
df1
在这里插入图片描述
在这里插入图片描述

运行

下面是这段代码的逐步解释:

  1. n_pren_post 分别代表两组样本的大小,这里都是3。
  2. gutload_pregutload_post 分别是两组数据的列表,代表实验前后的肠道负荷。
  3. s_pres_post 是这两组数据的方差。
  4. s 是合并标准差(pooled standard deviation),计算公式是:
s=(npre−1)⋅spre+(npost−1)⋅spostnpre+npost−2*s*=*n**p**re*+*n**p**os**t*−2(*n**p**re*−1)⋅*s**p**re*+(*n**p**os**t*−1)⋅*s**p**os**t*
s=(npre−1)⋅spre+(npost−1)⋅spostnpre+npost−2*s*=*n**p**re*+*n**p**os**t*−2(*n**p**re*−1)⋅*s**p**re*+(*n**p**os**t*−1)⋅*s**p**os**t*

这个公式用于计算两组样本合并后的标准差,用于后续的t检验。

  1. u_preu_post 是两组数据的平均值。
  2. d 是效应量(effect size),这里使用的是Cohen's d,计算公式是:
d=upre−uposts*d*=*s**u**p**re*−*u**p**os**t*
d=upre−uposts*d*=*s**u**p**re*−*u**p**os**t*

效应量是一个标准化的量度,用于衡量两个群体间的差异大小。

  1. alpha 是显著性水平,这里设置为0.05,表示有5%的概率拒绝正确的零假设。
  2. obj = TTestPower() 创建了一个用于计算t检验功效的对象。
  3. power 是通过power函数计算的,需要提供效应量、样本大小、显著性水平和备择假设。这里nobs是样本数量,df是自由度(在这里没有指定,通常由样本大小决定)。
  4. alternative='larger' 表示备择假设是实验组的均值大于对照组的均值。
  5. 最后,代码打印出当样本量为3时,检验的功效值。
代码语言:javascript
复制
n_pre = 3
n_post = 3
gutload_pre = list(df1.pre)
gutload_post = list(df1.w1)
s_pre, s_post = np.var(gutload_pre), np.var(gutload_post)
s = sqrt(((n_pre - 1) * s_pre + (n_post - 1) * s_post) / (n_pre + n_post - 2)) # calculate the pooled standard deviation 
u_pre, u_post = np.mean(gutload_pre), np.mean(gutload_post) # means of the samples
d = (u_pre - u_post) / s # calculate the effect size
alpha = 0.05 # significance leve
obj = TTestPower()
power = obj.power(effect_size=d, nobs=3, alpha=alpha, df=None, alternative='larger')
print('power of 3 mice: %.6f'%(power))
在这里插入图片描述
在这里插入图片描述

结果 power of 3 mice: 1.000000 表示在给定的条件下,当样本量为3时,检验的功效(power)是1.000000,即100%。这有以下几个含义:

  1. 高统计能力:功效为100%意味着在当前的实验设计下,如果存在效应(即两组之间确实有差异),那么实验几乎可以100%地检测到这种效应,并且能够以0.05的显著性水平拒绝零假设。
  2. 效应量足够大:由于效应量(Cohen's d)是计算功效的关键因素之一,一个非常高的功效值可能意味着效应量较大,即实验前后的肠道负荷差异非常明显。
  3. 样本量与效应量的关系:尽管样本量只有3,但可能由于效应量较大,使得所需的样本量较小就能达到很高的统计能力。然而,这也可能意味着实验设计或数据本身存在某些特殊情况,使得效应量被高估。
  4. 可能的过度估计:在实际应用中,功效为100%可能看起来有些不切实际,因为通常会有一些随机变异或其他因素影响实验结果。这可能表明计算过程中的某些假设过于理想化,或者效应量计算可能基于非常极端的数据。
  5. 实验设计的考虑:尽管功效很高,但这并不意味着实验设计不需要进一步的考虑。例如,如果实验的可重复性或外部有效性是关注点,可能需要更多的样本来确保结果的稳健性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 导入python包
  • 加载数据
  • 数据预处理
  • 运行
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档