การสร้างค่าสุ่มที่มีความสัมพันธ์อัตโนมัติใน R


11

เรากำลังพยายามสร้างค่าสุ่มที่มีความสัมพันธ์โดยอัตโนมัติซึ่งจะใช้เป็นชุดเวลา เราไม่มีข้อมูลที่เราอ้างถึงและเพียงต้องการสร้างเวกเตอร์ตั้งแต่เริ่มต้น

ในอีกด้านหนึ่งเราต้องการกระบวนการสุ่มที่มีการแจกแจงและ SD

ในอีกทางหนึ่งความสัมพันธ์อัตโนมัติที่มีอิทธิพลต่อกระบวนการสุ่มจะต้องมีการอธิบาย ค่าของเวกเตอร์นั้นมีความสัมพันธ์กันโดยอัตโนมัติพร้อมกับความแข็งแรงลดลงในช่วงเวลาต่าง ๆ เช่น lag1 มี 0.5, lag2 0.3, lag1 0.1 เป็นต้น

ดังนั้นในที่สุดเวกเตอร์ควรมองสิ่งที่: 2, 4, 7, 11, 10, 8, 5, 4, 2, -1, 2, 5, 9, 12, 13, 10, 8, 4, 3, 1, -2, -5

และอื่น ๆ

คำตอบ:


11

ที่จริงฉันมักเจอปัญหานี้ สองวิธีที่ฉันโปรดปรานในการสร้างอนุกรมเวลาที่มีความสัมพันธ์อัตโนมัติใน R ขึ้นอยู่กับว่าฉันต้องการกระบวนการคงที่หรือไม่

สำหรับซีรี่ย์เวลาที่ไม่หยุดนิ่งฉันใช้การเคลื่อนไหวแบบบราวเนียน ตัวอย่างเช่นสำหรับ 1,000 ความยาวฉัน:

x <- diffinv(rnorm(999))

สำหรับชุดเวลาคงที่ฉันจะกรองเสียงเกาส์เซียน เช่นนี้ดูเหมือนว่า:

x <- filter(rnorm(1000), filter=rep(1,3), circular=TRUE)

ในกรณีที่รถยนต์มีความสัมพันธ์ที่ล่าช้าเป็น 0 ถ้า2 ในกรณีอื่นเราต้องคำนวณความสัมพันธ์ระหว่างผลรวมของตัวแปร ตัวอย่างเช่นสำหรับความแปรปรวนร่วมคือττ>2τ=1

โอโวลต์(X1;X2)=โอโวลต์(Y1+Y2+Y3;Y2+Y3+Y4)=VaR(Y2)+VaR(Y3)=2

ดังนั้นคุณจะเห็นว่าความแปรปรวนร่วมอัตโนมัติลดลงเป็นเส้นตรงจนถึงโดยที่คือความยาวของตัวกรองnn

คุณยังต้องการที่จะทำอนุกรมเวลาของหน่วยความจำที่ยาวนาน (เช่น Brownian motion เศษส่วน) แต่มันก็มีส่วน ฉันมีการนำเอาวิธีการของ Davies-Harte มาใช้ซึ่งฉันสามารถส่งให้คุณได้หากคุณต้องการ


ในการรับช่วงเวลาความทรงจำที่ยาวนานฉันขอแนะนำหนังสือ 1996 ของ Wornell (ลิงค์: books.google.cl/books/about/ ...... ), :-) แม้ว่าความสามารถในการจัดการได้ของหน่วยความจำที่ยาวนานนั้นไม่ใช่เรื่องง่าย แต่คุณยังสามารถทำได้
Néstor

ฉันใช้วิธีการของคุณและใช้งานได้ทั่วไป แต่ฉันได้รับความเบี่ยงเบนเล็กน้อยระหว่างฟังก์ชั่นเป้าหมายที่ใช้ในตัวกรองและฟังก์ชั่นความสัมพันธ์อัตโนมัติที่เกิดขึ้น โปรดดูคำถามนี้: stats.stackexchange.com/questions/176722/…
nnn

7

หากคุณมีฟังก์ชั่น autocovariance รุ่นที่ดีที่สุด (ในแง่ของการจัดการได้ง่าย) ฉันคิดได้ว่าเป็นกระบวนการ gaussian หลายตัวแปรที่ซึ่งให้ฟังก์ชัน autocovarianceที่ lagคุณสามารถสร้างเมทริกซ์ความแปรปรวนร่วมได้อย่างง่ายดาย ,R(τ)τ

Σ=[R(0)R(1)...R(ยังไม่มีข้อความ)R(1)R(0)...R(ยังไม่มีข้อความ-1)...R(ยังไม่มีข้อความ)R(ยังไม่มีข้อความ-1)...R(0)]

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

(x)=1(2π)ยังไม่มีข้อความ/2|Σ|1/2ประสบการณ์(-12(x-μ)TΣ-1(x-μ)),
μ

5

คุณสามารถสร้างลำดับความสัมพันธ์โดยการสร้างกระบวนการอัตตัวอย่างเช่น AR (1) ขั้นตอนการ(t) สร้างโดยใช้ตัวสร้างตัวเลขสุ่มที่เหมือนกันสำหรับการแจกแจงที่คุณเลือก แล้วปล่อยให้รับและอื่น ๆ ได้รับการแต่งตั้งอย่างต่อเนื่องโดยการสุ่มโดยใช้ตัวเลขสุ่มของคุณเครื่องแบบ เพื่อให้ค่าเบี่ยงเบนมาตรฐานค่าเฉลี่ยและคุณต้องการคุณสามารถได้รับมาจากค่าเฉลี่ยและความแปรปรวนของลำดับเสียง(i) เลือกอย่างเหมาะสมX(เสื้อ)=aX(เสื้อ-1)+อี(เสื้อ)อี(0)X(0)=อี(0)X(1)=aX(0)+อี(1)อี(ผม)X(ผม)อี(ผม)อี(ผม)


4
มันอาจคุ้มค่าที่ชี้ให้เห็นถึงการมีอยู่ของarima.sim()ฟังก์ชันที่นี่
fmark

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