用一个均值向量调用rnorm函数

24

当我调用 rnorm 并传递单个值作为均值时,很明显会发生什么:从正态分布(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个回答

22

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

n: 观测值数量。如果‘length(n) > 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]


我们能否使用rnorm(100)或类似的方法来创建仅在0和1之间的值?目前它会给出-1到1之间的值。 - Mona Jalal

5
更好的例子:
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的第一个和第四个元素,rnorma的第一个元素作为平均值,将b的第一个元素作为标准差

对于y的第二个和第五个元素,rnorma的第二个元素作为平均值,将b的第二个元素作为标准差

对于y的第三个和第六个元素,rnorma的第三个元素作为平均值,将b的第三个元素作为标准差

您可以尝试不同的数字作为rnorm的第一个参数,以查看发生了什么。

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


1
它只是遵循 R 的循环利用规则。 - alp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接