one option is the following: times <- 1:5 rho <- 0.5 sigma <- 2 ############### H <- abs(outer(times, times, "-")) V <- sigma * rho^H p <- nrow(V) V[cbind(1:p, 1:p)] <- V[cbind(1:p, 1:p)] * sigma V
I hope it helps. Best, Dimitris ---- Dimitris Rizopoulos Ph.D. Student Biostatistical Centre School of Public Health Catholic University of Leuven Address: Kapucijnenvoer 35, Leuven, Belgium Tel: +32/(0)16/336899 Fax: +32/(0)16/337015 Web: http://med.kuleuven.be/biostat/ http://www.student.kuleuven.be/~m0390867/dimitris.htm ----- Original Message ----- From: "Rick DeShon" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Friday, May 11, 2007 4:29 PM Subject: [R] Create an AR(1) covariance matrix > Hi All. > > I need to create a first-order autoregressive covariance matrix > (AR(1)) for a longitudinal mixed-model simulation. I can do this > using nested "for" loops but I'm trying to improve my R coding > proficiency and am curious how it might be done in a more elegant > manner. > > To be clear, if there are 5 time points then the AR(1) matrix is 5x5 > where the diagonal is a constant variance (sigma^2) and the > covariances depend on the number of "steps" between trials. So, the > first off-diagonal of the matrix is sigma*rho, the second > off-diagonal > is sigma*rho^2, the third off-diagonal is sigma*rho^3, and so forth. > > Any suggestions for an elegant method to flexibly create this > matrix? > > Rick DeShon > > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
