用手段向量调用rnorm

时间:2010-08-18 09:26:53

标签: r vector statistics normal-distribution

当我将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)

有什么想法吗?

2 个答案:

答案 0 :(得分:12)

随机数rnorm生成的数量等于a的长度。来自?rnorm

  

n:观察次数。如果   'length(n)&gt; 1',长度   是所需的数字。

要查看将a传递给均值参数时发生的情况,如果我们更改示例会更容易:

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

因此,我们生成length(a)个随机数,均值为a[i]

答案 1 :(得分:2)

一个更好的例子:

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 作为 平均值 b 的第一个元素作为 sd

对于 y 的第二个和第五个元素, rnorm 采用 a 的第二个元素作为 平均值 ,而 b 的第二个元素作为 sd

对于 y 的第三和第六个元素, rnorm a 的第三个元素作为 平均值 ,而 b 的第三个元素作为 sd

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

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