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

问题描述 投票:0回答:1

嘿伙计,所以我知道有很多关于模拟,但我还没找到我需要的东西。我有一个视图数据向量。这是视频的观看次数,以百万计。

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))

我想说这1000个复制的数据模拟。所以我正在寻找某种功能,可以随机进行模拟,但是通过上面的矢量进行训练。我在想这样做

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

然而,这让我回到负值,我无法使用,因为不能对视频进行负面观看。此外,最终目标是让我在这节经历1000次T测试时获得另一组数据。任何帮助表示赞赏。谢谢

r simulation
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.