python统计分析 --- 1.方差分析、t检验

1. 统计包与数据挖掘

1.1 数据分析流

进行数据分析应该遵循一个什么样的步骤

在这里插入图片描述

1.2 数据统计包

numpy
1.pandas提供basestat功能:单变量、双变量数据分析,包括描述统计(集中和离散、图形、交叉表)、相关分析(r、卡方)等。
2.statsmodels提供假设检验及统计模型功能,主要研究结构性归因问题,并不强调预测功能,主要为推论统计小数据服务。
3.sklearn提供数据挖掘模型功能,主要研究预测性问题,主要为大数据服务,以探讨速度问题为特征。
4.Deep Learning深度学习,侧重数据挖掘及复杂智能方法、已非线性模型为主,擅长处理非结构数据。
5.PyMC拟合贝叶斯模型,侧重于业务问题和统计算法的整合,这类技术提供业务知识对统计模型的修正。
6.Seaborn基于matplotlib的可视化功能,统计应用者最重要的可视化包。
7.opencv-python图片视频库。

2. 方差分析

分析方法有多种
x有分散和连续两种
y有连续和分散两种
在这里插入图片描述

2.1 T检验(单因素方差分析)

  • 2.1. 卷烟厂案例
  1. 导入卷烟厂数据
#=======================================================================================
#警告:原始数据的实际意义均经过脱敏,所有数据仅供数据分析案例使用,不能作为商业用途参考。
#数据集:烟草、卷烟工艺、客户信息表、短期绩效、商品材质等
#=========================================================================================

#导入包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.formula.api as smf
from sklearn import linear_model
%matplotlib inline
#中文显示
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False

#使用pandas读取数据支持xls和xlsx
data=pd.read_excel(r"烟草.xlsx")
data.head(6)#显示数据开头6行
# data.info()
  1. 数据整理
# scipy这个包很容易进行数值计算、优化的问题;
# scipy.stats导入py统计包
# ttest_ind导入t检验
from scipy.stats import ttest_ind as ttest, levene
from scipy import stats
#异方差检验-部门
bgroup1=data[data["班次"]=='早班']["总耗"] # 提取出早班的总耗为bgroup1
bgroup2=data[data["班次"]=='晚班']["总耗"] # 提取出早班的总耗为bgroup2
# levene(bgroup1,bgroup2)
# #单样本t检验
# stats.ttest_1samp(data["总耗"],3)
#独立样本t检验-性别
ttest(bgroup1,bgroup2,equal_var=False)#equal_var=True 
  1. 分析过程
    在这里插入图片描述
    计算结果是
Ttest_indResult(statistic=-1.0935840682920928,
 pvalue=0.2741819213824044)

statistic统计值,statistic=bgroup1-bgroup2 为负数,表明bgroup1小于bgroup2,说明晚班总耗高于早班
pvalue为显著性,显著性不明显,所以早班和晚班耗能一样,差异与统计误差造成
(大于0.05是不显著,小于0.05是显著)

statistic=bgroup1-bgroup2 = -1.0935840682920928
  • 方差分析
    把t检验改为方差分析
# scipy这个包很容易进行数值计算、优化的问题;
# scipy.stats导入py统计包
# ttest_ind导入t检验
from scipy.stats import ttest_ind as ttest, levene
from scipy import stats
#异方差检验-部门
bgroup1=data[data["班次"]=='早班']["总耗"] # 提取出早班的总耗为bgroup1
bgroup2=data[data["班次"]=='晚班']["总耗"] # 提取出早班的总耗为bgroup2
levene(bgroup1,bgroup2)
# #单样本t检验
# stats.ttest_1samp(data["总耗"],3)
#独立样本t检验-性别
#ttest(bgroup1,bgroup2,equal_var=False)#equal_var=True 

结果

  • pvalue大于0.05,说明方差是齐的,小于0.05是不齐的,
LeveneResult(statistic=5.255884883173223, 
pvalue=0.021907559093342466)

需要把qual_var的值改为True,改为True之后运行代码

