¿Cómo puedo explicar la covarianza espacial en un modelo lineal?

10

Antecedentes

Tengo datos de un estudio de campo en el que hay cuatro niveles de tratamiento y seis réplicas en cada uno de los dos bloques. (4x6x2 = 48 observaciones)

Los bloques están separados aproximadamente 1 milla, y dentro de los bloques, hay una cuadrícula de 42 parcelas de 2m x 4m y una pasarela de 1m de ancho; mi estudio solo usó 24 parcelas en cada bloque.

Me gustaría evaluar evaluar la covarianza espacial.

Aquí hay un análisis de ejemplo que utiliza los datos de un solo bloque, sin tener en cuenta la covarianza espacial. En el conjunto de datos, plotes la identificación del gráfico, xes la ubicación xy la ubicación y yde cada gráfico con el gráfico 1 centrado en 0, 0. leveles el nivel de tratamiento y responsees la variable de respuesta.

layout <- structure(list(plot = c(1L, 3L, 5L, 7L, 8L, 11L, 12L, 15L, 16L, 
17L, 18L, 22L, 23L, 26L, 28L, 30L, 31L, 32L, 35L, 36L, 37L, 39L, 
40L, 42L), level = c(0L, 10L, 1L, 4L, 10L, 0L, 4L, 10L, 0L, 4L, 
0L, 1L, 0L, 10L, 1L, 10L, 4L, 4L, 1L, 1L, 1L, 0L, 10L, 4L), response = c(5.93, 
5.16, 5.42, 5.11, 5.46, 5.44, 5.78, 5.44, 5.15, 5.16, 5.17, 5.82, 
5.75, 4.48, 5.25, 5.49, 4.74, 4.09, 5.93, 5.91, 5.15, 4.5, 4.82, 
5.84), x = c(0, 0, 0, 3, 3, 3, 3, 6, 6, 6, 6, 9, 9, 12, 12, 12, 
15, 15, 15, 15, 18, 18, 18, 18), y = c(0, 10, 20, 0, 5, 20, 25, 
10, 15, 20, 25, 15, 20, 0, 15, 25, 0, 5, 20, 25, 0, 10, 20, 
25)), .Names = c("plot", "level", "response", "x", "y"), row.names = c(NA, 
-24L), class = "data.frame")

model <- lm(response ~ level, data = layout)      
summary(model)

Preguntas

  1. ¿Cómo puedo calcular una matriz de covarianza e incluirla en mi regresión?
  2. Los bloqueos son muy diferentes, y existen fuertes interacciones de bloque * de tratamiento. ¿Es apropiado analizarlos por separado?
David LeBauer
fuente
1
Las parcelas 37 y 39 están ambas en x = 18, y = 10. ¿Error de tipografía?
Aaron dejó Stack Overflow
@ Aaron, gracias por señalar eso. y = [0,10]. Fijo.
David LeBauer

Respuestas:

10

1) Puede modelar la correlación espacial con la nlmebiblioteca; Hay varios modelos posibles que puede elegir. Ver páginas 260-266 de Pinheiro / Bates.

Un buen primer paso es hacer un variograma para ver cómo la correlación depende de la distancia.

library(nlme)
m0 <- gls(response ~ level, data = layout)  
plot(Variogram(m0, form=~x+y))

Aquí, el semivariograma de la muestra aumenta con la distancia, lo que indica que las observaciones están correlacionadas espacialmente.

Una opción para la estructura de correlación es una estructura esférica; eso podría modelarse de la siguiente manera.

m1 <- update(m0, corr=corSpher(c(15, 0.25), form=~x+y, nugget=TRUE))

Este modelo parece encajar mejor que el modelo sin estructura de correlación, aunque es muy posible que también se pueda mejorar con una de las otras posibles estructuras de correlación.

> anova(m0, m1)
   Model df     AIC      BIC    logLik   Test  L.Ratio p-value
m0     1  3 46.5297 49.80283 -20.26485                        
m1     2  5 43.3244 48.77961 -16.66220 1 vs 2 7.205301  0.0273

2) También puede intentar incluir xy ydirectamente en el modelo; Esto podría ser apropiado si el patrón de correlación depende de algo más que la distancia. En su caso (mirando las imágenes de sesqu) parece que para este bloque de todos modos, puede tener un patrón diagonal.

