2017-10-12 71 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")