参考书目:贾俊平. 统计学——Python实现. 北京: 高等教育出版社,2021.
(最近很多同学找我要这个数据,可以参考:贾俊平统计学,整本书的实验数据都在里面)
方差分析的定义是检验分类型自变量对数值型因变量是否有显著性影响。
分类的变量检验,一个分类变量叫做拟合优度检验,两个分类变量叫做独立性检验。
原理是概率论里面的事件独立性原理。
期望频数相等
导入包
import pandas as pd
from scipy.stats import chisquare
读取案例数据
example7_1=pd.read_csv("example7_1.csv",encoding="gbk")
example7_1
chi2, p_value=chisquare(f_obs=example7_1["人数"])
print(f"卡方统计量={chi2:.2f}, p值={p_value:.4g}")
p小于0.05,说明拒绝原假设,不同饮料之间的买的人数有差异
期望频数不相等
example7_2=pd.read_csv("example7_2.csv",encoding="gbk")
example7_2
计算
chi2, p_value=chisquare(f_obs=example7_2["离婚家庭数"],f_exp=example7_2["离婚家庭数"].sum()*example7_2["期望比例"])
print(f"卡方统计量={chi2:.3f}, p值={p_value:.4g}")
p小于0.05,说明拒绝原假设,不同教育程度的离婚家庭数与期望频数有显著性差异
两个类别变量的拟合优度检验
#数据已经是列联表情形下的检验
from scipy.stats import chi2_contingency
x=[[126,158,35],[34,82,65]]
df = pd.DataFrame(x,index=['满意','不满意'],columns=['东部','中部','西部'])
chi2, p_value,df,f_exp=chi2_contingency(df)
print(f"卡方统计量={chi2:.3f}, 自由度={df} ,p值={p_value:.4g}。\n期望频数为: \n{f_exp}")
上面是生成数据,下面是读取案例数据
#根据原始数据进行检验
example7_3=pd.read_csv("example7_3.csv",encoding="gbk")
example7_3
生成列联表
count = pd.crosstab(index=example7_3['满意度'],columns=example7_3['地区']) #生成列联表count
count
检验
chi2_contingency(count) #检验列联表
print(f"卡方统计量={chi2:.3f}, 自由度={df}, p值={p_value:.4g}。\n期望频数为: \n{f_exp}")
p值很小,说明很显著,不同地区的满意程度是显著性不一样的。
两个类别变量的相关性度量
分类变量有三个相关系数,phi,v,c,计算如下
import math
n=500
chi2=51.827
phi =math.sqrt(chi2/n)
v=math.sqrt(chi2/n*(2-1))
c=math.sqrt(chi2/(chi2+n))
print(f"phi系数={phi:.5f}, v系数 ={v:.5f}, c系数={c:.5f}")
三个数都是越大越相关。