Cómo realizar un ANOVA bidireccional en Python

Se utiliza un ANOVA de dos factores para determinar si existe o no una diferencia estadísticamente significativa entre las medias de tres o más grupos independientes que se han dividido en dos factores.

El propósito de un ANOVA bidireccional es determinar cómo dos factores impactan en una variable de respuesta y determinar si existe o no una interacción entre los dos factores en la variable de respuesta.

Este tutorial explica cómo realizar un ANOVA bidireccional en Python.

Ejemplo: ANOVA bidireccional en Python

Un botánico quiere saber si el crecimiento de las plantas está influenciado por la exposición a la luz solar y la frecuencia de riego. Planta 30 semillas y las deja crecer durante dos meses en diferentes condiciones de exposición a la luz solar y frecuencia de riego. Después de dos meses, registra la altura de cada planta, en pulgadas.

Utilice los siguientes pasos para realizar un ANOVA bidireccional para determinar si la frecuencia de riego y la exposición a la luz solar tienen un efecto significativo en el crecimiento de las plantas y para determinar si existe algún efecto de interacción entre la frecuencia de riego y la exposición a la luz solar.

Paso 1: Ingrese los datos.

Primero, crearemos un DataFrame de pandas que contiene las siguientes tres variables:

  • agua: con qué frecuencia se regó cada planta: diaria o semanalmente
  • sol: cuánta exposición a la luz solar recibió cada planta: baja, media o alta
  • altura: la altura de cada planta (en pulgadas) después de dos meses
importar numpy como np
 importar pandas como pd

#crear datos
df = pd.DataFrame ({'agua': np.repeat (['diario', 'semanal'], 15),
                   'sol': np.tile (np.repeat (['bajo', 'medio', 'alto'], 5), 2),
                   'altura': [6, 6, 6, 5, 6, 5, 5, 6, 4, 5,
                              6, 6, 7, 8, 7, 3, 4, 4, 4, 5,
                              4, 4, 4, 4, 4, 5, 6, 6, 7, 8]})

#ver las primeras diez filas de datos 
df [: 10]

	altura del sol del agua
0 mínimo diario 6
1 mínimo diario 6
2 mínimo diario 6
3 mínimo diario 5
4 mínimo diario 6
5 medico diario 5
6 medico diario 5
7 medico diario 6
8 medico diario 4
9 diario med 5

Paso 2: Realice el ANOVA bidireccional.

A continuación, realizaremos el ANOVA bidireccional utilizando la función anova_lm () de la biblioteca statsmodels:

importación statsmodels.api como SM
 de statsmodels.formula.api importación oles

# realizar ANOVA bidireccional
modelo = ols ('altura ~ C (agua) + C (sol) + C (agua): C (sol)', datos = df) .fit ()
sm.stats.anova_lm (modelo, típico = 2)

	           sum_sq df F PR (> F)
C (agua) 8.533333 1.0 16.0000 0.000527
C (sol) 24,866667 2,0 23,3125 0,000002
C (agua): C (sol) 2.466667 2.0 2.3125 0.120667
Residual 12.800000 24.0 NaN NaN

Paso 3: Interprete los resultados.

Podemos ver los siguientes valores p para cada uno de los factores en la tabla:

  • agua: valor p = .000527
  • sol: valor p = .0000002
  • agua * sol: valor p = .120667

Dado que los valores p para el agua y el sol son inferiores a .05, esto significa que ambos factores tienen un efecto estadísticamente significativo en la altura de la planta.

Y dado que el valor p para el efecto de interacción (.120667) no es menor que .05, esto nos dice que no hay un efecto de interacción significativo entre la exposición a la luz solar y la frecuencia de riego.

Nota: Aunque los resultados de ANOVA nos dicen que la frecuencia de riego y la exposición a la luz solar tienen un efecto estadísticamente significativo en la altura de la planta, necesitaríamos realizar pruebas post-hoc para determinar exactamente cómo los diferentes niveles de agua y luz solar afectan la altura de la planta.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Puede usar la siguiente sintaxis para cambiar el tamaño de los elementos en una leyenda de ggplot2: ggplot (datos, aes…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!