¿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:
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!
davy.ai
El problema con el gráfico es que la función
aov()
está tratando la variable categóricasmoke
como una variable numérica. Esto se debe a que la fórmula utilizada enaov()
incluye el símbolo~
, que implica una variable continua. Para solucionarlo, debemos usar la funciónfactor()
para convertirsmoke
en una variable de tipo factor antes de ejecutar la pruebaaov()
.Aquí está el código modificado:
Al hacer que la variable
smoke
sea un factor antes de ejecutaraov()
, 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.