Quiero realizar un análisis ANCOVA de los datos relacionados con la densidad de epífitas vegetales. Al principio, me gustaría saber si hay alguna diferencia en la densidad de plantas entre dos pendientes, una N y una S, pero tengo otros datos como la altitud, la apertura del dosel y la altura de la planta huésped. Sé que mi covariable deberían ser las dos pendientes (N y S). Construí este modelo que corre en R y aunque no tengo idea si funciona bien. También me gustaría saber cuál es la diferencia si uso el símbolo +
o *
.
model1 <- aov(density~slope+altitude+canopy+height) summary(model1) model1
Comentarios
- + calculará únicamente los efectos principales, * estimará las interacciones entre factores relacionados con *. Los marcos de ANCOVA suelen estimar solo un efecto principal del factor continuo, pero las interacciones entre todos los factores agrupados.
Respuesta
La herramienta básica para esto es lm
; tenga en cuenta que aov
es un contenedor para lm
.
En particular, si tiene alguna variable de agrupación (factor), $ g $ y una covariable continua $ x $ , el modelo y ~ x + g
encajaría en un modelo ANCOVA de efectos principales, mientras que y ~ x * g
encajaría en un modelo que incluye interacción con la covariable. aov
tomará las mismas fórmulas.
Preste especial atención a Note
en la ayuda sobre aov
.
En cuanto a +
vs *
, russellpierce prácticamente lo cubre, pero te recomiendo que consultes ?lm
y ?formula
y, sobre todo, la sección 11.1 del manual Una introducción a R que viene con R (o puede encontrarlo en línea si no ha averiguado cómo encontrarlo en su computadora; lo más fácil es encontrar el menú desplegable «Ayuda» en R o RStudio).
Comentarios
Responder
Recomiendo obtener y leer Descubriendo estadísticas 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 está usando lm
o aov
(yo uso aov
) asegúrate de establecer los contrastes usando «contrasts «antes de realizar aov
o lm
. R usa contrastes no ortogonales por defecto que pueden estropear todo en un ANCOVA. Si desea establecer contrastes ortogonales use:
contrasts(dataname$factorvariable)=contr.poly(# of levels, i.e. 3)
luego ejecute su modelo como
model.1=aov(dv~covariate+factorvariable, data=dataname)
Para ver el modelo, utilice:
Anova(model.1, type="III")
Asegúrese de utilizar la «A» Anova
aquí y no anova
. Esto dará resultados utilizando SS tipo III.
summary.lm(model.1)
dará otro resumen e incluye el R-sq. producción.
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 probar la homogeneidad de las pendientes de regresión, también puede incluir un término de interacción para el IV y la covariable. Eso sería:
model=aov(dv~covariate+IV+covariate:IV, data=dataname)
Si el término de interacción es significativo, entonces no tiene homogeneidad.
Comentarios
- ¿Por qué los contrastes no ortogonales estropean todo?
- Para responder la pregunta anterior sobre » por qué los contrastes no ortogonales estropean todo arriba «. La respuesta es que R por defecto es no ortogonal (es decir, diferencia entre medias), lo que puede causar problemas si desea ver la contribución de cada IV por separado. Cuando especificamos contrastes ortogonales, le decimos a R que queremos que el SS de los IV ‘ s esté completamente particionado y no se superponga. De esta forma podemos ver la variación atribuida a cada predictor de forma limpia y clara. Si no lo especifica, R opta por un enfoque más liberal del contraste.
- ¿Por qué el interés en las SS tipo III?
Respuesta
Aquí hay 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 de IV que genera Anova (lm.object, type = «III»).
Comentarios
- No está ‘ claro que se supone que esto es una respuesta. ¿Lo es? Si es así, edite para aclarar. Si es una pregunta, haga clic en
ASK QUESTION
en la parte superior & preguntando allí. Entonces podemos ayudarlo adecuadamente. - De acuerdo. El mensaje ha sido revisado como una respuesta (complementaria) al anterior.
Respuesta
Usamos Regresión análisis para crear modelos que describan el efecto de la variación en las variables predictoras sobre la variable de respuesta. A veces, si tenemos una variable categórica con valores como Sí / No o Hombre / Mujer, etc., el análisis de regresión simple da múltiples resultados para cada valor de la variable categórica. En tal escenario, podemos estudiar el efecto de la variable categórica usá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, también denominado ANCOVA.
Ejemplo
Considere los R
datos integrados establecer 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 automóvil también puede depender de él, además del valor de los caballos de fuerza (hp
). Estudiamos el efecto del valor de am
en la regresión entre mpg
y hp
. Se hace usando la función aov()
seguida de la función anova()
para comparar las regresiones múltiples.
Datos de entrada
Cree 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 de predicción y am
como la variable categórica.
input <- mtcars[,c("am","mpg","hp")] head(input)
Cuando ejecutamos el código anterior, 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 de predicción 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, 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 menor que 0.05. Pero la interacción entre estas dos variables no es significativa ya que el valor p es más de 0.05.
Modelo sin interacción entre la variable categórica y la variable predictiva
Cree el modelo de regresión2
result2 <- aov(mpg~hp+am,data=mtcars) summary(result2)
Cuando ejecutamos el código anterior, 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 menor 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 esto usamos la función anova()
.
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 mayor que 0.05 concluimos que la interacción entre caballos de fuerza y tipo de transmisión no es significativa. Por lo tanto, el millaje por galón dependerá de manera similar de la potencia del automóvil en el modo de transmisión manual y automático.
Comentarios
- Entonces ¿Qué fue primero, esta respuesta o esta publicación sobre el punto de tutoriales? tutorialspoint.com/r/r_analysis_of_covariance.htm . ¿Debería eliminarse esta respuesta como plagio? ¿O los tutoriales apuntan simplemente a copiar desde aquí?
anova
(usted ‘ pronto veré si los da en el orden incorrecto porque algunos SS serán negativos si lo hace)