一个淘宝网购商家搜集了一年中每天的订单数,除去春节期间及双十一前后外,按330天记,数据如下
请用卡方分布验证订单数是否泊松分布。已知:通过极大似然估计得知泊松分布参数
λ
=
5.3
\lambda=5.3
λ=5.3
# 加载必要的包
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
from IPython.display import display
# 原始数据
data = {'counts': list(range(16)), 'observe':[3,6,21,46,48,61,52,42,27,11,6,4,2,1,1,1]}
df = pd.DataFrame(data)
df
# 将实际频数小于5的类别合并
df.loc[11,'observe']=9
df=df[:12]
df
df.observe.sum()
# 根据自变量count的值计算每个自变量对应的理论频率
Poiss=stats.poisson(mu=5.3)
df['prop']=Poiss.pmf(df['counts']) # pmf函数可以根据输入的自变量,输出对应的概率(也就是理论频率)
# 上述“注意”的修正
df.loc[11, 'prop']=1-Poiss.cdf(10) # 修正:由于数据框中counts=11实际上是大于等于11,因此在这里修正counts大于11对应的概率
# cdf函数为左侧累积概率函数
# 用理论频率乘样本数,就可以得到理论频数
df['T_counts']=332*df['prop']
df
# 用卡方检验,比较实际频数与理论频数的差别,就可以检验出数据是否服从泊松分布
chi=stats.chisquare(df['observe'], df['T_counts'], ddof=1) # 若理论频数不是“期望值”,则需要输入我们自己定义的理论频数
chi
p值约为0.767,不能拒绝原假设,因此我们可以认为样本的总体服从泊松分布。
感谢 Datawhale 对开源学习的贡献!
感谢 Git-Model 创作团队!
参考文献:
Modeling-Universe/Data-Story/Task8_下_假设检验3_分类数据检验/假设检验3-分类数据的检验.ipynb