【统计学】分类数据分析——拟合优度检验

        今天在做拟合优度检验时,一直都使用手动的代码编写计算,忽然发现scipy包中已经封装好了现成的,就想记录一下新发现。并给出实例使用吧!

1、卡方统计量

        在分类数据分析中,进行拟合优度检验时,一般使用卡方(Chi-squared)拟合优度统计量。这是因为拟合优度检验用于检查观察值与理论期望值之间的偏离程度,特别是在一个分类变量中的多个类别之间。

1.1、计算公式

\chi ^{2}=\sum\frac{(f_{0}-f_{e})^{2}}{f_{e}}

其中f_{0}:观察值频数;f_{e}:期望值频数 ;

1.2、代码实现

        chi2_contingency是Python中scipy.stats库中的一个函数,用于执行卡方独立性检验和卡方拟合优度检验。这个函数可以用于分析分类数据中的两个或多个分类变量之间的关系,以确定它们是否相互独立或是否符合预期的分布。

自由度 = (Row-1)(Column-1)

import pandas as pd
from scipy.stats import chi2_contingency

# 创建一个示例DataFrame
data = {
    'Column1': [31,8,12,10],
    'Column2': [13,16,10,5],
    'Column3': [16,7,17,7]
}
index = ['row1', 'row2', 'row3','row4']
df = pd.DataFrame(data, index=index)

# 计算卡方统计量
chi2, p, dof, expected = chi2_contingency(df)

print("卡方统计量:", chi2)
print("p值:", p)
print("自由度:", dof)
print("期望频数:", expected)

2、示例

        以下列表格4\times3的列联表为例,检验所学专业是否影响其所选课程,显著性水平为0.05 

会计统计市场营销总计
专业一31131660
专业二

8

16731
专业三12101739
专业四105722
总计614447152

原假设:\pi _{1}=\pi_{2}=\pi_{3}=\pi_{4}

备择假设:\pi_{1}\pi_{2}\pi_{3}\pi_{4} 不完全相同

 2.1、计算实现

f_{e} 的计算方法:行总和\times列总和\div总样本量(以第一个单元为例)

f_{e11}=\frac{61\times 60}{152}=24.0789

        计算每一个f_{0}f_{e}的值得到如下:

f_{0}31131681671210171057
f_{e}24171912910161112967
f_{0}-f_{e}7-4-3-47-3-4-15110
(f_{0}-f{e})^2491691649916125110
\frac{(f_{0}-f{e})^2}{f_{e}}\frac{49}{24}\frac{16}{17}\frac{9}{19}\frac{4}{3}\frac{49}{9}\frac{9}{10}1\frac{1}{11}\frac{25}{12}\frac{1}{9}\frac{1}{6}0

故:卡方统计量 = 14.58 (最后一行全加起来就是这个数值了)

注:人工计算的数据由于都是按照四舍五入,故在最后的计算结果也会存在一定的误差

2.1、代码求解

import pandas as pd
from scipy.stats import chi2_contingency

# 创建一个示例DataFrame
data = {
    '会计': [31,8,12,10],
    '统计': [13,16,10,5],
    '市场营销': [16,7,17,7]
}
index = ['专业A', '专业B', '专业C','专业D']
df = pd.DataFrame(data, index=index)

# 计算卡方统计量
chi2, p, dof, expected = chi2_contingency(df)

print("卡方统计量:", chi2)
print("p值:", p)
print("自由度:", dof)
print("期望频数:", expected)

结果输出:

卡方统计量P值自由度期望频数 f_{e}
14.7018590.02270676
[[24.07894737 17.36842105 18.55263158]
 [12.44078947  8.97368421  9.58552632]
 [15.65131579 11.28947368 12.05921053]
 [ 8.82894737  6.36842105  6.80263158]]

 可以看到此时的卡方统计量为14.7,与上面手动计算的会存在一些误差,但影响不大。

结论:

此时以0.05的显著性水平可以得到 \chi^{2} = 14.7 > \chi_{0.05}^{2}(6) = 12.5916,故可以拒绝原假设。


情感如泉涌,文字成舟。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值