【问题标题】:What does specifying a vector of means/standard deviations for rnorm do?为 rnorm 指定均值/标准差向量有什么作用?
【发布时间】:2017-03-01 02:14:49
【问题描述】:

以下行从均值为 0 和 sd 1 的正态分布中产生 1000 次随机抽取。

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 的正态分布中得出结论吗?下面的答案解决了这个问题。

【问题讨论】:

  • 正在发生的是矢量回收; rnorm 可以从正态分布中生成变量向量。结果的长度由第一个参数指定,所有其他参数都以通常的 R 方式回收。最好在 stackoverflow 上询问,或者直接在 Google 上搜索。
  • Implementation of standard recycling rules 的可能重复项,链接的问题描述了回收行为。

标签: r


【解决方案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))

【讨论】:

  • 这种行为是否记录在某处?否则就很神秘了。
猜你喜欢
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 2014-09-04
  • 2016-07-24
  • 1970-01-01
相关资源
最近更新 更多