Python 无法用科学符号打印p值
我无法在python中打印正确的p值Python 无法用科学符号打印p值,python,Python,我无法在python中打印正确的p值 from statsmodels.stats.proportion import proportions_ztest from decimal import Decimal count = 6726 nobs = 592458 value = 0.6407 stat, pval = proportions_ztest(count, nobs, value) print('p-value =','{:.20e}'.format(Decimal(pval)))
from statsmodels.stats.proportion import proportions_ztest
from decimal import Decimal
count = 6726
nobs = 592458
value = 0.6407
stat, pval = proportions_ztest(count, nobs, value)
print('p-value =','{:.20e}'.format(Decimal(pval)))
它打印出p-value=0.00000000000000000000 E+20
我认为是零
我使用另一个程序来计算p值,它是2.22e-16
,它是0.000000000000000222
如何用python打印
2.22e-16
?无法再现打印问题-如果您的结果中包含2.22e-16
,您可以使用以下工具打印:
from decimal import Decimal
whatever = 2.22e-16
print('{:.20e}'.format(Decimal(whatever)))
输出:
2.22000000000000008179e-16
# different from "input" due to float representation error
p-value = 2.21999999999999997153e-20
即使您使用设置为
2.22e-16
的(较低分辨率)浮点,您也会得到与您观察到的不同的输出(0.00000000000000000000e+20
):
输出:
2.22000000000000008179e-16
# different from "input" due to float representation error
p-value = 2.21999999999999997153e-20
我首先认为您可能需要调整精度,但是当您从数字创建Decimal()时,python会自动为您调整精度:请参见getcontext().prec
您使用的函数返回一个浮点值-如果它被打印为
0.00000000000000e+20
,那么就是从中返回的值-如果您对这个结果不满意,您需要寻找其他类型的函数库,它可以满足您的需要,并且在内部使用更高的精度 什么是比例测试
?我在post比例测试
中添加了链接,返回的p值为0。对打印逻辑的任何调整都不会改变这一点。P值在数学上不可能为零-您正在询问如何打印2.22e-16
,但您的库返回0.0e+20
。如果变量包含0.0000000000 e+20
,则无法打印2.22e-16
。哪些其他软件为您提供了2.22e-16结果?它的精度是多少?计算中还有哪些其他参数?使用了哪个默认值?您确定实现是100%等效的吗?对于上述url中给出的示例,它们是否具有相同的值?