从R中的先前数据创建模拟数据

时间:2019-04-07 20:19:38

标签: r simulation

大家好,我知道模拟方面有很多东西,但是我还没有找到我真正需要的东西。我有一个向量视图数据。视频中的观看次数(以百万为单位)。

totalBeforeViews = (c( 1.19,2.29,2.05,1.96,2.07,1.77,1.50,1.77,4.49,9.76,6.55,5.17,6.56,10.31))

我想说一千次对此数据的复制模拟。因此,我正在寻找某种可以随机进行模拟但可以通过上述向量进行某种方式训练的函数。我正在考虑这样做

sdViewsBefore = sd(totalBeforeViews)
simulatedBeforeViews = rnorm(n = 1000, mean = totalBeforeViews, sd = sdViewsBefore)

但是,这使我回到了无法使用的负值,因为视频上不能有负视图。同样,这的最终目标是让我在我拥有的另一组数据上进行1000次T测试。任何帮助表示赞赏。谢谢

1 个答案:

答案 0 :(得分:0)

可以考虑截断正态分布。我尚未在下面进行测试,但可能会有所帮助:

library(truncnorm)
rtruncnorm(n=1000, a=0, b=Inf, mean=totalBeforeViews, sd=sdViewsBefore)

在此link中,作者提供了自定义的截断正态分布采样,您可以自行调整而无需安装新软件包。

mysamp <- function(n, m, s, lwr, upr, nnorm) {
  samp <- rnorm(nnorm, m, s)
  samp <- samp[samp >= lwr & samp <= upr]
  if (length(samp) >= n) {
    return(sample(samp, n))
  }  
  stop(simpleError("Not enough values to sample from. Try increasing nnorm."))
}

set.seed(42)
mysamp(n=10, m=39.74, s=25.09, lwr=0, upr=340, nnorm=1000)