การสร้างข้อมูลด้วยเมทริกซ์ความแปรปรวนร่วมตัวอย่างที่กำหนด


22

ได้รับเมทริกซ์ความแปรปรวนร่วมΣsวิธีสร้างข้อมูลเช่นนั้นจะมีเมทริกซ์ความแปรปรวนร่วมตัวอย่างΣ^=Σs ?


โดยทั่วไปเรามักจะมีความสนใจในข้อมูลที่สร้างจากความหนาแน่นของf(x|θ)กับข้อมูลxให้บางพารามิเตอร์เวกเตอร์\θผลลัพธ์นี้เป็นตัวอย่างซึ่งเราอาจประมาณค่าθ^อีกครั้ง สิ่งที่ฉันสนใจคือปัญหาย้อนกลับ: เกิดอะไรขึ้นถ้าเราได้รับชุดพารามิเตอร์θsและเราต้องการสร้างตัวอย่างxเช่นนั้นθ^=θs{s}

นี่เป็นปัญหาที่ทราบหรือไม่? วิธีการดังกล่าวมีประโยชน์หรือไม่? มีอัลกอริทึมหรือไม่


Attilio Meucci เป็นโซลูชันที่ปรับขนาดได้ ดูบทความความเสี่ยงและรหัส matlab
Peter Cotton

คำตอบ:


16

มีสถานการณ์ทั่วไปสองแบบที่แตกต่างกันสำหรับปัญหาประเภทนี้:

i) คุณต้องการสร้างตัวอย่างจากการแจกแจงที่ให้ซึ่งมีลักษณะประชากรตรงกับที่ระบุ (แต่เนื่องจากรูปแบบการสุ่มตัวอย่างคุณไม่มีลักษณะตัวอย่างที่ตรงกันทั้งหมด)

ii) คุณต้องการสร้างตัวอย่างที่มีลักษณะตัวอย่างตรงกับที่ระบุ (แต่เนื่องจากข้อ จำกัด ของการจับคู่ปริมาณตัวอย่างกับชุดของค่าที่กำหนดไว้ล่วงหน้าไม่ได้มาจากการกระจายที่คุณต้องการจริงๆ)

คุณต้องการตัวพิมพ์ที่สอง - แต่คุณจะได้รับโดยทำตามวิธีการเดียวกับตัวพิมพ์แรกด้วยขั้นตอนการกำหนดมาตรฐานเพิ่มเติม

ดังนั้นสำหรับบรรทัดฐานหลายตัวแปรสามารถทำได้ในลักษณะที่ตรงไปตรงมา:

ในกรณีแรกคุณสามารถใช้เกณฑ์ปกติแบบสุ่มโดยไม่มีโครงสร้างประชากร (เช่นมาตรฐาน iid ปกติซึ่งมีค่าความคาดหวัง 0 และเมทริกซ์ความแปรปรวนร่วมเอกลักษณ์) จากนั้นจึงกำหนดมัน - แปลงเป็นเมทริกซ์ความแปรปรวนร่วมและหมายความว่าคุณต้องการ ถ้าและเป็นค่าเฉลี่ยของประชากรและความแปรปรวนร่วมที่คุณต้องการและเป็น iid มาตรฐานปกติคุณคำนวณ , สำหรับที่ (เช่นที่เหมาะสมสามารถหาได้ผ่านการสลายตัว Cholesky) . จากนั้นมีลักษณะประชากรที่ต้องการΣ Z Y = L Z + μ L L L ' = Σ L YμΣZY=LZ+μLLL'=ΣLY

ด้วยอันดับที่สองคุณจะต้องเปลี่ยนบรรทัดฐานสุ่มของคุณก่อนเพื่อลบแม้กระทั่งความแปรปรวนแบบสุ่มห่างจากค่าเฉลี่ยศูนย์และความแปรปรวนร่วมเอกลักษณ์ (ทำให้ค่าเฉลี่ยตัวอย่างเป็นศูนย์และความแปรปรวนร่วมตัวอย่าง ) จากนั้นดำเนินการตามเดิม แต่ขั้นตอนเริ่มต้นของการลบค่าเบี่ยงเบนตัวอย่างออกจากค่าเฉลี่ยที่แน่นอนความแปรปรวนที่รบกวนการแจกแจง (ในตัวอย่างขนาดเล็กอาจค่อนข้างรุนแรง) 0 ฉันผมn0ผม

ซึ่งสามารถทำได้โดยการหักค่าเฉลี่ยของกลุ่มตัวอย่าง ( ) และการคำนวณการสลายตัว Cholesky ของ * ถ้าเป็นปัจจัย Cholesky ทางซ้ายดังนั้นควรมีค่าเฉลี่ยตัวอย่าง 0 และค่าความแปรปรวนร่วมตัวอย่าง จากนั้นคุณสามารถคำนวณและมีตัวอย่างพร้อมช่วงเวลาตัวอย่างที่ต้องการ (ขึ้นอยู่กับการกำหนดปริมาณตัวอย่างของคุณอาจมีซอเล็ก ๆ ที่เกี่ยวข้องกับการคูณ / หารด้วยปัจจัยเช่นแต่มันง่ายพอที่จะระบุความต้องการนั้น)Z * = Z - ˉ Z Z * L * Z ( 0 ) = ( L * ) - 1 Z * Y = L Z ( 0 ) + μ ZZ* * * *=Z-Z¯Z* * * *L* * * *Z(0)=(L* * * *)-1Z* * * *Y=LZ(0)+μn-1n


