【发布时间】:2016-04-05 13:54:22
【问题描述】:
我被要求“将 x 模拟为一个独立的同分布 (iid) 正态变量,平均值 = 0,标准 = 1.5,样本长度为 500”
我正在通过以下两种方式进行采样:
set.seed(8402)
X <- rnorm(500, 0, 1.5)
head(X)
我得到了
-1.8297969 -0.1862884 1.4219400 -1.0841421 -1.5276701 1.6159368
但是,如果我这样做了
X <- replicate(500, rnorm(1,0,1.5))
head(X)
我得到了
-0.04032755 0.92002552 -2.28001943 -1.36840869 1.49820718 0.06205003
我的问题是生成 iid 正常变量的正确方法是什么?这两种方式有什么区别?
非常感谢!
【问题讨论】:
-
运行你的代码我得到了两种方式相同的结果(如预期的那样)。如果我第二次不设置随机种子,我会得到你的第二个结果。第一种方式效率更高,因此推荐。
-
@Roland 你能解释一下“第二次设置随机种子”是什么意思吗?
-
如果您完全按照问题中提供的方式运行代码,则不会得到显示的输出。
-
计算机不太擅长随机数,因为它们实际上不会生成随机数。要对此进行测试,请设置一个随机种子,如
set.seed(42),然后运行 rnorm(1)5 次(不使用复制)。它们看起来像随机数。现在,再次运行set.seed(42)并再运行rnorm(1)5 次。您会注意到它们与您之前得到的数字完全相同。通过第二次运行set.seed,您“重新启动”了 R 从中提取的数字列表。这就是为什么如果您只使用一次set.seed,您的结果会有所不同。
标签: r statistics