ANOVA bidireccional: ANOVA bidireccional en estadística significa Análisis de varianza y se utiliza para verificar si existe una diferencia estadísticamente significativa entre el valor medio de tres o más que se ha dividido en dos factores. En palabras simples, ANOVA es una prueba realizada en estadística y se utiliza para interpretar la diferencia entre el valor medio de al menos tres grupos. El objetivo principal de un ANOVA de dos vías es averiguar cómo dos factores afectan una variable de respuesta y averiguar si existe una relación entre los dos factores en la variable de respuesta.
Sintaxis para instalar pandas y bibliotecas NumPy en el sistema:
pip3 install numpy pandas
Realización de un ANOVA de dos vías en Python:
Consideremos un ejemplo en el que los científicos necesitan saber si el crecimiento de las plantas se ve afectado por los fertilizantes y la frecuencia de riego. Plantaron exactamente 30 plantas y las dejaron crecer durante seis meses bajo diferentes condiciones de fertilizantes y frecuencia de riego. Después de exactamente seis meses, registraron las alturas de cada planta en centímetros. Realizar un ANOVA bidireccional en Python es un proceso paso a paso y se analizan a continuación:
Paso 1: importar bibliotecas.
El primer paso es importar las bibliotecas instaladas anteriormente.
Python3
# Importing libraries import numpy as np import pandas as pd
Paso 2: Introduce los datos.
Vamos a crear un marco de datos de pandas que consta de las siguientes tres variables:
- fertilizantes: con qué frecuencia se fertilizó cada planta, es decir, diariamente o semanalmente.
- Riego: con qué frecuencia se regó cada planta, es decir, diariamente o semanalmente.
- altura: la altura de cada planta (en pulgadas) después de seis meses.
Ejemplo:
Python3
# 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]})
Paso 3: Realice el ANOVA de dos vías:
Para realizar el ANOVA de dos vías, la biblioteca de Statsmodels nos proporciona la función anova_lm(). La sintaxis de la función se da a continuación,
Sintaxis:
sm.stats.anova_lm(modelo, tipo=2)
Parámetros:
- modelo: Representa las estadísticas del modelo.
- tipo: Representa el tipo de prueba Anova a realizar que es { I o II o III o 1 o 2 o 3 }
Python3
# 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)
Paso 4: Combinando todos los pasos.
Ejemplo:
Python3
# 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)
Producción:
Interpretando el resultado:
Los siguientes son los valores p para cada uno de los factores en la salida:
- El valor p del fertilizante es igual a 0.913305
- El valor p de Riego es igual a 0.990865
- El Fertilizante * Riego: p-valor es igual a 0.904053
Los valores de p para agua y sol resultan ser menores a 0.05 lo que implica que las medias de ambos factores poseen un efecto estadísticamente significativo en la altura de la planta. El valor p para el efecto de interacción (0,904053) es superior a 0,05, lo que indica que no existe un efecto de interacción significativo entre la frecuencia de fertilización y la frecuencia de riego.