2017-10-12 2 views
0

Ich möchte die Funktion gls im R-Paket nlme verwenden, um eine Menge von verschachtelten räumlichen Samples zu analysieren, in denen sich viele Samples in mindestens einigen räumlichen Koordinaten überlappen. Ich möchte die Nicht-Unabhängigkeit in der Response-Variable (die Sache, die ich in jeder räumlichen Probe messe) mit einem corStruct- oder pdMat-Objekt erklären, aber ich bin verwirrt darüber, wie dies zu tun ist.Kann ich mit einer Kovarianzmatrix die Korrelationsstruktur in der nlme-Funktion gls angeben?

Ich habe eine Kovarianzmatrix erstellt, die alle Informationen über Nicht-Unabhängigkeit zwischen räumlichen Proben kodieren sollte. Jede Zeile/Spalte ist ein eindeutiger räumlicher Abtastwert, die Diagonale enthält die Gesamtzahl der Stichprobeneinheiten, die von jeder räumlichen Stichprobe erfasst werden, und die nichtdiagonalen Elemente enthalten Zählwerte von Stichprobeneinheiten, die zwischen räumlichen Stichproben geteilt werden.

Ich denke, ich sollte die Nlme-Funktion Gls verwenden, während Sie eine Korrelationsstruktur, möglicherweise mit einem CorSymm oder PdMat-Objekt. Aber ich habe nur Beispiele gesehen, wo die Korrelationsstruktur in GLS über eine Formel spezifiziert wird. Wie kann ich die von mir erstellte Kovarianzmatrix verwenden?

+0

Wenn Sie Fragen zur optimalen Modellierung Ihrer Daten haben, wenden Sie sich bitte an [stats.se]. Dies scheint keine spezielle Programmierfrage zu sein, die für Stack Overflow geeignet ist. – MrFlick

+0

Ich frage, wie man die Kovarianzstruktur jedoch spezifisch in die nlme-Funktion gls bringt. Soll ich corSymm benutzen? pdMat? – Roger

Antwort

0

Ich entdeckte, dass Sie die nlme Funktion gls eine positiv definite Korrelationsmatrix übergeben können, indem Sie die allgemeine Korrelationsstruktur verwenden, die von corSymm bereitgestellt wird.

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