gpt4 book ai didi

statistics - Python SciPy chisquare 测试从 Excel 和 LibreOffice 返回不同的 p 值

转载 作者:行者123 更新时间:2023-12-02 05:19:52 26 4
gpt4 key购买 nike

看完recent blog post关于泊松分布的应用,我尝试使用 Python 的“scipy.stats”模块以及 Excel/LibreOffice“POISSON”和“CHITEST”函数重现其发现。

对于文章中显示的期望值,我简单地使用了:

import scipy.stats
for i in range(8):
print(scipy.stats.poisson.pmf(i, 2)*31)

这重现了博客文章中显示的表格 - 我还在 LibreOffice 中重新创建了它,使用第一列 A 在单元格 A1、A2、...、A8 中的值为 0 到 7,以及简单的公式 ' =POISSON(A1, 2, 0)*31' 在 B 列的前 8 行中重复。

到目前为止一切顺利 - 现在是卡方 p 检验值:

在 LibreOffice 下,我只是在单元格 C1-C8 中记下观察到的值,并使用“=CHITEST(C1:C8, B1:B8)”重现文章报告的 p 值 0.18。然而,在 scipy.stats 下,我似乎无法重现这个值:

import numpy as np
import scipy.stats

obs = [4, 10, 7, 5, 4, 0, 0, 1]
exp = [scipy.stats.poisson.pmf(i, 2)*31 for i in range(8)]

# we only estimated one variable (the rate of 2 killings per year via 62/31)
# so dof will be N-1-estimates
estimates = 1
print(scipy.stats.chisquare(np.array(obs), np.array(exp), ddof=len(obs)-1-estimates))
# (10.112318133864241, 0.0014728159441179519)
# the p-test value reported is 0.00147, not 0.18...
#
# Maybe I need to aggregate categories with observations less than 5
# (as suggested in many textbooks of statistics for chi-squared tests)?
observedAggregateLessThan5 = [14, 7, 5, 5]
expectedAggregateLessThan5 = [exp[0]+exp[1], exp[2], exp[3], sum(exp[4:])]
print(scipy.stats.chisquare(np.array(observedAggregateLessThan5), np.array(expectedAggregateLessThan5), ddof=len(observedAggregateLessThan5)-1-estimates))
# (0.53561749342466913, 0.46425467595930309)
# Again the p-test value computed is not 0.18, it is 0.46...

我做错了什么?

最佳答案

您没有正确使用 ddof 参数。 ddof 是对默认自由度进行的更改。默认值比长度小一。所以你根本不必指定 ddof:

In [21]: obs
Out[21]: [4, 10, 7, 5, 4, 0, 0, 1]

In [22]: exp
Out[22]:
[4.1953937803349941,
8.3907875606699882,
8.3907875606699882,
5.5938583737799901,
2.796929186889995,
1.1187716747559984,
0.37292389158533251,
0.10654968331009501]

In [23]: chisquare(obs, f_exp=array(exp))
Out[23]: (10.112318133864241, 0.1822973566091409)

关于statistics - Python SciPy chisquare 测试从 Excel 和 LibreOffice 返回不同的 p 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14037939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com