禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者!
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'
表示备择假设是实验组的均值大于对照组的均值。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%。这有以下几个含义:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。