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

iyzzxitl  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(201)

我希望使用R包nlme中的函数gls来分析一组嵌套的空间样本,其中许多样本至少在某些空间坐标上重叠。我希望使用corStruct或pdMat对象来说明响应变量(我在每个空间样本中测量的东西)的非独立性,但我不知道如何做。
我已经生成了一个协方差矩阵,它应该编码了所有关于空间样本之间非独立性的信息,每行/列都是一个不同的空间样本,对角线包含每个空间样本捕获的采样单位总数,非对角线元素包含空间样本之间共享的采样单位计数。
我认为在指定相关性结构时应该使用nlme函数gls,可能使用corSymm或pdMat对象。但我只看到过通过公式指定gls中的相关性结构的示例。如何使用我创建的协方差矩阵?

8cdiaqws

8cdiaqws1#

我发现,可以通过corSymm提供的一般相关结构,将正定相关矩阵传递给nlme函数gls

# 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")

相关问题