📜  如何在Python中执行重复测量方差分析

📅  最后修改于: 2022-05-13 01:54:26.132000             🧑  作者: Mango

如何在Python中执行重复测量方差分析

Python中的重复测量方差分析用于查找在每组中显示相同主题的三个或更多组的平均值之间是否存在统计学上的显着差异。

假设:

重复测量方差分析涉及以下无效假设和替代假设:

  • 原假设 (H0):µ1 = µ2 = µ3(换句话说,总体均值相等)
  • 备择假设:(哈):据此,至少有一个总体均值与其他均值不同

在Python中执行重复测量方差分析:

让我们考虑一个例子,研究人员很想知道四种不同的发动机油是否会导致不同的汽车行驶里程。为了对此进行测试,他们使用四种不同的发动机油测量了 5 辆汽车的行驶里程。由于每辆车的里程数是通过逐一应用四种发动机油来测量的,因此我们可以使用重复测量方差分析来检查药物之间的平均反应时间是否不同。

安装 numpy、pandas 和 statsmodels 库的语法:

pip3 install numpy pandas statsmodels

在Python中执行重复测量方差分析是一个循序渐进的过程。下面解释这些步骤。

第 1 步:创建数据 

Python3
# Import the library
import numpy as np
import pandas as pd
  
# Create the data
dataframe = pd.DataFrame({'Cars': np.repeat([1, 2, 3, 4, 5], 4),
                          'Engine Oil': np.tile([1, 2, 3, 4], 5),
                          'Mileage': [36, 38, 30, 29,
                                      34, 38, 30, 29,
                                      34, 28, 38, 32,
                                      38, 34, 20, 44,
                                      26, 28, 34, 50]})
  
# Print the dataframe
print(dataframe)


Python3
# Import library
import numpy as np
import pandas as pd
from statsmodels.stats.anova import AnovaRM
  
# Create the data
dataframe = pd.DataFrame({'Cars': np.repeat([1, 2, 3, 4, 5], 4),
                          'Oil': np.tile([1, 2, 3, 4], 5),
                          'Mileage': [36, 38, 30, 29,
                                      34, 38, 30, 29,
                                      34, 28, 38, 32,
                                      38, 34, 20, 44,
                                      26, 28, 34, 50]})
  
# Conduct the repeated measures ANOVA
print(AnovaRM(data=dataframe, depvar='Mileage',
              subject='Cars', within=['Oil']).fit())


输出:

第 2 步:进行重复测量方差分析。

Python为我们提供了来自 statsmodels 库的 AnovaRM()函数来测量重复测量 ANOVA。

例子:

Python3

# Import library
import numpy as np
import pandas as pd
from statsmodels.stats.anova import AnovaRM
  
# Create the data
dataframe = pd.DataFrame({'Cars': np.repeat([1, 2, 3, 4, 5], 4),
                          'Oil': np.tile([1, 2, 3, 4], 5),
                          'Mileage': [36, 38, 30, 29,
                                      34, 38, 30, 29,
                                      34, 28, 38, 32,
                                      38, 34, 20, 44,
                                      26, 28, 34, 50]})
  
# Conduct the repeated measures ANOVA
print(AnovaRM(data=dataframe, depvar='Mileage',
              subject='Cars', within=['Oil']).fit())

输出:

输出

第三步:分析结果。

在此示例中,F 检验统计量等于 0.5679,相应的 p 值为 0.6466。由于该 p 值不小于 0.05,因此我们不能拒绝原假设并得出结论,四种发动机油的平均响应时间在统计上没有显着差异。

第 4 步:报告结果。

现在让我们报告结果:对 5 个人进行单向重复测量方差分析,以解释四种不同发动机油对里程的影响。结果表明,所用药物的类型导致响应时间存在统计学上的显着差异(F(3, 12) = 0.5679,p < 0.6466)。