我有一些实验数据。该实验在具有n=6
的三种不同细胞系中随时间测量126个基因。标准化测量称为delta_ct
值。数据存储在pandas.DataFrame
中,如下所示:
Gene Group Time Repeat delta_ct
Group Time Repeat
Adult 0 1 SMAD3 Adult 0 1 0.115350
2 SMAD3 Adult 0 2 0.076046
3 SMAD3 Adult 0 3 0.081212
4 SMAD3 Adult 0 4 0.083205
5 SMAD3 Adult 0 5 0.101456
6 SMAD3 Adult 0 6 0.089714
1 1 SMAD3 Adult 1 1 0.088079
2 SMAD3 Adult 1 2 0.093965
3 SMAD3 Adult 1 3 0.114951
4 SMAD3 Adult 1 4 0.082359
5 SMAD3 Adult 1 5 0.080788
6 SMAD3 Adult 1 6 0.103181
Neonatal 24 1 SMAD3 Neonatal 24 1 0.039883
2 SMAD3 Neonatal 24 2 0.037161
3 SMAD3 Neonatal 24 3 0.042874
4 SMAD3 Neonatal 24 4 0.047950
5 SMAD3 Neonatal 24 5 0.053673
6 SMAD3 Neonatal 24 6 0.040181
30 1 SMAD3 Neonatal 30 1 0.035015
2 SMAD3 Neonatal 30 2 0.042596
3 SMAD3 Neonatal 30 3 0.038034
4 SMAD3 Neonatal 30 4 0.040363
5 SMAD3 Neonatal 30 5 0.034818
6 SMAD3 Neonatal 30 6 0.031685
注意我将创建索引的列保留为列,因为它使得seaborn
的绘图更容易一些。我的问题是,我将如何进行t检验来检验不同细胞系之间每个时间点的均值彼此显着不同的假设。
例如,在上面的数据中,我想对df.loc[['Adult',0]]
和df.loc[['Neonatal',0]]
执行t检验,即相同的时间点但不同的细胞系。
答案 0 :(得分:3)
使用您可以通过Welch t-test
访问的scipy
s ttest_ind
from scipy.stats import ttest_ind
ttest_ind(df.loc[['Adult', 0]].delta_ct, df.loc[['Neonatal', 0]])
或者,如果您愿意,可以编写自己的功能。
def welch_ttest(x1, x2):
x_1 = x1.mean()
x_2 = x2.mean()
s1 = x1.std()
s2 = x2.std()
n1 = len(x1)
n2 = len(x2)
return ((x_1 - x_2) / (np.sqrt(s1 ** 2 / n1 + s2 ** 2 / n2)))
welch_ttest(df.loc[['Adult', 0]].delta_ct, df.loc[['Neonatal', 0]])