当我调用 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)
有什么想法吗?
当我调用 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)
有什么想法吗?
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]
。
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的第二个元素作为标准差。
对于y的第三个和第六个元素,rnorm将a的第三个元素作为平均值,将b的第三个元素作为标准差。
您可以尝试不同的数字作为rnorm的第一个参数,以查看发生了什么。
例如,如果您在调用rnorm时将第一个参数改为5而不是6,会发生什么?