【问题标题】:Calling rnorm with a vector of means使用均值向量调用 rnorm
【发布时间】:2011-03-31 10:49:25
【问题描述】:

当我调用 rnorm 时,将单个值作为均值传递,很明显会发生什么:从 Normal(10,1) 生成一个值。

y <- rnorm(20, mean=10, sd=1)

但是,我看到将整个向量传递给rnorm(或rcauchy等)的示例;在这种情况下,我不确定 R 机器的真正作用。例如:

a = c(10,22,33,44,5,10,30,22,100,45,97)
y <- rnorm(a, mean=a, sd=1)

有什么想法吗?

【问题讨论】:

    标签: r vector statistics normal-distribution


    【解决方案1】:

    一个更好的例子:

    a <- c(0,10,100)
    b <- c(2,4,6)
    y <- rnorm(6,a,b)
    y
    

    结果

    [1]  -1.2261425  10.1596462 103.3857481  -0.7260817   7.0812499  97.8964131
    

    如您所见,对于 y 的第一个和第四个元素,rnorm 采用 的第一个元素a 作为 meanb 的第一个元素作为 >sd.

    对于y的第二个和第五个元素,rnorma的第二个元素 作为 meanb 的第二个元素作为 sd

    对于y的第三个和第六个元素,rnorma的第三个元素 作为 meanb 的第三个元素作为 sd

    您可以在 rnorm 的第一个参数中试验不同的数字,看看发生了什么

    例如,如果您在调用 rnorm 时使用 5 而不是 6 作为第一个参数会发生什么?

    【讨论】:

    • 它只是遵守R的回收规则
    【解决方案2】:

    rnorm产生的随机数的个数等于a的长度。来自?rnorm

    n:观察次数。如果 ‘length(n) > 1’,取长度 是所需的数字。

    要查看将 a 传递给 mean 参数时发生了什么,如果我们更改示例会更容易:

    a = c(0, 10, 100)
    y = rnorm(a, mean=a, sd=1)
    [1] -0.4853138  9.3630421 99.7536461
    

    所以我们生成length(a) 随机数,平均值为a[i]

    【讨论】:

    • 我们可以使用 rnorm(100) 或类似的东西来创建仅介于 0 和 1 之间的值吗?目前它给出的值在(-1 到 1)之间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多