es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué los gráficos de R muestran los residuos vs. apalancamiento en lugar de los residuos vs. niveles del factor (prueba ANOVA y modelo con ‘aov’)?

Estoy analizando un conjunto de datos con el peso de los recién nacidos y algunos datos sobre sus madres, incluyendo una variable categórica ‘smoke’ – si la madre es fumadora o no.

Realicé una prueba aov y quería graficar gráficos de diagnóstico de un modelo de ANOVA con su ayuda. Esperaba obtener cuatro gráficos, incluyendo un gráfico de ‘Residuos vs Niveles del Factor’. En cambio, obtuve un gráfico de ‘Residuos vs Leveraje’, como si mi variable categórica fuera numérica.

Puede encontrar el conjunto de datos aquí: https://drive.google.com/file/d/1VwiAHdYZF2BrGZZ875GGdkyamKMgxmGU/view?usp=sharing

En esa variable ‘smoke’ tiene valores 0 (no fumadora) y 1 (fumadora). Usé mutate para convertirla en un factor adecuado (entre otros, como la paridad), luego realicé la prueba aov en sí e intenté graficar los resultados para verificar las suposiciones. A continuación puede encontrar mi código:

babies <- read.csv("babies.csv")
babies <- babies %>%
  mutate(parity = factor(parity, 
                         levels = c(0, 1), 
                         labels = c("no primerizas", "primerizas"))) %>%
  mutate(smoke = factor(smoke, 
                          levels = c(0, 1), 
                          labels = c("no fumadora", "fumadora")))

model6 <- aov(babies$bwt ~ babies$smoke)
par(mfrow = c(2,2))
plot(aov(babies$bwt ~ babies$smoke))

El resultado que obtengo en el cuarto gráfico es el siguiente:

Imagen

Intenté verificar si ‘smoke’ es un factor como quería o no, de la siguiente manera:

head(babies$smoke)
[1] no fumadora no fumadora fumadora     no fumadora fumadora     no fumadora
Levels: no fumadora fumadora

Dado que ‘smoke’ es un factor (según entiendo) y una variable categórica, ¿por qué hay leveraje como si fuera una variable numérica? ¿Cómo puedo solucionar esto y obtener el gráfico correcto?

¡Gracias por la ayuda de antemano!

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el gráfico es que la función aov() está tratando la variable categórica smoke como una variable numérica. Esto se debe a que la fórmula utilizada en aov() incluye el símbolo ~, que implica una variable continua. Para solucionarlo, debemos usar la función factor() para convertir smoke en una variable de tipo factor antes de ejecutar la prueba aov().

    Aquí está el código modificado:

    babies <- read.csv("babies.csv")
    babies <- babies %>% 
      mutate(parity = factor(parity, 
                             levels = c(0, 1), 
                             labels = c("no primogénito", "primogénito"))) %>% 
      mutate(smoke = factor(smoke, 
                            levels = c(0, 1), 
                            labels = c("no fumador", "fumador")))
    
    babies$smoke <- factor(babies$smoke)
    
    model6 <- aov(babies$bwt ~ babies$smoke)
    par(mfrow = c(2,2))
    plot(model6)
    

    Al hacer que la variable smoke sea un factor antes de ejecutar aov(), podemos asegurarnos de que la función la trate como una variable categórica. Los gráficos de diagnóstico resultantes deberían mostrar el gráfico adecuado de Residuos vs Niveles del Factor.

Comments are closed.