2017-10-12 73 views
0

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

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

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

+0

如果您对模型化数据的最佳方式有疑问,您应该在[stats.se]处询问。这看起来不像一个适用于堆栈溢出的特定编程问题。 – MrFlick

+0

虽然,我在问如何将协方差结构具体化为nlme函数。我应该使用corSymm吗? PDMAT? – Roger

回答

0

我发现你可以使用corSymm提供的一般相关结构来传递函数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")