禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者!
介绍
- 功效分析(power analysis)是在实验设计阶段进行的,用于确定在给定的效应量、显著性水平和样本大小下,实验能够检测到实际效应的概率。
- 功效分析有助于确定所需的样本量,以确保实验设计能够检测到有意义的效应。
- 通过计算功效,研究者可以评估当前设计的实验是否有足够的统计能力来检测效应,如果没有,可能需要增加样本量。
导入python包
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
df = pd.read_excel("ST1_oralASV_mouse.xlsx", sheet_name="S1b")
df.head()
数据预处理
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
运行
下面是这段代码的逐步解释:
n_pre
和n_post
分别代表两组样本的大小,这里都是3。gutload_pre
和gutload_post
分别是两组数据的列表,代表实验前后的肠道负荷。s_pre
和s_post
是这两组数据的方差。s
是合并标准差(pooled standard deviation),计算公式是:
这个公式用于计算两组样本合并后的标准差,用于后续的t检验。u_pre
和u_post
是两组数据的平均值。d
是效应量(effect size),这里使用的是Cohen’s d,计算公式是:
效应量是一个标准化的量度,用于衡量两个群体间的差异大小。alpha
是显著性水平,这里设置为0.05,表示有5%的概率拒绝正确的零假设。obj = TTestPower()
创建了一个用于计算t检验功效的对象。power
是通过power
函数计算的,需要提供效应量、样本大小、显著性水平和备择假设。这里nobs
是样本数量,df
是自由度(在这里没有指定,通常由样本大小决定)。alternative='larger'
表示备择假设是实验组的均值大于对照组的均值。- 最后,代码打印出当样本量为3时,检验的功效值。
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%。这有以下几个含义:
- 高统计能力:功效为100%意味着在当前的实验设计下,如果存在效应(即两组之间确实有差异),那么实验几乎可以100%地检测到这种效应,并且能够以0.05的显著性水平拒绝零假设。
- 效应量足够大:由于效应量(Cohen’s d)是计算功效的关键因素之一,一个非常高的功效值可能意味着效应量较大,即实验前后的肠道负荷差异非常明显。
- 样本量与效应量的关系:尽管样本量只有3,但可能由于效应量较大,使得所需的样本量较小就能达到很高的统计能力。然而,这也可能意味着实验设计或数据本身存在某些特殊情况,使得效应量被高估。
- 可能的过度估计:在实际应用中,功效为100%可能看起来有些不切实际,因为通常会有一些随机变异或其他因素影响实验结果。这可能表明计算过程中的某些假设过于理想化,或者效应量计算可能基于非常极端的数据。
- 实验设计的考虑:尽管功效很高,但这并不意味着实验设计不需要进一步的考虑。例如,如果实验的可重复性或外部有效性是关注点,可能需要更多的样本来确保结果的稳健性。