1
+1 วันก่อนฉันต้องการสร้างข้อมูลด้วยเมทริกซ์ความแปรปรวนร่วมตัวอย่างที่กำหนดไม่รู้ว่าจะทำอย่างไรและด้วยเหตุผลบางอย่างฉันใช้เวลามากในการหาคำตอบของคุณ เพื่อเพิ่มการมองเห็นของกระทู้นี้และเพื่อแสดงคำแนะนำของคุณฉันโพสต์คำตอบอื่นที่นี่ด้วยรหัส Matlab
อะมีบาพูดว่า Reinstate Monica

@ amoeba ฉันสงสัยว่ามีความเป็นไปได้ที่จะนำหนึ่งในคำค้นหาที่คุณใช้ซึ่งไม่ได้อยู่ที่นี่ในแท็กคำถาม (หรืออาจแทรกหลาย ๆ อย่างในการแก้ไขข้อความขนาดเล็กของคำถามซึ่งยังน่าจะช่วยได้ ) ตอนนี้ฉันสงสัยว่าฉันควรทำสิ่งเดียวกันใน R หรือไม่ แต่มันจะดีกว่าในคำตอบของฉันหรือเป็นส่วนเสริมของคุณ?
Glen_b -Reinstate Monica

1
ฉันได้ใช้เสรีภาพในการแก้ไขคำถามแล้วและพยายามกำหนดคำตอบของฉันเพื่อให้มีคำหลักให้ได้มากที่สุด หวังว่าจะช่วยได้ ฉันประหลาดใจโดยวิธีการที่เคล็ดลับง่าย ๆ นี้ (ทำให้ข้อมูลที่สร้างขึ้นก่อนที่จะเปลี่ยนเป็นความแปรปรวนร่วมที่จำเป็น) นั้นยากที่จะทำให้ google; ไม่พบสิ่งใด (บน CV หรือที่อื่น ๆ ) จนกระทั่งในที่สุดฉันก็พบคำตอบของคุณ
อะมีบาพูดว่า Reinstate Monica

1
@ amoeba โอ้โอเคขอบคุณ ใช่แล้วฉันไม่สามารถบอกได้ว่าเคยเห็นมันพูดถึงทุกที่ในคดีหลายตัวแปร (ไม่ต้องสงสัยเลยว่ามันเป็นเพราะมันเป็นความคิดที่ชัดเจนโดยเฉพาะอย่างยิ่งถ้าคุณคิดว่ามันเป็นกรณี univariate หรือ เห็นแล้วในกรณี univariate)
Glen_b -Reinstate Monica

@Glen_b อย่างที่คุณพูดการกระจายตัวอย่างผลลัพธ์ "ที่ได้รับการชำระ" เหล่านี้ไม่เป็นปกติ คุณมีความคิดว่าการกระจายตัวที่เกิดขึ้นเป็นอย่างไรบ้าง? หรืออาจจะเท่ากับหรือไม่เท่ากับการแจกแจงแบบมีเงื่อนไขZ|Z¯=μ,Cโอโวลต์(Z)=Σ
gg

17

@Glen_b ให้คำตอบที่ดี (+1) ซึ่งฉันต้องการแสดงด้วยรหัสบางอย่าง

วิธีสร้างตัวอย่างจากการแจกแจงแบบเกาส์มิติหลายมิติด้วยเมทริกซ์ความแปรปรวนร่วมที่กำหนด ? นี้เป็นเรื่องง่ายที่จะทำโดยการสร้างตัวอย่างจากมาตรฐานเสียนและคูณด้วยรากที่สองของเมทริกซ์ความแปรปรวนเช่นโดยSigma) สิ่งนี้ครอบคลุมในหลาย ๆ หัวข้อใน CV เช่นที่นี่: ฉันจะสร้างข้อมูลด้วยเมทริกซ์สหสัมพันธ์ที่ได้รับการกำหนดล่วงหน้าได้อย่างไร นี่คือการใช้ Matlab อย่างง่าย:ndΣชั่วโมงโอล.(Σ)

n = 100;
d = 2;
Sigma = [ 1    0.7  ; ...
          0.7   1   ];
rng(42)
X = randn(n, d) * chol(Sigma);

เมทริกซ์ความแปรปรวนร่วมตัวอย่างของข้อมูลผลลัพธ์จะไม่แน่นอน ; เช่นในตัวอย่างข้างต้นส่งคืนΣcov(X)

1.0690    0.7296
0.7296    1.0720

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

ตามที่ @Glen_b เขียนหลังจากสร้างข้อมูลจาก Gaussian มาตรฐาน, กลาง, ทำให้ขาวขึ้นและทำให้เป็นมาตรฐานเพื่อให้มันมีเมทริกซ์ความแปรปรวนร่วมตัวอย่าง ; เพียงแล้วคูณด้วยSigma)ผมชั่วโมงโอล.(Σ)

นี่คือความต่อเนื่องของตัวอย่าง Matlab ของฉัน:

X = randn(n, d);
X = bsxfun(@minus, X, mean(X));
X = X * inv(chol(cov(X)));
X = X * chol(Sigma);

ตอนนี้cov(X)ตามที่ต้องการส่งคืน

1.0000    0.7000
0.7000    1.0000

+1 อย่างใดคำถามนี้อยู่ในรูปแบบต่าง ๆ ในสถานที่ต่าง ๆ ในประวัติย่อ มีวิธีดำเนินการต่อหรือไม่ถ้าเราทราบว่าการกระจายหลายตัวแปรไม่ใช่แบบเกาส์เซียน?
rgk

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