R'de tekrarlanan ölçümlerin çok değişkenli sonuçları nasıl simüle edilir?


9

@whuber, bir zaman noktası için çok değişkenli sonuçların ( , ve ) nasıl simüle edileceğini göstermiştir .y1y2y3

Bildiğimiz gibi, boyuna veriler genellikle tıbbi çalışmalarda ortaya çıkar. Sorum, R'de çok değişkenli sonuçların tekrarlanan ölçümlerin nasıl simüle edileceğidir? Örneğin, iki farklı tedavi grubu için 5 farklı zaman noktasında , ve tekrar tekrar ölçüyoruz .y1y2y3

Yanıtlar:


2

Belirlenmiş bir korelasyon yapısı ile çok değişkenli normal veriler oluşturmak için, varyans kovaryans matrisini oluşturmanız ve cholfonksiyonunu kullanarak Cholesky ayrışmasını hesaplamanız gerekir. Arzu edilen vcov matrisinin Cholesky ayrışmasının ürünü ve bağımsız rastgele normal gözlem vektörleri, bu varyans kovaryans matrisi ile rastgele normal veriler verecektir.

v <- matrix(c(2,.3,.3,2), 2)
cv <- chol(v)

o <- replicate(1000, {
  y <- cv %*% matrix(rnorm(100),2)

  v1 <- var(y[1,])
  v2 <- var(y[2,])
  v3 <- cov(y[1,], y[2,])

  return(c(v1,v2,v3))
})

## MCMC means should estimate components of v
rowMeans(o)

2

Rmvnorm () işlevini kullanın, 3 argüman alır: varyans kovaryans matrisi, ortalamalar ve satır sayısı.

Sigma'da 3 * 5 = 15 satır ve sütun olacaktır. Her değişkenin her gözlemi için bir tane. Bu 15 ^ 2 parametresini ayarlamanın birçok yolu vardır (ar, iki taraflı simetri, yapılandırılmamış ...). Ancak bu matrisi doldurursanız, özellikle bir korelasyon / kovaryans sıfıra ayarladığınızda veya iki varyansı eşit olarak ayarladığınızda varsayımların farkında olun. Başlangıç ​​noktası için sigma matrisi aşağıdaki gibi görünebilir:

 sigma=matrix(c(
    #y1             y2             y3 
    3 ,.5, 0, 0, 0, 0, 0, 0, 0, 0,.5,.2, 0, 0, 0,
    .5, 3,.5, 0, 0, 0, 0, 0, 0, 0,.2,.5,.2, 0, 0,
    0 ,.5, 3,.5, 0, 0, 0, 0, 0, 0, 0,.2,.5,.2, 0,
    0 , 0,.5, 3,.5, 0, 0, 0, 0, 0, 0, 0,.2,.5,.2,
    0 , 0, 0,.5, 3, 0, 0, 0, 0, 0, 0, 0, 0,.2,.5,
    0 ,0 ,0 ,0 , 0, 3,.5, 0, 0, 0, 0, 0, 0, 0, 0,
    0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0, 0, 0, 0, 0, 0, 0,
    0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0, 0, 0, 0, 0, 0,
    0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0, 0, 0, 0, 0,
    0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3, 0, 0, 0, 0, 0,
    .5,.2,0 ,0 ,0 ,0 ,0 ,0 ,0 , 0, 3,.5, 0, 0, 0,
    .2,.5,.2,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0, 0,
    0 ,.2,.5,.2,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0,
    0 ,0 ,.2,.5,.2,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5,
    0 ,0 ,0 ,.2,.5,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3

    ),15,15)

Yani sigma [1,12] .2'dir ve bu, Y1'in ilk gözlemi ile Y3'ün ikinci gözlemi arasındaki kovaryansın , diğer tüm 13 değişkene bağlı olarak .2 olduğu anlamına gelir . Çapraz sıraların hepsi aynı sayı olmak zorunda değildir: bu benim yaptığım basitleştirici bir varsayımdır. Bazen mantıklı, bazen de mantıklı değil. Genel olarak, 3. gözlem ile dördüncü arasındaki korelasyonun 1. ve ikinci arasındaki korelasyon ile aynı olduğu anlamına gelir.

Ayrıca araçlara da ihtiyacınız var. Kadar basit olabilir

 meanTreat=c(1:5,51:55,101:105)
 meanControl=c(1,1,1,1,1,50,50,50,50,50,100,100,100,100,100)

Burada ilk 5, Y1'in 5 gözlemi için araçlardır, ... son 5, Y3'ün gözlemleridir.

sonra verilerinizi 2000 ile gözlemleyin:

sampleT=rmvnorm(1000,meanTreat,sigma)
sampleC=rmvnorm(1000,meanControl,sigma)
 sample=data.frame(cbind(sampleT,sampleC) )
  sample$group=c(rep("Treat",1000),rep("Control",1000) )

colnames(sample)=c("Y11","Y12","Y13","Y14","Y15",
                   "Y21","Y22","Y23","Y24","Y25",
                   "Y31","Y32","Y33","Y34","Y35")

Y11'in Y1'in ilk gözlemi olduğu yerde, ..., Y15, Y1'in 5. gözlemidir ...


1
İlk örnekte olduğu gibi matrisler oluşturmak için, Seth, şunu deneyin: n <- 3*5; sigma <- diag(1, nrow=n, ncol=n); sigma[rbind(cbind(1:n-1,1:n),cbind(1:n,1:n-1))] <- 1/2. Benzer bir yaklaşım ikinci örneği üretecektir. Ancak, ortak bir sorunu vardır: Aralarında kovaryanslarından kaybetmiş 'period-- her sırasında s tekrarlayan ölçümler yapısını yansıtmamaktadır bu matrisleri. y
whuber

@whuber sözdizim yardımcı olur, ancak yazdığımdan farklı. Farkın biraz önemli olduğunu düşünüyorum. AR (1) olarak yazdıklarımı düşünüyorum ve bir değişkenin son gözlemiyle bir sonraki değişkenin ilk gözlemi arasındaki çapraz korelasyonda bir girişiniz var. Başka bir deyişle sigma [5,6] 0 olmalıdır.
Seth

Ah, şimdi ne yaptığınızı görüyorum: ilk örnekte üç AR (1) serisi oluşturuyorsunuz. Bunu kaçırdım çünkü OP'nin seri arasındaki korelasyonlarla da ilgili olduğuna inanıyorum : "çok değişkenli sonuçlar" ile kastedilen budur. Eğer olarak bu korelasyon matrisleri görüntülemek istedikleri gibi bakış Bu noktadan itibaren görünüyor ile her giriş ile blok matrislerin bir tarafından yerine bir şekilde daha matrisi, ile blok matrisinin ile bloktan. 55333355
whuber

İkinci sigamın Y1 ve Y3 arasındaki varyansın pozitif olmasına izin vermenin basit bir örneği olduğunu düşündüm. Matrisin veri oluşturma işlemine bağlı olarak yapılandırılması gerektiğini daha açık hale getirmek için cevabı biraz düzenledim. Bu kediyi cildin kesinlikle birçok yolu var.
Seth

Yeterince adil, ama yaklaşımınız zorluklar yaratıyor, çünkü arasındaki çok değişkenli korelasyonu bir AR modeliyle birleştirmek önemsiz değil . Örneğin, ikinci matrisin pozitif olarak tanımlanamadığını biliyor muydunuz? (C'nin "varyansı" (-102, 177, -204, 177, -102, 0, 0, 0, 0, 0, 102, -177, 204, -177, 102) negatiftir.)yi
whuber
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.