วิธีการจำลองการวัดซ้ำหลายตัวแปรผลลัพธ์ใน R?


9

@whuber ได้สาธิตวิธีจำลองผลลัพธ์หลายตัวแปร ( ,และy_3 ) ในครั้งเดียวy1y2y3

ดังที่เราทราบข้อมูลระยะยาวมักเกิดขึ้นในการศึกษาทางการแพทย์ คำถามของฉันคือวิธีการจำลองการวัดผลซ้ำหลายตัวแปรใน R หรือไม่? ตัวอย่างเช่นเราวัดy1 , y2และy3ๆ กันที่จุดเวลา 5 จุดสำหรับกลุ่มการรักษาที่แตกต่างกันสองกลุ่ม

คำตอบ:


2

ในการสร้างข้อมูลปกติหลายตัวแปรที่มีโครงสร้างความสัมพันธ์ที่ระบุคุณต้องสร้างเมทริกซ์ความแปรปรวนร่วมแปรปรวนและคำนวณการสลายตัวของ Cholesky โดยใช้cholฟังก์ชัน ผลิตภัณฑ์ของการสลายตัวของโคลเลสกี้ของเมทริกซ์ vcov ที่ต้องการและเวกเตอร์ปกติแบบสุ่มที่เป็นอิสระจากการสังเกตจะให้ข้อมูลปกติแบบสุ่มด้วยเมทริกซ์ความแปรปรวนร่วมแปรปรวนนั้น

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 () ใช้เวลา 3 ข้อโต้แย้ง: เมทริกซ์ความแปรปรวนร่วมแปรปรวนค่าเฉลี่ยและจำนวนแถว

ซิกมาจะมี 3 * 5 = 15 แถวและคอลัมน์ หนึ่งสำหรับแต่ละการสังเกตของแต่ละตัวแปร มีหลายวิธีในการตั้งค่าพารามิเตอร์ 15 ^ 2 เหล่านี้ (ar, symmetry ทวิภาคี, ไม่มีโครงสร้าง ... ) อย่างไรก็ตามคุณกรอกข้อมูลในเมทริกซ์นี้ให้ระวังสมมติฐานโดยเฉพาะอย่างยิ่งเมื่อคุณตั้งค่าสหสัมพันธ์ / ความแปรปรวนร่วมเป็นศูนย์หรือเมื่อคุณตั้งค่าความแปรปรวนสองค่าให้เท่ากัน สำหรับจุดเริ่มต้นซิกม่าเมทริกซ์อาจมีลักษณะดังนี้:

 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)

ดังนั้นซิกมา [1,12] จึงเป็น. 2 และนั่นหมายความว่าความแปรปรวนร่วมระหว่างการสังเกตครั้งแรกของ Y1 และการสังเกตครั้งที่ 2 ของ Y3 คือ. 2 ตามเงื่อนไขของตัวแปรอีก 13 ตัว แถวในแนวทแยงนั้นไม่จำเป็นต้องมีจำนวนเท่ากันทั้งหมดนั่นคือข้อสันนิษฐานที่ทำให้ฉันง่ายขึ้น บางครั้งมันก็สมเหตุสมผล แต่บางครั้งก็ไม่เป็นเช่นนั้น โดยทั่วไปแล้วหมายถึงความสัมพันธ์ระหว่างการสังเกตครั้งที่ 3 และครั้งที่ 4 นั้นเหมือนกับความสัมพันธ์ระหว่างวันที่ 1 และวินาที

คุณต้องมีวิธีการ มันอาจจะง่ายเหมือน

 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)

นี่คือ 5 วิธีแรกสำหรับการสังเกต 5 ครั้งของ Y1, ... , 5 ครั้งสุดท้ายเป็นการสังเกตของ Y3

จากนั้นรับการสังเกต 2000 ข้อมูลของคุณด้วย:

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 คือการสังเกตครั้งที่ 1 ของ Y1, ... , Y15 คืออันดับที่ 5 ของ Y1 ...


1
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เพื่อสร้างเมทริกซ์เช่นเดียวกับในตัวอย่างแรกเซทลองนี้ วิธีการที่คล้ายกันจะสร้างตัวอย่างที่สอง แต่พวกเขามีปัญหาที่พบบ่อย: คุณได้สูญเสีย covariances ในหมู่ 's ในแต่ละ period-- ฝึกอบรมเหล่านี้ไม่ได้สะท้อนให้เห็นถึงโครงสร้างวัดซ้ำ y
whuber

@ เมื่อไวยากรณ์ของคุณมีประโยชน์ แต่แตกต่างจากสิ่งที่ฉันเขียน ฉันคิดว่าความแตกต่างนั้นสำคัญเล็กน้อย ฉันคิดว่าสิ่งที่ฉันเขียนเป็น AR (1) และคุณมีรายการในความสัมพันธ์ข้ามระหว่างการสังเกตครั้งสุดท้ายของตัวแปรหนึ่งและการสังเกตครั้งแรกของตัวแปรถัดไป กล่าวอีกนัยหนึ่งฉันคิดว่าซิกม่า [5,6] ควรเป็น 0
เซท

อาตอนนี้ฉันเห็นสิ่งที่คุณกำลังทำอยู่: คุณกำลังสร้างซีรีย์ AR สามตัวในตัวอย่างแรก ฉันพลาดสิ่งนี้เพราะฉันเชื่อว่า OP มีความกังวลเกี่ยวกับสหสัมพันธ์ระหว่างซีรีย์นั่นคือสิ่งที่มีความหมายโดย "ผลลัพธ์หลายตัวแปร" จากมุมมองว่ามันดูเหมือนว่าคุณต้องการที่จะดูการฝึกอบรมความสัมพันธ์เหล่านี้เป็นจากการฝึกอบรมบล็อกกับแต่ละการเข้าโดยเมทริกซ์มากกว่าที่จะเป็นโดยเมทริกซ์บล็อกจากบล็อก 55333355
whuber

ฉันคิดว่า sigma ที่สองของฉันเป็นตัวอย่างง่ายๆของการอนุญาตให้ความแปรปรวนระหว่าง Y1 และ Y3 เป็นค่าบวก ฉันแก้ไขคำตอบเล็กน้อยเพื่อให้ชัดเจนว่าเมทริกซ์นั้นจะต้องมีการกำหนดค่าขึ้นอยู่กับกระบวนการสร้างข้อมูล มีหลายวิธีในการดูแลผิวของแมวตัวนี้อย่างแน่นอน
เซท

ยุติธรรมพอ แต่วิธีการของคุณสร้างความยากลำบากเพราะมันไม่สำคัญที่จะรวมความสัมพันธ์หลายตัวแปรในหมู่กับแบบจำลอง AR เช่นคุณทราบหรือไม่ว่าเมทริกซ์ที่สองนั้นไม่แน่นอนแน่นอน ("ความแปรปรวน" ของ c (-102, 177, -204, 177, -102, 0, 0, 0, 0, 0, 102, -177, 204, -177, 102) เป็นค่าลบ)yi
whuber
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.