สร้างตัวแปรสุ่มแบบกระจายที่สัมพันธ์กันสามชุด


15

สมมติว่าเรามี

X1~ยูนิฟ(n,0,1),
X2~ยูนิฟ(n,0,1),

โดยที่เป็นตัวอย่างแบบสุ่มขนาดเท่ากันของขนาด n และunif(n,0,1)

Y=X1,

Z=0.4X1+10.4X2.

จากนั้นความสัมพันธ์ระหว่างและเป็น0.4YZ0.4

ฉันสามารถขยายนี้ถึงสามตัวแปร , , ?X1X2X3


ฉันได้แก้ไขคำถามของคุณเพื่อให้อ่านง่ายขึ้น กรุณาตรวจสอบทุกอย่างโอเค เกี่ยวกับคำถามของคุณคุณจะขยายขั้นตอนการปฏิบัติในแง่ใด ความสัมพันธ์ถูกกำหนดไว้สำหรับตัวแปรสุ่มสองตัวดังนั้นจึงไม่ชัดเจนสำหรับฉันที่จะได้รับสิ่งที่คุณหมายถึง
ocram

3
Zไม่เหมือนกันดังนั้นหากคุณพยายามที่จะสรุปผลลัพธ์นั้นดูเหมือนว่าคุณกำลังพยายามสร้างเครื่องแบบ RV ที่มีความสัมพันธ์กันสามชุด คุณสงสัยเกี่ยวกับวิธีคำนวณความสัมพันธ์ระหว่างและหรือไม่ X1aX1+bX2+cX3
MånsT

สมมติว่าเราได้ , ,และ ,X_3) แล้วและคืออะไร? X1X2X3  unif(n,0,1)Y=(X2,X3)Y ZZ=(X1,X2,X3)YZ
user9292

6
{การแจกชุดเครื่องแบบที่สัมพันธ์กัน}{Copulas}
พระคาร์ดินัล

4
ทำไม n ถึงเข้าสู่การสนทนา? หาก X1 และ X2 เป็นตัวแปรสุ่มที่ไม่แปรเปลี่ยนพวกเขาจะไม่เหมือนกันใน [0,1]?
Michael R. Chernick

คำตอบ:


12

คำถามมีข้อผิดพลาดหลายอย่างที่ระบุไว้ในความคิดเห็น - ตามที่กำหนดไว้ในคำถาม Z ไม่เหมือนกันหรือมีความสัมพันธ์ที่ระบุ

พระคาร์ดินัลกล่าวถึง copulas และนั่นเป็นวิธีที่ใช้กันโดยทั่วไปมากที่สุด อย่างไรก็ตามมีวิธีง่าย ๆ หลายวิธีในการรับเครื่องแบบที่มีความสัมพันธ์กัน (ซึ่งสามารถเห็นได้ว่าเป็นเพียงทางลัดไปยัง copulas ประเภทต่างๆ)

ดังนั้นเรามาเริ่มต้นด้วยวิธีที่จะได้รับเครื่องแบบคู่ที่มีความสัมพันธ์กัน

1) ถ้าคุณเพิ่มเครื่องแบบสองชุดผลลัพธ์จะเป็นรูปสามเหลี่ยมไม่เหมือนกัน แต่คุณสามารถใช้ cdf ของตัวแปรผลลัพธ์เป็นการแปลงเพื่อนำผลลัพธ์กลับมาเป็นชุด แน่นอนว่าผลลัพธ์ไม่ได้มีความสัมพันธ์เชิงเส้นอีกต่อไป

นี่คือฟังก์ชัน R เพื่อแปลงสามเหลี่ยมสมมาตรบน (0,2) เป็นชุดมาตรฐาน

t2u = function(x) ifelse(x<1, x^2, 2-(2-x)^2)/2

ตรวจสอบว่ามันให้เครื่องแบบ

u1 = runif(30000)
u2 = runif(30000)
v1 = t2u(u1+u2)

ป้อนคำอธิบายรูปภาพที่นี่

และมันมีความสัมพันธ์กับ u1 และ u2:

