当我尝试进行 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”。
我将代码与 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