数据学习(十五)-方差分析实践
作者:互联网
有A、B、C、D四个地区,不同地区的销售量不一样,现抽取了不同时间段内每个地区的销售量,试解决:
1、每个地区间的销售量是否相同?
2、不同月份的销售量是否相同?
3、不同时间与地区的销售量是否相同?
1、每个地区间的销售量是否相同?
(1)提出假设
H0:u1=u2=u3=…=un,每个地区间的销售量没有显著变化。
H1:ui(i=1,2,3,…)不完全相等,地区对销量有显著变化。
(2)构造检验的统计量
计算各水平的均值
import pandas as pd
import numpy as np
data=pd.read_excel("E:\销售数据.xlsx")
data
#A地区的均值
print(data['A'].mean())
#B地区的均值
print(data['B'].mean())
#C地区的均值
print(data['C'].mean())
#D地区的均值
print(data['D'].mean())
#总均值
sum1=data['A'].sum()+data['B'].sum()+data['C'].sum()+data['D'].sum()
ave=sum1/(4*data.shape[0])
print(ave)
结果是:
计算误差平方和
# SST 总误差平方和
SST=sum((data['A']-ave)*(data['A']-ave))+sum((data['B']-ave)*(data['B']-ave))+sum((data['C']-ave)*(data['C']-ave))+sum((data['D']-ave)*(data['D']-ave))
print("SST:",SST)
# SSA 水平项误差平凡和
SSA=11*(data['A'].mean()-ave)*(data['A'].mean()-ave)+11*(data['B'].mean()-ave)*(data['B'].mean()-ave)+11*(data['C'].mean()-ave)*(data['C'].mean()-ave)+11*(data['D'].mean()-ave)*(data['D'].mean()-ave)
print("SSA:",SSA)
# SSE 误差项平方和
SSE=sum((data['A']-data['A'].mean())*(data['A']-data['A'].mean()))+sum((data['B']-data['B'].mean())*(data['B']-data['B'].mean()))+sum((data['C']-data['C'].mean())*(data['C']-data['C'].mean()))+\
sum((data['D']-data['D'].mean())*(data['D']-data['D'].mean()))
print("SSE:",SSE)
结果是:
#均方
MSA=SSA/(4-1)
print("MSA:",MSA)
MSE=SSE/(44-4)
print("MSE:",MSE)
F=MSA/MSE
print("F分布是:",F)
结果是:
由于查的F阿法(3,40)=3.13
由于F>Fa ,所以我们认为地区对销售量有显著性影响,即每个地区间销售量不同。
2、不同月份的销售量是否相同?
data=data[['A','B','C','D','month']].copy()
data1=data.groupby(['month']).agg('sum').reset_index()
data1
#1月的均值
print((data1[data1['month']==1]['A']+data1[data1['month']==1]['B']+data1[data1['month']==1]['C']+data1[data1['month']==1]['D'])/4)
#2月的均值
print((data1[data1['month']==3]['A']+data1[data1['month']==3]['B']+data1[data1['month']==3]['C']+data1[data1['month']==3]['D'])/4)
#3月的均值
print((data1[data1['month']==12]['A']+data1[data1['month']==12]['B']+data1[data1['month']==12]['C']+data1[data1['month']==12]['D'])/4)
data1['ave']=[22445.5,13402.0,26101.75]
#总均值
sum1=data1['A'].sum()+data1['B'].sum()+data1['C'].sum()+data1['D'].sum()
ave=sum1/(4*data1.shape[0])
print(ave)
# SST 总误差平方和
SST=sum((data1['A']-ave)*(data1['A']-ave))+sum((data1['B']-ave)*(data1['B']-ave))+sum((data1['C']-ave)*(data1['C']-ave))+sum((data1['D']-ave)*(data1['D']-ave))
print("SST:",SST)
# SSA 水平项误差平凡和
SSA=4*sum((data1['ave']-ave)*(data1['ave']-ave))
print("SSA:",SSA)
# SSE 误差项平方和
SSE=SST-SSA
print("SSE:",SSE)
#均方
MSA=SSA/(4-1)
print("MSA:",MSA)
MSE=SSE/(44-4)
print("MSE:",MSE)
F=MSA/MSE
print("F分布是:",F)
由于F>Fa ,所以我们认为不同月份对销售量有显著性影响,即每个月销售量不同。
3、不同时间与地区的销售量是否相同?
双因素对方差分析的影响
分为行因素 和列因素
我将时间为行因素,将地区为列因素。
SSR为行因素产生的误差平方和
#SST=SSR+SSC+SSE
# SST 总误差平方和
SST=sum((data1['A']-ave)*(data1['A']-ave))+sum((data1['B']-ave)*(data1['B']-ave))+sum((data1['C']-ave)*(data1['C']-ave))+sum((data1['D']-ave)*(data1['D']-ave))
print("SST:",SST)
SSR=SSA2
print("SSR:",SSR)
SSC=SSA1
print("SSC:",SSC)
SSE=SST-SSR-SSC
print("SSE:",SSE)
MSR=SSR/2
print("MSR:",MSR)
MSC=SSC/3
print("MSC:",MSC)
MSE=SSE/(2*3)
print("MSE:",MSE)
Fr=MSR/MSE
print("Fr:",Fr)
Fc=MSC/MSE
print("Fc:",Fc)
Fr>Fa,Fc>Fa,所以不同时间与地区的销售量不相同。
标签:data,sum,实践,方差分析,十五,print,ave,data1,mean 来源: https://blog.csdn.net/Julysxl/article/details/104444536