我可以使用协方差矩阵来指定nlme函数gls中的相关结构吗?

时间:2017-10-12 15:05:01

标签: r regression nlme

我希望使用R包nlme中的函数gls来分析一组嵌套的空间样本,其中许多样本在至少一些空间坐标中重叠。我想使用corStruct或pdMat对象来解释响应变量(我在每个空间样本中测量的东西)中的非独立性,但我对如何执行此操作感到困惑。

我已经生成了一个协方差矩阵,该矩阵应编码有关空间样本之间非独立性的所有信息。每行/每列是不同的空间样本,对角线包含每个空间样本捕获的采样单元的总数,而非对角线元素包含空间样本之间共享的采样单元的计数。

我认为我应该在指定相关结构时使用nlme函数gls,可能使用corSymm或pdMat对象。但我只看到了通过公式指定gls中相关结构的例子。我如何使用我创建的协方差矩阵?

1 个答案:

答案 0 :(得分:2)

我发现您可以使用nlme提供的常规相关结构,将gls函数corSymm传递给正定相关矩阵。

# convert your variance covariance matrix into a correlation matrix
CM <- cov2cor(vcv_matrix)

# if your correlation matrix contains zeros, as mine did, you need to convert it to a positive-definite matrix that substitutes very small numbers for those zeros
CM <- nearPD(CM)$mat

# convert into a corStruct object using general correlation structure provided by corSymm
C <- corSymm(CM[lower.tri(CM)], fixed = T)

# correlation structure can now be included in a gls model
gls(y ~ x, correlation = C, method = "ML")