在保持平均值的同时生成随机数

时间:2013-12-19 22:02:51

标签: r random

我正在尝试模拟一天中每秒捕获的流量。我每小时都有一个平均流量值,并希望创建一个随机向量来模拟该平均流量。

我尝试rpois模拟三小时,平均分为20,10%和30%,如下所示:

r<-vector()   
lambda <- c(20,10,30)
for (i in 1:length(lambda)) {
    r <- append( r, rpois(3600,lambda[i]) ) # 3600 = number of seconds in 1 hour 
}
plot(r, col='red', type='l')

通过检查图表,小时之间的转换会发生突然变化,这使得数据不太现实。我的问题是在R中有一种方法可以平滑过渡之间的值,同时保持平均值吗?

1 个答案:

答案 0 :(得分:2)

我猜不是 - 因为价值取决于平均值==如果平均值“跳”,则随机值“跳”;

但当然您可以使用所需的“Bridge-Average-Valuse”手动“平滑”过渡之间的值:

r<-vector()   
lambda <- c(20,15,10,21,30)
for (i in 1:length(lambda)){

    if (lambda[i]%%10>0) {
        r <- append( r, rpois(100,lambda[i]) ) 
    } else {
            r <- append( r, rpois(3200,lambda[i]) )
    }
   }
plot(r, col='red', type='l')