Python方差,python重复测量方差分析

  Python方差,python重复测量方差分析

  1.方差分析

  方差分析是通过检验所有总体的均值是否相等来判断不同类型的自变量对数值因变量是否有显著影响。

  根据自变量的数量,它可以分为:

  单因素方差分析

  双因素方差分析

  多元方差分析

  名词解释:

  因素:方差分析的研究变量;比如我们研究行业内投诉量的差异,行业就叫因素。

  水平:因素的含量称为水平;例如,如果总共研究了4个行业,则行业因素的级别为4。

  2.方差分析的步骤

  2.1提出假设

  H0:自变量对因变量没有显著影响。

  H1:自变量对因变量有重大影响。

  2.2构建检验统计

  1)计算每个样本的平均值

  2)计算所有观察值的总平均值。

  3)计算误差的平方和。

  总平方和SST:

  组间平方和SSA:

  组内平方和SSE:

  其中SST=SSA SSE

  4)计算统计。

  SST的自由度是n-1,其中n是所有观测值的个数。

  SSA的自由度是k-1,其中k是因子级别的数量

  SSE的自由度是n-k。

  组间方差MSA:

  组内方差MSE:

  测试数量f:

  3.python实现

  经常与消费者、生产者、销售者或服务者发生纠纷。发生纠纷后,消费者往往会向消费者协会投诉。为了评价这些行业的服务质量,选取了四个行业,每个行业选取几家企业。具体数据如下:

  零售业

  旅游业

  航空公司

  制造业

  57

  六十八

  31

  四十四

  66

  39

  四十九个

  51

  四十九个

  29

  21

  65

  40

  45

  34

  77

  34

  五十六岁

  40

  58

  53

  51

  四十四

  Python实现代码如下:

  将numpy作为np导入

  进口熊猫作为pd

  导入sklearn

  将scipy.stats作为统计数据导入

  从statsmodels.formula.api导入ols

  从statsmodels.stats.anova导入anova_lm

  从statsmodels.stats.multicomp导入pairwise_tukeyhsd

  导入警告

  warnings.filterwarnings(“忽略”)

  Dic_t1=[{ industry: a , times: 57}

  {《业》:“一”,“次”:66},

  {“行业”:“一”,“时代”:49},

  { 业:一,次:40},

  {“行业”:“一”,“时代”:34},

  {《业》:“一”,“次”:53},

  {“行业”:“一”,“时代”:44},

  {“行业”:“B”,“时代”:68},

  {“行业”:“B”,“时代”:39},

  {“行业”:“B”,“时代”:29},

  {“行业”:“B”,“时代”:45},

  {“行业”:“B”,“时代”:56},

  {“行业”:“B”,“时代”:51},

  {“行业”:“C”,“时代”:31},

  {“行业”:“C”,“时代”:49},

  {“行业”:“C”,“时代”:21},

  { 业:丙,次:34},

  { 行业: C ,时代:40},

  { 业:丁,次:44},

  {“行业”:“D”,“时代”:51},

  { 业:丁,次:65},

  {“行业”:“d”,“时代”:77},

  {Industry: D , Times: 58}]

  Df _ t1=pd.dataframe (DIC _ t1,columns=[industry , times])

  def f_oneway(df,col_fac,col_sta):

  List_fac=df[col_fac]。unique() #分组标签输出

  K=len(list_fac) #分组标签的数量

  n=长度(df)

  X_bar=df[col_sta]。平均值()#总平均值

  SSA=[]

  对于list_fac中的I:

  series _ I=df[df[col _ fac]==I][col _ sta]

  r=len(series_i)

  Xi _酒吧=系列_我.平均()

  SSA.append(r*(xi酒吧-x酒吧)**2)

  SST=round((df[col _ sta]-x _ bar)* * 2)。sum(),4)

  Df_res=pd。DataFrame(columns=[方差来源,平方和,自由度,均方, f值, P值])

  SSA=总和(SSA)

  SSE=SST - SSA

  MSA=SSA/(k-1)

  MSE=SSE/(n-k)

  sig=stats.f.sf(MSA/MSE,k-1,(k-1)*(n-1))

  Df_res[差异源]=[col_fac,组内(错误), sum]

  Df_res[平方和]=[SSA,SSE,SST]

  Df_res[自由度]=[k-1,n-k,n-1]

  Df_res[均方]=[MSA,MSE,-]

  Df_res[F值]=[MSA/MSE,-,-]

  df_res[P值]=[符号,-,-]

  返回df_res

  F_oneway(df_t1,行业,时代)

  image.png

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: