18 votos

Cómo realizar un ANCOVA en R

Quiero realizar un análisis ANCOVA de datos relativos a la densidad de epífitas vegetales. En principio, me gustaría saber si hay alguna diferencia en la densidad de plantas entre dos pendientes, una N y otra S, pero tengo otros datos como la altitud, la apertura del dosel y la altura de la planta huésped. Sé que mi covariable tendría que ser las dos pendientes (N y S). He construido este modelo que se ejecuta en R y aunque no tengo ni idea de si funciona bien. También me gustaría saber cuál es la diferencia si utilizo el símbolo + o * .

model1 <- aov(density~slope+altitude+canopy+height)
summary(model1)
model1

16voto

AdamSane Puntos 1825

La herramienta básica para ello es lm ; tenga en cuenta que aov es una envoltura para lm .

En particular, si tiene alguna variable de agrupación (factor), g y una covariable continua x el modelo y ~ x + g se ajustaría a un modelo ANCOVA de efectos principales, mientras que y ~ x * g ajustaría un modelo que incluye la interacción con la covariable. aov tomarán las mismas fórmulas.

Preste especial atención al Note en la ayuda de aov .

En cuanto a + vs * russellpierce lo cubre bastante bien, pero te recomiendo que eches un vistazo a ?lm y ?formula y muy especialmente la sección 11.1 del manual Introducción a R que viene con R (o puede encontrarlo en línea si no ha averiguado cómo encontrarlo en su ordenador; lo más fácil es encontrar el menú desplegable "Ayuda" en R o RStudio).

10voto

sid Puntos 76

Recomiendo conseguir y leer Descubrir la estadística con R por Campo. Tiene una buena sección sobre ANCOVA.

Para ejecutar ANCOVA en R cargue los siguientes paquetes:

car
compute.es
effects
ggplot2
multcomp
pastecs
WRS

Si utiliza lm o aov (Yo uso aov ) asegúrese de ajustar los contrastes mediante la función "contrastes" antes de hacer cualquiera de las dos cosas aov o lm . R utiliza contrastes no ortogonales por defecto, lo que puede estropearlo todo en un ANCOVA. Si desea establecer contrastes ortogonales utilice:

contrasts(dataname$factorvariable)=contr.poly(# of levels, i.e. 3) 

a continuación, ejecute su modelo como

model.1=aov(dv~covariate+factorvariable, data=dataname)

Para ver el modelo utilice:

Anova(model.1, type="III") 

Asegúrate de usar la "A" mayúscula Anova aquí y no anova . Esto dará resultados utilizando el tipo III SS.

summary.lm(model.1) dará otro resumen e incluye la salida R-sq.

posth=glht(model.1, linfct=mcp(factorvariable="Tukey"))  ##gives the post-hoc Tukey analysis
summary(posth) ##shows the output in a nice format.

Si desea comprobar la homogeneidad de las pendientes de regresión, también puede incluir un término de interacción para el IV y la covariable. Esto sería:

model=aov(dv~covariate+IV+covariate:IV, data=dataname)

Si el término de interacción es significativo, no existe homogeneidad.

4voto

He aquí una documentación complementaria http://goo.gl/yxUZ1R del procedimiento sugerido por @Butorovich. Además, mi observación es que cuando la covariable es binaria, el uso de summary(lm.object) daría la misma estimación IV que la generada por Anova(lm.object, type="III").

3voto

linkxs Puntos 9

Utilizamos el análisis de regresión para crear modelos que describan el efecto de la variación de las variables predictoras sobre la variable de respuesta. A veces, si tenemos una variable categórica con valores como Sí/No o Masculino/Femenino, etc., el análisis de regresión simple da múltiples resultados para cada valor de la variable categórica. En este caso, podemos estudiar el efecto de la variable categórica utilizándola junto con la variable predictora y comparando las líneas de regresión para cada nivel de la variable categórica. Este tipo de análisis se denomina análisis de covarianza o ANCOVA.

Ejemplo
Considere la R conjunto de datos integrado mtcars . En él observamos que el campo am representa el tipo de transmisión (automática o manual). Es una variable categórica con valores 0 y 1. El valor de millas por galón ( mpg ) de un coche también puede depender de él además del valor de la potencia ( hp ). Estudiamos el efecto del valor de am sobre la regresión entre mpg y hp . Para ello se utiliza la función aov() seguida de la función anova() para comparar las regresiones múltiples.

Datos de entrada
Crear un marco de datos que contenga los campos mpg , hp y am del conjunto de datos mtcars . Aquí tomamos mpg como variable de respuesta, hp como variable predictiva y am como variable categórica.

input <- mtcars[,c("am","mpg","hp")]
head(input)

Cuando ejecutamos el código anterior, se produce el siguiente resultado:

                  am  mpg  hp
Mazda RX4          1 21.0 110
Mazda RX4 Wag      1 21.0 110
Datsun 710         1 22.8  93
Hornet 4 Drive     0 21.4 110
Hornet Sportabout  0 18.7 175
Valiant            0 18.1 105

Análisis ANCOVA
Creamos un modelo de regresión tomando hp como variable predictiva y mpg como variable de respuesta teniendo en cuenta la interacción entre am y hp .

Modelo con interacción entre variable categórica y variable predictiva

Crear modelo de regresión1

result1 <- aov(mpg~hp*am,data=mtcars)
summary(result1)

Cuando ejecutamos el código anterior, se produce el siguiente resultado:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4  77.391 1.50e-09 ***
am           1  202.2   202.2  23.072 4.75e-05 ***
hp:am        1    0.0     0.0   0.001    0.981    
Residuals   28  245.4     8.8                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Este resultado muestra que tanto la potencia como el tipo de transmisión tienen un efecto significativo en las millas por galón ya que el valor p en ambos casos es inferior a 0,05. Pero la interacción entre estas dos variables no es significativa ya que el valor p es superior a 0,05.

Modelo sin interacción entre variable categórica y variable predictiva

Crear el modelo de regresión2

result2 <- aov(mpg~hp+am,data=mtcars)
summary(result2)

Cuando ejecutamos el código anterior, se produce el siguiente resultado:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4   80.15 7.63e-10 ***
am           1  202.2   202.2   23.89 3.46e-05 ***
Residuals   29  245.4     8.5                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Este resultado muestra que tanto la potencia como el tipo de transmisión tienen un efecto significativo en las millas por galón, ya que el valor p en ambos casos es inferior a 0,05.

Comparación de dos modelos
Ahora podemos comparar los dos modelos para concluir si la interacción de las variables es realmente insignificante. Para ello utilizamos el anova() función.

 anova(result1,result2)

 Model 1: mpg ~ hp * am
 Model 2: mpg ~ hp + am
   Res.Df    RSS Df  Sum of Sq     F Pr(>F)
 1     28 245.43                           
 2     29 245.44 -1 -0.0052515 6e-04 0.9806

Como el valor p es superior a 0,05, concluimos que la interacción entre la potencia y el tipo de transmisión no es significativa. Así pues, el kilometraje por galón dependerá de forma similar de la potencia del coche tanto en modo de transmisión automática como manual.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X