如何在Python中进行双向方差分析

如何在Python中进行双向方差分析

双向方差分析:双向方差分析在统计学中是指方差分析,它用于检查被分为两个因素的三个或更多的平均值之间是否存在统计学上的显著差异。简单地说,方差分析是统计学中进行的一种测试,它用于解释至少三个组的平均值之间的差异。双向方差分析的主要目的是找出两个因素对响应变量的影响,并找出两个因素对响应变量是否有关系。

在系统中安装pandas和NumPy库的语法。

pip3 install numpy pandas

在Python中执行双向方差分析

让我们考虑一个例子,科学家需要知道植物的生长是否受到肥料和浇水频率的影响。他们种植了整整30株植物,让它们在不同的肥料和浇水频率条件下生长了六个月。整整六个月后,他们记录了每株植物的高度厘米。在Python中执行双向方差分析是一个循序渐进的过程,下面将讨论这些。

第1步:导入库。

第一步是导入上面安装的库。

# Importing libraries
import numpy as np
import pandas as pd

第2步:输入数据。

让我们创建一个由以下三个变量组成的pandas DataFrame。

  • Fertilizer:每种植物的施肥频率,即每天或每周。
  • Watering:每种植物的浇水频率,即每天或每周一次。
  • height:6个月后每株植物的高度(英寸)。

示例:

# Importing libraries
import numpy as np
import pandas as pd
  
# Create a dataframe
dataframe = pd.DataFrame({'Fertilizer': np.repeat(['daily', 'weekly'], 15),
                          'Watering': np.repeat(['daily', 'weekly'], 15),
                          'height': [14, 16, 15, 15, 16, 13, 12, 11, 14, 
                                     15, 16, 16, 17, 18, 14, 13, 14, 14, 
                                     14, 15, 16, 16, 17, 18, 14, 13, 14, 
                                     14, 14, 15]})

第3步:进行双向方差分析。

为了进行双向方差分析,Statsmodels库为我们提供了anova_lm()函数。该函数的语法如下。

语法:

sm.stats.anova_lm(model, type=2)

参数:

  • model:它代表了模型的统计数据
  • type:它代表要执行的Anova测试的类型,即{ I或II或III或1或2或3}。
# Importing libraries
import statsmodels.api as sm
from statsmodels.formula.api import ols
  
# Performing two-way ANOVA
model = ols(
    'height ~ C(Fertilizer) + C(Watering) +\
    C(Fertilizer):C(Watering)', data=df).fit()
sm.stats.anova_lm(model, typ=2)

第4步:结合所有的步骤。

示例:

# Importing libraries
import statsmodels.api as sm
from statsmodels.formula.api import ols
  
# Create a dataframe
dataframe = pd.DataFrame({'Fertilizer': np.repeat(['daily', 'weekly'], 15),
                          'Watering': np.repeat(['daily', 'weekly'], 15),
                          'height': [14, 16, 15, 15, 16, 13, 12, 11,
                                     14, 15, 16, 16, 17, 18, 14, 13, 
                                     14, 14, 14, 15, 16, 16, 17, 18,
                                     14, 13, 14, 14, 14, 15]})
  
  
# Performing two-way ANOVA
model = ols('height ~ C(Fertilizer) + C(Watering) +\
C(Fertilizer):C(Watering)',
            data=dataframe).fit()
result = sm.stats.anova_lm(model, type=2)
  
# Print the result
print(result)

输出:

如何在Python中进行双向方差分析

输出

对结果的解释:

以下是输出中每个因素的P值。

  • Fertilizer的P值等于0.913305
  • Watering的P值等于0.990865
  • Fertilizer*Watering :P值等于0.904053

水和阳光的p值小于0.05,这意味着这两个因素的平均值对植物高度有统计学上的显著影响。交互效应的P值(0.904053)大于0.05,说明施肥频率和浇水频率之间没有明显的交互效应。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程