R:在R中找出每个模拟迭代的最大值

时间:2014-05-27 05:18:10

标签: r

我需要记录5次观测的最大值,模拟10,000次。这是为了找到这些最大值的平均值。

我目前的代码如下:

mc.sim1 = function(){
   mu = 20; sigma = 4
   (rnorm(5, mu, sigma))
}

m = replicate(10000, mc.sim1())

我无法解释如何记录每次迭代的最大值,而不是使用' max'来记录整个模拟集的最大值。功能

3 个答案:

答案 0 :(得分:0)

如果要关注您的代码,请使用dim了解m是什么。 它是一个矩阵,每次模拟观察都有一行,每次复制都有一列。

一个非常简单直观的循环可能看起来像

recorded_max=numeric(dim(m)[2])
for (i in 1:dim(m)[2])
{
  recorded_max[i]=max(m[,i])
}

答案 1 :(得分:0)

我建议使用apply来计算每列的最大值(因为每列代表m中的迭代):

colMax <- apply(m, 2, max)

另请注意以下@ shadow关于colMaxs包中matrixStats函数的评论。

答案 2 :(得分:0)

只需一个简单的sapply即可

mc.sim1 = function(...){
   mu = 20; sigma = 4
   max(rnorm(5, mu, sigma))
}

maxdraw <- sapply(seq.int(10000), mc.sim1)

最后maxdraw将是一个长度为10,000的向量,每次迭代最多有五个随机正态变量。