“无法解压不可迭代的 NoneType 对象”,我在哪里失败了?

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

当我尝试进行 Dunn 测试时,出现错误:“无法解压不可迭代的 NoneType 对象”

import scikit_posthocs as sp

doze = (0, 0, 6, 0, 1, 0, 0, 2, 3, 6, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 2, 0, 0, 4, 0, 4, 1, 1, 0, 8, 0, 3, 1, 0)
treze = (0, 0, 1, 0, 4, 1, 0, 1, 0, 1, 0, 0, 0, 4, 1, 3, 2, 3, 0, 2, 4, 0, 0, 1, 0, 3, 4, 0, 0, 9, 0, 3, 1, 0)
quinze = (1, 0, 0, 0, 1, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 16, 2, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0)
dezesseis = (0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 3, 15, 9, 0, 0, 1, 0, 0, 0, 1, 14, 0, 0, 0, 0, 0, 0, 0, 0)
dezessete = (0, 0, 0, 0, 0, 1, 1, 16, 25, 6, 0, 1, 0, 0, 3, 18, 3, 2, 1, 0, 6, 0, 0, 13, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0)
dezoito = (0, 1, 0, 0, 2, 0, 1, 1, 2, 0, 0, 0, 0, 0, 1, 21, 3, 1, 0, 0, 0, 1, 0, 8, 0, 2, 0, 0, 1, 0, 1, 0, 0, 0)
vinte = (0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 1, 0, 0, 0, 1, 6, 1, 1, 1, 1, 2, 0, 0, 20, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0)
vinteum = (0, 0, 0, 0, 1, 3, 2, 0, 1, 1, 0, 0, 0, 0, 0, 9, 3, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0)
vintedois = (0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5, 0, 20, 0, 0, 1, 0, 1, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0)
vintetres = (0, 0, 0, 2, 1, 1, 1, 2, 8, 4, 0, 5, 4, 0, 2, 20, 1, 8, 2, 1, 3, 1, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 2)

data = (doze, treze, quinze, dezesseis, dezessete, dezoito, vinte, vinteum, vintedois, vintetres)


sp.posthoc_dunn(data, p_adjust = 'bonferroni')

代码如上,错误是:“cannot unpack non-iterable NoneType object”。

python statistics
1个回答
0
投票

我将代码与 numpy 结合起来,它工作得很好

import pandas as pd
import scikit_posthocs as sp


doze = (0, 0, 6, 0, 1, 0, 0, 2, 3, 6, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 2, 0, 0, 4, 0, 4, 1, 1, 0, 8, 0, 3, 1, 0)
treze = (0, 0, 1, 0, 4, 1, 0, 1, 0, 1, 0, 0, 0, 4, 1, 3, 2, 3, 0, 2, 4, 0, 0, 1, 0, 3, 4, 0, 0, 9, 0, 3, 1, 0)
quinze = (1, 0, 0, 0, 1, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 16, 2, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0)
dezesseis = (0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 3, 15, 9, 0, 0, 1, 0, 0, 0, 1, 14, 0, 0, 0, 0, 0, 0, 0, 0)
dezessete = (0, 0, 0, 0, 0, 1, 1, 16, 25, 6, 0, 1, 0, 0, 3, 18, 3, 2, 1, 0, 6, 0, 0, 13, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0)
dezoito = (0, 1, 0, 0, 2, 0, 1, 1, 2, 0, 0, 0, 0, 0, 1, 21, 3, 1, 0, 0, 0, 1, 0, 8, 0, 2, 0, 0, 1, 0, 1, 0, 0, 0)
vinte = (0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 1, 0, 0, 0, 1, 6, 1, 1, 1, 1, 2, 0, 0, 20, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0)
vinteum = (0, 0, 0, 0, 1, 3, 2, 0, 1, 1, 0, 0, 0, 0, 0, 9, 3, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0)
vintedois = (0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5, 0, 20, 0, 0, 1, 0, 1, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0)
vintetres = (0, 0, 0, 2, 1, 1, 1, 2, 8, 4, 0, 5, 4, 0, 2, 20, 1, 8, 2, 1, 3, 1, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 2)

df = pd.DataFrame({
    'doze': doze,
    'treze': treze,
    'quinze': quinze,
    'dezesseis': dezesseis,
    'dezessete': dezessete,
    'dezoito': dezoito,
    'vinte': vinte,
    'vinteum': vinteum,
    'vintedois': vintedois,
    'vintetres': vintetres
})

df_long = df.melt(var_name='group', value_name='value')

result = sp.posthoc_dunn(df_long, val_col='value', group_col='group', p_adjust='bonferroni')
print(result)

输出:

           dezesseis  dezessete  dezoito  doze   quinze     treze  vinte  vintedois  vintetres   vinteum
dezesseis   1.000000   0.772454      1.0   1.0  1.00000  0.867052    1.0   1.000000   0.140838  1.000000
dezessete   0.772454   1.000000      1.0   1.0  1.00000  1.000000    1.0   0.941430   1.000000  1.000000
dezoito     1.000000   1.000000      1.0   1.0  1.00000  1.000000    1.0   1.000000   1.000000  1.000000
doze        1.000000   1.000000      1.0   1.0  1.00000  1.000000    1.0   1.000000   1.000000  1.000000
quinze      1.000000   1.000000      1.0   1.0  1.00000  1.000000    1.0   1.000000   0.278390  1.000000
treze       0.867052   1.000000      1.0   1.0  1.00000  1.000000    1.0   1.000000   1.000000  1.000000
vinte       1.000000   1.000000      1.0   1.0  1.00000  1.000000    1.0   1.000000   1.000000  1.000000
vintedois   1.000000   0.941430      1.0   1.0  1.00000  1.000000    1.0   1.000000   0.178402  1.000000
vintetres   0.140838   1.000000      1.0   1.0  0.27839  1.000000    1.0   0.178402   1.000000  0.482451
vinteum     1.000000   1.000000      1.0   1.0  1.00000  1.000000    1.0   1.000000   0.482451  1.000000
© www.soinside.com 2019 - 2024. All rights reserved.