如果我有这样的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)
a
和b
参数是所选列的行值# values of third category for example
selected_data.iloc[3, :].values
# array([0.829826, 0.96818 , 0.988679])
omit
将在计算测试时忽略nan值(默认情况下,将nan_policy
的参数设置为propagate
,如果存在缺失值,则返回nan)。