> cor(cbind(u1,u2,v1))
            u1          u2        v1
u1 1.000000000 0.006311667 0.7035149
u2 0.006311667 1.000000000 0.7008528
v1 0.703514895 0.700852805 1.0000000

แต่ไม่เชิงเส้นเนื่องจากการแปลงแบบโมโนโทนิเป็นความสม่ำเสมอ

ป้อนคำอธิบายรูปภาพที่นี่

ด้วยสิ่งนี้เป็นเครื่องมือที่เราสามารถสร้างตัวแปรเพิ่มเติมบางอย่างเพื่อให้ได้ชุด equicorrelated สามชุด:

u3 = runif(30000)
v2 = t2u(u1+u3)
v3 = t2u(u2+u3)

cor(cbind(v1,v2,v3))
          v1        v2        v3
v1 1.0000000 0.4967572 0.4896972
v2 0.4967572 1.0000000 0.4934746
v3 0.4896972 0.4934746 1.0000000

ความสัมพันธ์ระหว่างตัวแปร v ทั้งหมดมีลักษณะดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

-

ทางเลือกที่สองคือการสร้างโดยการผสม แทนที่จะรวมเครื่องแบบเอาพวกเขาด้วยความน่าจะเป็นคงที่

เช่น

z = ifelse(rbinom(30000,1,.7),u1,u2)

cor(cbind(u1,z))
          u1         z
u1 1.0000000 0.7081533
z  0.7081533 1.0000000

ป้อนคำอธิบายรูปภาพที่นี่

ซึ่งสามารถนำมาใช้อีกครั้งเพื่อสร้างเครื่องแบบหลายชุดที่มีความสัมพันธ์กัน

-

วิธีการง่าย ๆ ที่สามคือการสร้างบรรทัดฐานที่สัมพันธ์และเปลี่ยนเป็นความสม่ำเสมอ

n1=rnorm(30000)
n2=rnorm(30000)
n3=rnorm(30000)
x=.6*n1+.8*n2
y=.6*n2+.8*n3
z=.6*n3+.8*n1
cor(cbind(x,y,z))

          x         y         z
x 1.0000000 0.4763703 0.4792897
y 0.4763703 1.0000000 0.4769403
z 0.4792897 0.4769403 1.0000000

ดังนั้นตอนนี้เราเปลี่ยนเป็นชุด:

w1 = pnorm(x)
w2 = pnorm(y)
w3 = pnorm(z)
cor(cbind(w1,w2,w3))
          w1        w2        w3
w1 1.0000000 0.4606723 0.4623311
w2 0.4606723 1.0000000 0.4620257
w3 0.4623311 0.4620257 1.0000000

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งหนึ่งที่ดีเกี่ยวกับวิธีที่ 2 และ 3 คือคุณได้รับความหลากหลายมากมายในการเลือกว่าสิ่งที่สัมพันธ์กันจะเป็นอย่างไร (และพวกเขาไม่จำเป็นต้องเท่าเทียมกันเหมือนตัวอย่างที่นี่)

แน่นอนว่ามีวิธีการอื่น ๆ ที่หลากหลาย แต่สิ่งเหล่านี้รวดเร็วและง่ายดาย

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


Glen_b ขอบคุณคำตอบที่สวยงามและน่าสนใจมาก!
user9292

ฉันไม่เข้าใจว่า 0.6 และ 0.8 ในแนวทางที่สามของคุณมาจากไหน
นูเอล

ρρยังไม่มีข้อความผม+1-ρ2ยังไม่มีข้อความJยังไม่มีข้อความผมยังไม่มีข้อความJρยังไม่มีข้อความผม1-ρ2ยังไม่มีข้อความJXYZ

2

X1,X2ZX1 0.40.4YY=0.4X1+1-(0.4)2X2

ρcos23cos0

สิ่งนี้จะเริ่มต้นคุณในการแยกย่อยซีรีย์เป็นส่วนประกอบในแบบเดียวกับที่คุณย่อยสลายเวกเตอร์ให้เป็นส่วนประกอบมุมฉาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.