【问题标题】:How to generate a random variable using values of another random variable as its parameter如何使用另一个随机变量的值作为其参数来生成随机变量
【发布时间】:2021-01-10 10:52:13
【问题描述】:

我有一个代码可以从指定分布(例如统一)中生成 5 个随机变量 并将其放在 5x2 矩阵的第一列

my.data <- data.frame(matrix(nrow = 5, ncol = 2))
colnames(my.data) <- c("unif", "norm")
set.seed(1)
my.data[, 1] <- runif(5)

看起来像这样

       unif norm
1 0.2655087   NA
2 0.3721239   NA
3 0.5728534   NA
4 0.9082078   NA
5 0.2016819   NA

我想使用生成的随机变量作为另一个分布(例如正态)的参数, 也就是说,我想从均值等于均匀分布随机变量的值、标准差等于随机变量的值*0.1的正态分布中采样。

my.data[, 2] <- rnorm(1, mean = my.data$unif, sd = my.data$unif*0.1)
my.data[, 2] <- rnorm(1, mean = my.data[,1], sd = my.data[,1]*0.1)

我用两种方式编写了代码,但得到了相同的结果。

       unif      norm
1 0.2655087 0.2992928
2 0.3721239 0.2992928
3 0.5728534 0.2992928
4 0.9082078 0.2992928
5 0.2016819 0.2992928

第二列中的所有值都相同。 如何更改代码,以便使用第一列中的值作为参数在第二列中生成随机变量?

【问题讨论】:

    标签: r


    【解决方案1】:

    您在 rnorm 中仅生成 1 个数字,该数字正在为所有值回收。生成与数据中的行数一样多的数字。

    my.data[, 2] <- rnorm(nrow(my.data),  mean = my.data$unif, sd = my.data$unif*0.1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 2021-02-13
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 2014-05-18
      相关资源
      最近更新 更多