如何解释线性模型中的空间协方差?

机器算法验证 r 空间的 线性模型 协方差
2022-03-05 12:26:53

背景

我有来自实地研究的数据,其中有四个处理水平和两个块中的每个重复六个。(4x6x2=48 次观察)

街区相距约 1 英里,街区内有 42 个 2m x 4m 的地块和一条 1m 宽的人行道;我的研究在每个街区只使用了 24 个地块。

我想评估评估空间协方差。

这是一个使用来自单个块的数据的示例分析,没有考虑空间协方差。在数据集中,plot是绘图 id,x是每个绘图的 x 位置和yy 位置,绘图 1 以 0 为中心,0level是治疗水平,response是响应变量。

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)

问题

  1. 如何计算协方差矩阵并将其包含在我的回归中?
  2. 块非常不同,并且有很强的治疗*块相互作用。分开分析合适吗?
2个回答

1)可以与nlme图书馆建立空间关联模型;您可以选择几种可能的模型。参见 Pinheiro/Bates 的第 260-266 页。

一个好的第一步是制作一个变异函数,以了解相关性如何取决于距离。

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

这里样本半变异函数随着距离的增加而增加,表明观测值确实在空间上相关。

相关结构的一种选择是球形结构;可以通过以下方式建模。

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

该模型似乎确实比没有相关结构的模型更适合,尽管它完全有可能也可以使用其他可能的相关结构之一进行改进。

> 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)您也可以尝试在模型中直接包含x和;y如果相关模式不仅仅取决于距离,这可能是合适的。在您的情况下(查看 sesqu 的图片),无论如何,对于这个块,您可能有一个对角线图案。

在这里,我更新的是原始模型而不是 m0,因为我只更改了固定效应,因此模型都应该使用最大似然拟合。

> 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 **

要比较所有三个模型,您需要使用gls最大似然法而不是 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

请记住,尤其是根据您对研究的了解,您可能会想出一个比其中任何一个都更好的模型。也就是说,模型m2b不一定被认为是最好的。

注意:这些计算是在将图 37 的 x 值更改为 0 后执行的。

1)你的空间解释变量是什么?看起来 x*y 平面对于空间效应来说是一个糟糕的模型。

治疗和反应图

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) 看到这些块相距 1 英里,而您希望看到仅 30 米的效果,我会说分开分析它们是完全合适的。