R中montecarlo样本的矩阵

R中montecarlo样本的矩阵,r,montecarlo,R,Montecarlo,我试图从英国人口预测中随机抽取样本,并将其存储在矩阵中 目前,我正在使用以下代码 # 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.00

我试图从英国人口预测中随机抽取样本,并将其存储在矩阵中

目前,我正在使用以下代码

# 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行的矩阵——每行代表一年,每列代表一个随机选择的蒙特卡罗样本


感谢您的帮助。

R中的函数
rnorm
只能处理单变量分布。我不知道有任何包含多元分布函数的基本包,但您可以查看。我个人更喜欢这个包裹。该包中包括函数
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"
嗯,,
D

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,仅链接的答案可能会无效。没有链接-您打算对另一个答案发表评论吗?主要的一点是,答案应该有一些解释,而不仅仅是一行代码
mapply(rnorm,mean=Mean_ONS_Population_Growth,sd=SD_ONS_Population_Growth,MoreArgs=list(n=MC_RUNS))