卡方分布:n个独立同分布(标准正态分布N(0,1))变量的平方和服从自由度为n的卡方分布。
不同自由度的卡方分布的概率密度函数图示python代码
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
x1 = np.random.normal(0,1,1000000)
x2 = np.random.normal(0,1,1000000)
x3 = np.random.normal(0,1,1000000)
x4 = np.random.normal(0,1,1000000)
x5 = np.random.normal(0,1,1000000)
x6 = np.random.normal(0,1,1000000)
Q1 = x1**2
Q2 = Q1 + x2**2
Q3 = Q2 + x3**2
Q4 = Q3 + x4**2
Q5 = Q4 + x5**2
Q6 = Q5 + x6**2
plt.figure()
sns.distplot(Q1,hist=False,kde_kws={"shade":True},label='n=1')
sns.distplot(Q2,hist=False,kde_kws={"shade":True},label='n=2')
sns.distplot(Q3,hist=False,kde_kws={"shade":True},label='n=3')
sns.distplot(Q4,hist=False,kde_kws={"shade":True},label='n=4')
sns.distplot(Q5,hist=False,kde_kws={"shade":True},label='n=5')
sns.distplot(Q6,hist=False,kde_kws={"shade":True},label='n=6')
plt.xlabel('chisquare')
plt.ylabel('density')
可知自由度n越大,曲线越趋于对称,当自由度趋于无穷,卡方分布趋于正态分布。
卡方检验是一种假设检验方法,用于比较两个分类变量的关联性,基本思想是比较理论频数与实际频数的吻合程度。例如,在选举调查中,选民可能按性别(男性或女性)和投票偏好(民主党,共和党或独立团体)进行分类。我们可以使用卡方检验来确定独立性,以确定性别是否与投票偏好相关
变量A(A1,A2),B(B1,B2)独立性假设
H0:变量A与变量B之间独立no association,
H1:变量A与变量B之间存在相关性。
在独立性前提下,P(B1/A1)=P(B1/A2)=P(B1)计算理论频数,偏差(实际频数-理论频数)的平方与理论频数的加和记作卡方值。
由自由度判断卡方值大小,自由度=(行数-1)(列数-1)。如果卡方值小,则实际频数与理论频数偏差小,检验假设H0成立,否则检验假设不成立。
当卡方值≥卡方值[α]时,p≤0.05拒绝H0,接受H1;当卡方值<卡方值[α]时,p>0.05,尚没有理由拒绝H0.
下面是工种与患高血压人数的列联表,我们希望知道这个统计结果能否说明患高血压与工种之间存在某种联系。
from scipy.stats import chi2_contingency
table = [[386,895],[65,322]]
chi2,pval,dof,expected = chi2_contingency(table)
print('理论数列联表如下\n',expected)
print("Null Hypothesis: prevalence rate(B) of diffent job(A) is same,α=0.05")
if pval < 0.05:
print("Reject the Null Hypothesis. prevalence rate(B) of diffent job(A) is Diffent.")
else:
print("Accept the Null Hypothesis.")
结论:不同职业的高血压患病率极显著意义,工人的高血压患病率显著高于农民。
资料:
卡方检验
《python科学计算第二版》