2014-04-23 297 views
2

我試圖從英國人口預​​測中隨機抽樣並將它們存儲在矩陣中。蒙特卡羅樣本矩陣R

目前,我使用下面的代碼

# Read in Data 
Year = data.frame(2010, 2011, 2012, 2013, 2014) 
Mean_ONS_Population_Growth = data.frame(0.0076, 0.0158, 0.0240, 0.0323, 0.0404) 
SD_ONS_Population_Growth = data.frame(0.0003, 0.0015, 0.0029, 0.0045, 0.006193468) 

MC_RUNS = 1000 # Specify number of runs 

Projected_Population_Growth = array(0,dim=c(49,MC_RUNS,5)) # Specify number of runs 

Projected_Population_Growth = rnorm(MC_RUNS,mean=Mean_ONS_Population_Growth,sd=SD_ONS_Population_Growth) 

但我發現了這個錯誤:

Error in rnorm(MC_RUNS, mean = Mean_ONS_Population_Growth, sd = SD_ONS_Population_Growth) : 
invalid arguments 

理想情況下,我願與1000列和5行的矩陣 - 每行代表一年,每列代表隨機選擇的蒙特卡洛樣本。

感謝您的幫助。

回答

1
mapply(rnorm,mean=Mean_ONS_Population_Growth,sd=SD_ONS_Population_Growth,MoreArgs=list(n=MC_RUNS)) 
+0

雖然此鏈接可以回答這個問題,最好是在這裏有答案的主要部件,並提供鏈接以供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – RiggsFolly

+0

沒有鏈接 - 您是否打算評論其他答案? – Miff

+0

主要觀點是,答案應該有一些解釋,而不只是一行代碼 – RiggsFolly

1

R中的函數rnorm只能處理單變量分佈。我不知道任何基礎包,包括多變量分佈函數,但您可以查看cran。我個人比較喜歡mvtnorm。該軟件包中包含功能rmvnorm,它基本上是rnorm的多變量版本。但如果你想擁有獨立的單變量的分佈,你可以做,例如一個sapply這樣的:

sapply(1:length(Mean_ONS_Population_Growth), 
    function(iMC) { 
     rnorm(MC_RUNS, 
      mean=as.numeric(Mean_ONS_Population_Growth[iMC]), 
      sd=as.numeric(SD_ONS_Population_Growth[iMC])) 
    } 
) 

一個問題,你有你的代碼是,rnorm只需數值作爲參數。

class(Mean_ONS_Population_Growth[1]) 
[1] "data.frame" 

H個, d