选择子集时仅从t检验错误中获得p值

时间:2018-11-27 20:18:33

标签: python

我找到了这个线程Ignore python multiple return value,但我仍然不明白怎么可能只从t检验中获得p值。我试图只表达向量中的p值,我真的很努力。我尝试了fun()[1] etc方法,但它返回了一个空索引。

我的代码如下:

# Statistical analysis: unpaired t-test
import scipy
from scipy import stats
# Sorting for dosage
drug_1_1 = table.iloc[:,1][(table['Dose drug 1'] == 1)]
drug_2_1 = table.iloc[:,3][(table['Dose drug 2'] == 1)]
drug_1_2 = table.iloc[:,1][(table['Dose drug 1'] == 2)]
drug_2_2 = table.iloc[:,3][(table['Dose drug 2'] == 2)]
drug_1_3 = table.iloc[:,1][(table['Dose drug 1'] == 3)]
drug_2_3 = table.iloc[:,3][(table['Dose drug 2'] == 3)]
drug_1_4 = table.iloc[:,1][(table['Dose drug 1'] == 4)]
drug_2_4 = table.iloc[:,3][(table['Dose drug 2'] == 4)]
drug_1_5 = table.iloc[:,1][(table['Dose drug 1'] == 5)]
drug_2_5 = table.iloc[:,3][(table['Dose drug 2'] == 5)]
drug_1_6 = table.iloc[:,1][(table['Dose drug 1'] == 6)]
drug_2_6 = table.iloc[:,3][(table['Dose drug 2'] == 6)]
drug_1_7 = table.iloc[:,1][(table['Dose drug 1'] == 7)]
drug_2_7 = table.iloc[:,3][(table['Dose drug 2'] == 7)]
drug_1_8 = table.iloc[:,1][(table['Dose drug 1'] == 8)]
drug_2_8 = table.iloc[:,3][(table['Dose drug 2'] == 8)]

# Expessing p-values in vector
P_values = pd.DataFrame()
P_values['1'] = stats.ttest_ind(drug_1_1,drug_2_1)[1]
P_values['2'] = stats.ttest_ind(drug_1_2,drug_2_2)[1]
P_values['3'] = stats.ttest_ind(drug_1_3,drug_2_3)[1]
P_values['4'] = stats.ttest_ind(drug_1_4,drug_2_4)[1]
P_values['5'] = stats.ttest_ind(drug_1_5,drug_2_5)[1]
P_values['6'] = stats.ttest_ind(drug_1_6,drug_2_6)[1]
P_values['7'] = stats.ttest_ind(drug_1_7,drug_2_7)[1]
P_values['8'] = stats.ttest_ind(drug_1_8,drug_2_8)[1]
P_values.index.names = ['Dose']
print(P_values)

哪个返回:

Empty DataFrame
Columns: [1, 2, 3, 4, 5, 6, 7, 8]
Index: []

如果没有在第一行中播放,它似乎可以正常工作,但是在其他所有行中,它为0和1返回相同的值,例如:https://imgur.com/a/9H7YXL7

我写错了吗?

1 个答案:

答案 0 :(得分:0)

因此,根据您到目前为止所写的内容,您似乎正在对(可能)不必要的值进行硬编码和存储变量。如果您需要重新使用所有drug_1_1等,则将代码的上部保留原样。如果您以后不需要使用它们,那么您应该可以遍历值的范围,并一次完成所有查找,ttesting和pval的存储,如下所示:(请注意,我无法对此进行测试,因为我不知道您的数据是什么样的

p_vals=[]
for i in range(1,9):
    p_vals.append(stats.ttest_ind(table.iloc[:,1][(table['Dose drug 1'] == i)],
                                  table.iloc[:,3][(table['Dose drug 2'] == i)])[1])