Aquí estoy actualizando el modelo original en lugar de m0 porque solo estoy cambiando los efectos fijos, por lo que ambos modelos deben ajustarse usando la máxima probabilidad.

> model2 <- update(model, .~.+x*y)
> anova(model, model2)
Analysis of Variance Table

Model 1: response ~ level
Model 2: response ~ level + x + y + x:y
  Res.Df    RSS Df Sum of Sq      F   Pr(>F)   
1     22 5.3809                                
2     19 2.7268  3    2.6541 6.1646 0.004168 **

Para comparar los tres modelos, deberá ajustarlos a todos glsy al método de máxima verosimilitud en lugar del método predeterminado de REML.

> m0b <- update(m0, method="ML")
> m1b <- update(m1, method="ML")
> m2b <- update(m0b, .~x*y)
> anova(m0b, m1b, m2b, test=FALSE)
    Model df      AIC      BIC     logLik
m0b     1  3 38.22422 41.75838 -16.112112
m1b     2  5 35.88922 41.77949 -12.944610
m2b     3  5 29.09821 34.98847  -9.549103

Recuerde que, especialmente con su conocimiento del estudio, es posible que pueda llegar a un modelo que sea mejor que cualquiera de estos. Es decir, el modelo m2bno debe considerarse necesariamente como el mejor todavía.

Nota: Estos cálculos se realizaron después de cambiar el valor x del gráfico 37 a 0.

Aaron dejó Stack Overflow
fuente
gracias por tu útil respuesta; no está claro por qué en la parte 2 actualizó en modellugar de m0, por ejemplo. m2 <- update(m0, .~.+x*y)para que los tres modelos se puedan comparar usando anova(m0,m1,m2); después de hacer esto, m2es un gran perdedor (AIC = 64) parece que tu parte
David LeBauer
ps la última línea debería ser 'después de cambiar el valor y de la gráfica 37 a 5'; El valor real es 0, pero los resultados son equivalentes.
David LeBauer
Si compara m0, m1y m2como sugiere, recibe la advertencia: Fitted objects with different fixed effects. REML comparisons are not meaningful. Para comparar efectos fijos, debe usar la probabilidad máxima regular en lugar de REML. Ver editar.
Aaron dejó Stack Overflow
Gracias por toda tu ayuda. No estoy seguro de por qué, pero obtengo errores cuando intento ajustar otras estructuras de correlación, por ejemplo, usando corExp como en el ejemplo de Pinheiro y Bates. He abierto una pregunta sobre SO sobre este error, pero agradecería su aporte.
David LeBauer
4

1) ¿Cuál es su variable explicativa espacial? Parece que el plano x * y sería un modelo pobre para el efecto espacial.

trama de tratamientos y respuestas

i=c(1,3,5,7,8,11,14,15,16,17,18,22,23,25,28,30,31,32,35,36,39,39,41,42)
l=rep(NA,42)[i];l[i]=level
r=rep(NA,42)[i];r[i]=response
image(t(matrix(-l,6)));title("treatment")
image(t(matrix(-r,6)));title("response")

2) Al ver cómo los bloques están separados 1 milla y espera ver efectos por solo 30 metros, diría que es completamente apropiado analizarlos por separado.

sesqu
fuente
La visualización es útil, pero si compara la esquina inferior derecha con la esquina superior derecha de las figuras, me parece que la ubicación tiene un efecto más fuerte que el nivel. (ps creo que l [i] = la respuesta debería ser r [i] = ...)
David LeBauer
Si. El efecto de ubicación es notable, por lo que realmente querrá un buen modelo para eso antes de comenzar a estimar los efectos del tratamiento. Desafortunadamente, hay muchos datos faltantes, por lo que es difícil decir cuál debería ser: lo mejor que se me ocurre es un efecto de ubicación de modelado como un promedio de la respuesta de los vecinos + componente aleatorio, y luego intentar el tratamiento con eso . Eso es muy sospechoso, por lo que cualquier conocimiento de dominio adicional sería valioso. error tipográfico corregido.
sesqu
@sesqu ... no faltan datos, hay datos de las 24 parcelas ubicadas al azar.
David LeBauer
Faltan datos en el sentido de que no todos los pares x, y tienen datos.
Aaron dejó Stack Overflow