Python方差分析实践


实践数据:链接: 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,所以不同时间与地区的销售量不相同。

你可能感兴趣的:(Python方差分析实践)