实践数据:链接: https://pan.baidu.com/s/1ljLoZrT_MnAZYnpOmJt0wQ 提取码: xw8p
#1、每个地区间的销售量是否相同?
#(1)提出假设
#H0:u1=u2=u3=…=un,每个地区间的销售量没有显著变化。
#H1:ui(i=1,2,3,…)不完全相等,地区对销量有显著变化。
#(2)构造检验的统计量
#计算各水平的均值 因素为地区,水平为4,因变量为销售量,根据单因素销售量
import pandasas pd
import numpyas np
data = pd.read_excel(r"D:\Users\Downloads\销售数据.xlsx")
print('A地区的均值:',data['A'].mean())
print('B地区的均值:',data['B'].mean())
print('C地区的均值:',data['C'].mean())
print('D地区的均值:',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=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)
SSA1=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(组间(水平项)误差平方和):",SSA1)
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=SSA1/(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、不同月份的销售量是否相同?
import datetime
data=data[['A','B','C','D','month']].copy()
def fun_m(x):
a=datetime.datetime.strftime(x, '%Y-%m')
return a
data['month'] = data['month'].apply(lambda x:fun_m(x))
#按月份汇总统计值
data1=data.groupby(['month']).agg('sum').reset_index()
#print(data1['month'])
print('1月的均值:', (data1[data1['month']=='2019-01']['A']+data1[data1['month']=='2019-01']['B']+data1[data1['month']=='2019-01']['C']+data1[data1['month']=='2019-01']['D'])/4)
print('3月的均值:', (data1[data1['month']=='2019-03']['A']+data1[data1['month']=='2019-03']['B']+data1[data1['month']=='2019-03']['C']+data1[data1['month']=='2019-03']['D'])/4)
print('12月的均值:',(data1[data1['month']=='2019-12']['A']+data1[data1['month']=='2019-12']['B']+data1[data1['month']=='2019-12']['C']+data1[data1['month']=='2019-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 水平项误差平凡和
SSA2=4*sum((data1['ave']-ave)*(data1['ave']-ave))
print("SSA:",SSA2)
# SSE 误差项平方和
SSE=SST-SSA2
print("SSE:",SSE)
#均方
MSA=SSA2/(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 总误差平方和
data1=data[['A','B','C','D','month']].copy()
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,所以不同时间与地区的销售量不相同。