3

我有一些实验数据。该实验随时间测量了三种不同细胞系中的 126 个基因,其n=6. 标准化的测量值称为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]]和进行 t 检验df.loc[['Neonatal',0]],即相同的时间点但不同的细胞系。

4

1 回答 1

3

使用您可以通过s访问的Welch t 检验scipyttest_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]])

在这里查看答案

于 2017-04-08T11:52:49.657 回答