# scipy这个包很容易进行数值计算、优化的问题;
# scipy.stats导入py统计包
# ttest_ind导入t检验
from scipy.stats import ttest_ind as ttest, levene
from scipy import stats
#异方差检验-部门
bgroup1=data[data["班次"]=='早班']["总耗"] # 提取出早班的总耗为bgroup1
bgroup2=data[data["班次"]=='晚班']["总耗"] # 提取出早班的总耗为bgroup2
levene(bgroup1,bgroup2)
# #单样本t检验
# stats.ttest_1samp(data["总耗"],3)
# 独立样本t检验-性别
ttest(bgroup1,bgroup2,equal_var=True)#equal_var=True 

pvalue还是大于0.05,表面显著性不明显

Ttest_indResult(statistic=-1.0930198202034351, pvalue=0.27442953509209483)
  • 以上进行两个数据之间的对比可以使用于大数据分析(数据量大于10w条数据),即数据量是比较大的进行分析而不适用于进行小数据分析(数据量小于10w都叫小数据分析)

2.2 T检验 (多因素方差分析)

  • glm 广义线性模型
  • lm 线性模型
# statsmodels小数据的包
# stats 统计
# anova方差
# anova_lm方差分析
#方差分析——多因素和交互
from statsmodels.stats.anova import anova_lm
from statsmodels.stats.multicomp import (pairwise_tukeyhsd,MultiComparison)
# smf.ols表示调用公式的算法,类似y=ax1+bx2+cx3+...
#这里y=总耗
#~表示等号=
modelols=smf.ols("总耗~班次",data=data).fit()
# 提取出anova_lm方差分析模型
anova=anova_lm(modelols)
# 打印anova
print(np.round(anova,3))

# print("部门事后检验",pairwise_tukeyhsd(data['总耗'],data['品牌']))#y和x的位置需要固定
# print("性别事后检验",pairwise_tukeyhsd(data['总耗'],data['品牌']))

#import seaborn as sns
#fig,ax=plt.subplots(2,1,figsize=(16,12))
#sns.lineplot(x="品牌",y="总耗",hue="质量控制",data=data,ax=ax[0])#交互效应图
#sns.violinplot(x="品牌",y="总耗",hue="质量控制",data=data,ax=ax[1])

结果显示如下
在这里插入图片描述

  • df 表示自由度
  • sum_sq 平方求和
  • mean_sq 均值平方和
  • F分布值
  • PR显著性
    在这里插入图片描述

2.3 方差分析——多因素和交互

有些因素之间的显著关系不能通过数值的结果进行分析,需要通过分析图形才能知道之间的相关性,这里就要进行多因素交互分析

#方差分析——多因素和交互
from statsmodels.stats.anova import anova_lm
from statsmodels.stats.multicomp import (pairwise_tukeyhsd,MultiComparison)

modelols=smf.ols("总耗~品牌+质量控制+机器类型+品牌*机器类型",data=data).fit()
anova=anova_lm(modelols)
print(np.round(anova,3))

#print("部门事后检验",pairwise_tukeyhsd(data['总耗'],data['品牌']))#y和x的位置需要固定
#print("性别事后检验",pairwise_tukeyhsd(data['总耗'],data['质量控制']))

import seaborn as sns
fig,ax=plt.subplots(2,1,figsize=(16,12))
sns.lineplot(x="品牌",y="总耗",hue="机器类型",data=data,ax=ax[0])#交互效应图
sns.violinplot(x="品牌",y="总耗",hue="机器类型",data=data,ax=ax[1])

在这里插入图片描述
多因素交互的结果
在这里插入图片描述

  • 笔记:
    y的值一般都是难以获得的值,需要通过一些容易获得值去求解出y的值,即获得一些容易求解的x,然后去得到y值

在这里插入图片描述
在求解y可能会存在多个x的情况,有可能几个有可能10多个,有可能100个,所以维度太多了需要降维度,这里就得采用主次归因了

  • 大数据分析一般采用内衍和外推的方法
  • 小数据分析一般采用主次归因和规则归因的方法

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值