为rnorm指定平均值/标准差的向量是做什么的?

时间:2017-03-01 02:14:50

标签: r

以下行从正态分布产生1000个随机抽取,平均值为0,sd为1。

rnorm(1000,0,1)
## [1] -0.3314116  2.3704895 -0.8110266  1.0777301 -0.8812868  0.3292315

以下行也会产生1000次绘制,但现在每次观察的平均值在0到100之间变化。

rnorm(1000,c(0,100),1)
## [1]  -1.12269954  98.83932359   0.07735428  99.91774166   0.60986243 101.50529435 

那么在这种情况下会发生什么?一般逻辑是什么?

rnorm(1000,c(0,100),c(1,10))

感谢您提供矢量回收的链接,这是我遗失的一件事。另一个是使用平均值和标准差的组合。例如,

rnorm(1000,c(0,100),c(1,10))

是否从正态分布中得出平均值为0且标准差为10?以下答案解决了这个问题。

1 个答案:

答案 0 :(得分:1)

我创建了一个示例来表达你问题中的第三个例子。

set.seed(1337)
x=rnorm(2000,c(0,100),c(1,10))
even=1:500*2
odd=0:499*2+1
mean(x[odd]) #0.00427
mean(x[even]) #99.5
sd(x[odd]) #1.01
sd(x[even]) #9.49

您可以看到该函数在每个向量的第一个和第二个输入之间交替。正如亚历克斯评论的那样,如果其中一个向量的长度与另一个不同(第二个例子),那么较短的向量将会回收"输入直到它与更长的向量一样长。因此,rnorm(1000,c(0,100),1)通过循环第二个向量的输入转换为rnorm(1000,c(0,1000),c(1,1))