Python3数据分析与挖掘建模实战:假设检验、卡方检验、独立t分布检验、方差检验、qq图

前言

补充知识

本篇文章中会使用到统计函数库scipy.stats的基本用法之一:生成服从指定分布的随机数,norm.rvs()。

import scipy.stats as ss
norm_dist=ss.norm.rvs(loc=0,scale=1,size=10)

即生成一组期望为0,标准差为1,长度为10的正态分布随机数。
绘制直方图和分布曲线:
loc=0,scale=1
在这里插入图片描述
loc=10,scale=1
在这里插入图片描述

引入需要用到的库

import numpy as np
import scipy.satas as ss

假设检验 (normaltest)

(理论的知识很多,需要自己补充)
首先我们先构造一组符合正态分布的数据

norm_dist=ss.norm.rvs(size=20)

使用normaltest获得检验统计量和p值

ss.normaltest(norm_dist)

输出结果:
在这里插入图片描述
从图中可以看到这组数据的检验统计量为3.316,p为0.19,设显著性水平为0.05,0.19>0.05,则无法拒绝H0,即该分布符合正态分布。
注意:normaltest是一种基于峰度和偏度的检验方法

卡方检验(四格表检验 chi2_contingency)

例题:

设H0为化妆与性别无关,数据如下:

化妆15(55)95(55)110
不化妆85(45)5(45)90
100100200
ss.chi2_contingency([[15,95],[85,5]])

在这里插入图片描述
第一个值为检验统计量:126
第二个值为p:2.9521414005078985e-29
第三个值为:1
第四个值为理论分布
p远小于显著性水平0.05,所以拒绝H0,即化妆和性别是有很大关系的

独立t分布检验

用于检验两组值的均值是否存在比较大的差异性

ss.ss.ttest_ind(ss.norm.rvs(size=10),ss.norm.rvs(size=20))

在这里插入图片描述
p=0.5,无法拒绝H0,即两组的均值没有什么差别。
接下来我们放大两组值 :

ss.ttest_ind(ss.norm.rvs(size=100),ss.norm.rvs(size=200))

在这里插入图片描述
p变为0.749,所以数据量越多,越能证明均值没什么差别。

方差检验(f_oneway)

多个样本之间的关系

例题:

在这里插入图片描述

ss.f_oneway([49,50,39,40,43],[28,32,30,26,34],[38,40,45,42,48])

在这里插入图片描述
p=0.0026,拒绝H0,即三组均值有差异

qq图

除了通过假设检验的方法 我们还可以通过qq图来对比一个分布是否符合一个已知的分布。可以找到这组数据的分位数,又可以找到正态分布的分位数,横轴为正态分布的分位数的值,纵轴为已知数据的分位数的值。可以得到一个散点图 如果图中的点正对xy轴的角平分线 就是符合分布的。

from statsmodels.graphics.api import qqplot
from matplotlib import pyplot as plt 
plt.show(qqplot(ss.norm.rvs(size=100)))

在这里插入图片描述
因为该散点图中的点集中在xy轴的角平分线上,所以符合正态分布。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值