Python获取数组的p值

问题描述 投票:0回答:1

我的任务是,当输入为* X时,每个输入都是具有n行的一列的数组,但是它们可能具有不同的行(例如X [0]是具有1列和10行的数组,而X [ 2]具有1列9行),我想让代码对每两个数组的p值进行计数,并获得最低的p值和X [n]的顺序(例如X [1]表示第一个数组等)。代码出错,“分配前已引用本地变量ans_1”。我不知道该怎么办。

def mass_independent_ttest(*X):
    min_pvalue = 10
    for i in range(0, len(X)):
        for j in range(i+1, len(X)):
            df_1 = pd.DataFrame(X[i])
            df_2 = pd.DataFrame(X[j])
            df_first = df_1.loc[:,0]
            df_second = df_2.loc[:,0]
            temp = scipy.stats.ttest_ind(df_first, df_second)
            temp_pvalue = temp.pvalue
            if temp_pvalue < min_pvalue:
                min_pvalue = temp_pvalue
                ans_1 = i
                ans_2 = j
    ans_tuple = (ans_1, ans_2, min_pvalue)
    return ans_tuple

`

python pandas numpy scipy p-value
1个回答
0
投票

i的最后一次迭代中,range(i+1, len(X))将是一个空列表,因此将不会执行代码,并且在调用ans_1ans_2ans_tuple = (ans_1, ans_2, min_pvalue)不存在。因此,您应该评估外部循环和内部循环,以查看是否获得了预期的迭代次数。

此示例从概念上说明正在发生的事情。

for i in range(0, len(X)):
    print(list(range(i+1, len(X))))

=== Output: ===
[1, 2, 3, 4]
[2, 3, 4]
[3, 4]
[4]
[]
© www.soinside.com 2019 - 2024. All rights reserved.