Python 3.x 在应用“p”时,如何获得各组比较的p值;图基&x2019;“真的有很大的区别”;

Python 3.x 在应用“p”时,如何获得各组比较的p值;图基&x2019;“真的有很大的区别”;,python-3.x,statistics,anova,Python 3.x,Statistics,Anova,通过使用以下代码: import statsmodels.stats.multicomp as multi test = multi.MultiComparison(self.my_data[factor_var], self.my_data[grp_var]) res = test.tukeyhsd() summary = res.summary() 我可以得到以下结果: 我需要的是每次比较的p值。我怎样才能得到它?非常感谢您的帮助。可能的副本: 没有可调用的直接函数来获取Pvalue:

通过使用以下代码:

import statsmodels.stats.multicomp as multi
test = multi.MultiComparison(self.my_data[factor_var], self.my_data[grp_var])
res = test.tukeyhsd()
summary = res.summary()
我可以得到以下结果:

我需要的是每次比较的p值。我怎样才能得到它?非常感谢您的帮助。

可能的副本:

没有可调用的直接函数来获取Pvalue:

psturng(np.abs(res.meandiffs / res.std_pairs), len(res.groupsunique), res.df_total)

其中res是成对的,psturng是statsmodels.stats.libqstrung中的函数,它起作用了。非常感谢你的帮助

让我分享我的源代码(得益于)

将numpy导入为np
来自statsmodels.stats.multicmp导入(成对,多比较)
从statsmodels.stats.libqstrung导入psturng
dta2=np.rec.array([
(1,'精神',2),
(2,'精神',2),
(3,'精神',3),
(4,'精神',4),
(5,'精神',4),
(6,'精神',5),
(7,'精神',3),
(8,'精神',4),
(9,'精神',4),
(10,'精神',4),
(11,'物理',4),
(12,“物理”,4),
(13,'物理',3),
(14,“物理”,5),
(15,“物理”,4),
(16,“物理”,1),
(17,'物理',1),
(18,“物理”,2),
(19,'物理',3),
(20,'物理',3),
(21,'医学',1),
(22,'医学',2),
(23,'医学',2),
(24,'医学',2),
(25,'医学',3),
(26,'医学',2),
(27,'医学',3),
(28,'医学',1),
(29,'医学',3),

(30,'medical',1)],dtype=[('idx','你能提供数据吗?我正在努力让Tukey的HSD工作,甚至不让你的输出超过pValue。我想尝试@Am_ur的解决方案,但我没有你的答案data@joe5使用此链接中的数据:并确保获得相同的结果。
import numpy as np
from statsmodels.stats.multicomp import (pairwise_tukeyhsd, MultiComparison)
from statsmodels.stats.libqsturng import psturng

dta2 = np.rec.array([
(  1,   'mental',  2 ),
(  2,   'mental',  2 ),
(  3,   'mental',  3 ),
(  4,   'mental',  4 ),
(  5,   'mental',  4 ),
(  6,   'mental',  5 ),
(  7,   'mental',  3 ),
(  8,   'mental',  4 ),
(  9,   'mental',  4 ),
( 10,   'mental',  4 ),
( 11, 'physical',  4 ),
( 12, 'physical',  4 ),
( 13, 'physical',  3 ),
( 14, 'physical',  5 ),
( 15, 'physical',  4 ),
( 16, 'physical',  1 ),
( 17, 'physical',  1 ),
( 18, 'physical',  2 ),
( 19, 'physical',  3 ),
( 20, 'physical',  3 ),
( 21,  'medical',  1 ),
( 22,  'medical',  2 ),
( 23,  'medical',  2 ),
( 24,  'medical',  2 ),
( 25,  'medical',  3 ),
( 26,  'medical',  2 ),
( 27,  'medical',  3 ),
( 28,  'medical',  1 ),
( 29,  'medical',  3 ),
( 30,  'medical',  1 )], dtype=[('idx', '<i4'),
                                ('Treatment', '|S8'),
                                ('StressReduction', '<i4')])

print("Using the pairwise_tukeyhsd Method")
print("----------------------------------------------------------")
res2 = pairwise_tukeyhsd(dta2['StressReduction'], dta2['Treatment'])
print("summary:", res2.summary())
print("mean diffs:", res2.meandiffs)
print("std pairs:",res2.std_pairs)
print("groups unique: ", res2.groupsunique)
print("df total:", res2.df_total)
p_values = psturng(np.abs(res2.meandiffs / res2.std_pairs), len(res2.groupsunique), res2.df_total)
print()
print("p values:", p_values)

print()

print("Using the MultiComparison Method")
print("----------------------------------------------------------")
test = MultiComparison(dta2['StressReduction'], dta2['Treatment'])
tukey_res = test.tukeyhsd()
summary = tukey_res.summary()
print("summary:", summary)
print("mean diffs:", tukey_res.meandiffs)
print("std pairs:",tukey_res.std_pairs)
print("groups unique: ", tukey_res.groupsunique)
print("df total:", tukey_res.df_total)
p_values = psturng(np.abs(tukey_res.meandiffs / tukey_res.std_pairs), len(tukey_res.groupsunique), tukey_res.df_total)
print()
print("p values:", p_values)