如果我有这样的df:

        normalized_0  normalized_1  normalized_0   mean      std
Site
0           NaN      0.798262      1.456576       0.888687  0.118194
1      0.705540      0.885226           NaN       0.761488  0.047023
2      0.669539      1.002526      1.212976       0.826657  0.077940
3      0.829826      0.968180      0.988679       0.871290  0.032367


如何计算0、1、2和3的双向t检验?

我尝试了:

from scipy.stats import ttest_ind

df['ttest'] = ttest_ind(df, d.loc[3])


但这不起作用...我得到的错误是:

TypeError: unsupported operand type(s) for /: 'str' and 'int'


您将如何解决?

最佳答案

我的答案可能完全不对,因为我只读过t检验:)

我从您的问题中了解到的是,您有一个既包含标准化值又包含其描述性统计信息(均值,std)的表。

该表中的每个索引值都是分析的category,并且您想要比较[0, 1, 2][3]类别。

我还假设您只需要将标准化的值作为输入数组,而无需使用均值或标准差。



selected_data = df.copy()
selected_data = selected_data[['normalized_0', 'normalized_1', 'normalized_0.1']]
selected_data['ttest'] = [ttest_ind(a=selected_data.iloc[3, :].values, \
                                    b=selected_data.iloc[x, :].values, \
                                    nan_policy='omit') for x in np.arange(len(selected_data))]

df.join(selected_data['ttest'])


        normalized_0  normalized_1  normalized_0.1 mean      std       ttest
Site
0           NaN      0.798262      1.456576       0.888687  0.118194  (-0.7826642930343911, 0.4909212050511221)
1      0.705540      0.885226           NaN       0.761488  0.047023  (1.4370158341444121, 0.24625840339538163)
2      0.669539      1.002526      1.212976       0.826657  0.077940  (-0.19764518466194855, 0.8529602343240825)
3      0.829826      0.968180      0.988679       0.871290  0.032367  (0.0, 1.0)




ab参数是所选列的行值

# values of third category for example
selected_data.iloc[3, :].values
# array([0.829826, 0.96818 , 0.988679])


omit将在计算测试时忽略nan值(默认情况下,将nan_policy的参数设置为propagate,如果存在缺失值,则返回nan)。

10-04 21:06