【问题标题】:create a matrix with random values based on a normal distrubition基于正态分布创建具有随机值的矩阵
【发布时间】:2015-08-04 12:24:02
【问题描述】:

让我们获取以下数据:

Mini <- c(8500, 11000,  10500,  12000,  9500,   10500, 12000, 11500)
Kleinwagen <- c(8500,  10500,   10500,  10500,  12500,  12000,  13000,  13500)
Kompatklass <- c(11000, 13000,  12500,  13000,  13500,  15500,  15500,  17500)
minivans <- c(6000, 11500,  10500,  13000,  13000,  14000,  14500,  19000)
sportswagen <- c(12000,  12000, 14000,  18000,  16000,  17000,  26000,  21500)
utilities <- c(7500, 11000, 11500,  11000,  12000,  16500,  16500,  21500)
mittleklass <- c(11000, 12000,  14000,  14000,  15000,  17500,  28000, 26000)
oberemittle <- c(11000,  13500, 14000,  14500,  17000,  20000,  25000, 30500)
bigvans <- c(13000,  12500, 16000,  15000,  16000,  17000,  18500, 37500)

Dist.table <- t(data.frame(Mini, Kleinwagen, Kompatklass, minivans, sportswagen, utilities, mittleklass, oberemittle, bigvans))

现在我假设每个值都是平均值。我还假设标准偏差为 0.7%

如果我使用:

b <- rnorm(1, mean = Dist.table[1, 1], sd = Dist.table[1, 1] * 0.007)

我为 [1,1] 生成一个随机数。

但我想创建一个完整的随机变量矩阵

【问题讨论】:

  • 您将要生成的数字数量设置为1(它是rnorm函数的第一个参数)当然它只生成一个值。我不明白的另一点:为什么要创建一个矩阵并要填充随机数?为什么你不matrix(rnorm(80, sd = 0.7), ncol = 8)
  • 1 用作指导,我想引入排列来创建一系列矩阵
  • 如果您想要为Dist.table 中的每个值添加噪音,您总是可以只使用Dist.table + matrix(rnorm(80, sd=0.7), ncol=8)
  • @Josh,这会产生错误。此外,您通过将平均值设置为 80 来引入噪声。我矩阵中的每个数字已经是平均值
  • 如果您想使用 0.7% 的标准差,则需要乘以 0.007(否则您暗示 SD 为 70%)。

标签: r random normal-distribution


【解决方案1】:

怎么样:

matrix(rnorm(prod(dim(Dist.table)), mean = Dist.table, sd = Dist.table * 0.007), nrow = nrow(Dist.table))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多