2013-10-15 32 views
0

我已經通過以下代碼生成了1000次模擬。如何在R中繪製1000次模擬

ar1 = 0.4857 
ar2 = 0.0173 
ma1 = -0.8054 
r0 <- 0.002937432 #mean of margin.logrtn 
e0 <- 0.002976873 #mean of fit.margin.logrtn$res 


r.sims <- matrix(rep(0,1000*52),nrow=52, ncol=1000) 
e.sims <- matrix(rnorm(52*1000, mean = 0.002976873, sd = 0.1056021), 52, 1000) 


r.sims[1] <- ar1*r0 + e.sims[1] + ma1*e0 
r.sims[2] <- ar1*r.sims[1] + ar2*r0 + e.sims[2] + ma1*e.sims[1] 

for(j in 1:1000) { 
    for(i in 1:52) { 
     if (i == 1) { 
      r.sims[i,] <- r.sims[1] 
     } else { 
      if(i == 2) { 
       r.sims[i,] <- r.sims[2] 
      } else { 
       if(i > 2) { 
        r.sims[i,] <- r.sims[i-1,]*ar1 + r.sims[i-2,]*ar2 + e.sims[i,] + e.sims[i-1,]*ma1 
       } 
      } 
     } 
    } 
} 

我想在R中繪製模擬圖,我想創建模擬的每週日期並在同一個圖上繪製所有1000個模擬圖。我試圖將數據導出到excel並在那裏創建日期,然後再次導入數據,但後來我意識到我將不得不創建1000個時間序列,這太多了輸入...除非有更簡單的方法。有人可以幫忙嗎?

非常感謝!

+0

此問題更適合於stackoverflow。 – vinux

+1

此問題似乎與題目無關,因爲它不是關於幫助中心定義的範圍內的統計信息。 – gung

回答

2

你沒有提到什麼樣的情節,所以這裏只是一個簡單的時間序列圖。無論如何,你也可以在plot命令中使用for循環,除非我在你的問題中丟失了某些東西。

ymax <- max(r.sims) 
ymin <- min(r.sims) 

plot(r.sims[,1], type="l", col="#ff000010", ylim=c(ymin, ymax)) 
for (i in 2:1000){ 
lines(r.sims[,i], type="l", col="#ff000010") 
} 

enter image description here


編輯:

問:嗨只是想知道是否有什麼辦法可以在多種顏色繪製呢?非常感謝!

答:是的,你可以通過提供的顏色代碼數組這樣做:

ymax <- max(r.sims) 
ymin <- min(r.sims) 
color <- c(rep("#ff000010", 499), rep("#0000ff10", 500)) 

plot(r.sims[,1], type="l", col="#ff000010", ylim=c(ymin, ymax)) 
for (i in 2:1000){ 
lines(r.sims[,i], type="l", col=color[i]) 
} 

三號線指定第499是紅色,接下來的500是藍色。然後在最後一行中添加「col = color [i]」以應用配色方案。

enter image description here

+0

非常感謝您的幫助! – user2707605

+0

嗨只是想知道如果有什麼辦法我可以在多種顏色繪製這個?非常感謝! – user2707605

+0

@ user2707605是的,我在回答中提出了一個建議的方法。如何着色以及着色如何很大程度上取決於您想要展示的內容。這個例子應該給你一些工作空間。 –