Proporcione un código R que le permita a uno realizar un ANOVA entre sujetos con -3, -1, 1, 3 contrastes. Entiendo que hay un debate con respecto al tipo apropiado de Suma de cuadrados (SS) para dicho análisis. Sin embargo, como el tipo predeterminado de SS utilizado en SAS y SPSS (Tipo III) se considera el estándar en mi área. Por lo tanto, me gustaría que los resultados de este análisis coincidan perfectamente con lo que generan esos programas de estadísticas. Para ser aceptada, una respuesta debe llamar directamente a aov (), pero se pueden votar otras respuestas (especialmente si son fáciles de entender / usar).
sample.data <- data.frame(IV=rep(1:4,each=20),DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))
Editar: Tenga en cuenta que el contraste que solicito no es un simple contraste lineal o polinomial, sino que es un contraste derivado de una predicción teórica, es decir, el tipo de contraste discutido por Rosenthal y Rosnow.
fuente
Respuestas:
La suma de cuadrados de tipo III para ANOVA está fácilmente disponible a través de la
Anova()
función del paquete del automóvil .La codificación de contraste se puede hacer de varias maneras, utilizando
C()
lacontr.*
familia (como lo indica @nico) o directamente lacontrasts()
función / argumento. Esto se detalla en §6.2 (págs. 144-151) de Estadísticas modernas aplicadas con S (Springer, 2002, 4a ed.). Tenga en cuenta queaov()
es solo una función de contenedor para lalm()
función. Es interesante cuando uno quiere controlar el término de error del modelo (como en un diseño dentro del tema), pero de lo contrario ambos producen los mismos resultados (y cualquiera que sea la forma en que se ajusta a su modelo, aún puede generar ANOVA o LM- como resúmenes consummary.aov
osummary.lm
).No tengo SPSS para comparar las dos salidas, pero algo así como
Vale la pena probarlo en primera instancia.
Acerca de la codificación de factores en R vs. SAS: R considera la línea base o nivel de referencia como el primer nivel en orden lexicográfico, mientras que SAS considera el último. Entonces, para obtener resultados comparables, ya sea que tenga que usar
contr.SAS()
orelevel()
su factor R.fuente
Anova(lm(DV ~ C(IV, c(-3,-1,1,3),1), data=sample.data), type="III")
debería ser mejor. Avísame si te parece bien.Esto puede parecer un poco de autopromoción (y supongo que lo es). Pero desarrollé un paquete lsmeans para R (disponible en CRAN) que está diseñado para manejar exactamente este tipo de situación. Así es como funciona para su ejemplo:
Si lo desea, puede especificar contrastes adicionales en la lista. Para este ejemplo, obtendrá los mismos resultados con el contraste polinómico lineal incorporado:
Para confirmar esto, tenga en cuenta que la
"poly"
especificación lo dirige a llamarpoly.lsmc
, lo que produce estos resultados:Si desea hacer una prueba conjunta de varios contrastes, use la
test
función conjoint = TRUE
. Por ejemplo,Esto producirá una prueba de "tipo III". A diferencia
car::Anova()
, lo hará correctamente independientemente de la codificación de contraste utilizada en la etapa de ajuste del modelo. Esto se debe a que las funciones lineales que se prueban se especifican directamente en lugar de implícitamente a través de la reducción del modelo. Una característica adicional es que se detecta un caso en el que los contrastes que se prueban dependen linealmente y se produce la estadística de prueba correcta y los grados de libertad.fuente
Es posible que desee echar un vistazo a esta publicación de blog:
La obtención de los mismos resultados ANOVA en R que en SPSS - las dificultades con las sumas de cuadrados de Tipo II y Tipo III
( Spoiler: agregue
options(contrasts=c("contr.sum", "contr.poly"))
al comienzo de su secuencia de comandos)fuente
Cuando está haciendo contrastes, está haciendo una combinación lineal específica y establecida de medias de celda dentro del contexto del término de error apropiado. Como tal, el concepto de "Tipo de SS" no es significativo con los contrastes. Cada contraste es esencialmente el primer efecto que usa un SS Tipo I. El "Tipo de SS" tiene que ver con lo que está parcializado o explicado por los otros términos. Para los contrastes, nada se divide ni se explica. El contraste se destaca por sí mismo.
fuente
El hecho de que las pruebas de tipo III se usen en su lugar de trabajo es la razón más débil para seguir usándolas. SAS ha hecho un daño importante a las estadísticas a este respecto. La exégesis de Bill Venables, mencionada anteriormente, es un gran recurso para esto. Solo di no al tipo III; se basa en una noción defectuosa de equilibrio y tiene una potencia menor debido a la tonta ponderación de las células en el caso desequilibrado.
La función de
rms
paquete R proporciona una forma más natural y menos propensa a errores de obtener contrastes generales y poder describir lo que hizocontrast.rms
. Los contrastes pueden ser muy complejos, pero para el usuario son muy simples porque se expresan en términos de diferencias en los valores predictivos. Se admiten pruebas y contrastes simultáneos. Esto maneja efectos de regresión no lineal, efectos de interacción no lineal, contrastes parciales, todo tipo de cosas.fuente
Pruebe el comando Anova en la biblioteca del automóvil. Utilice el argumento type = "III", ya que el valor predeterminado es type II. Por ejemplo:
fuente
También autopromocionado, escribí una función para exactamente esto: https://github.com/samuelfranssens/type3anova
Instalar de la siguiente manera:
También necesitará tener el
car
paquete instalado.fuente