我想~N(0,10)
为每个观察生成一个固定的随机变量以供将来计算。
gen X=rnormal (0,10)
list X
Blank
我怎样才能看到X
正在生成什么值?
当您发出这些命令时,您可能正在使用一个空数据集。在这种情况下,您首先需要告诉 Stata 您的数据集包含多少观察值。为此,您需要使用set obs
命令,例如:
. set seed 12345
. set obs 10
obs was 0, now 10
. gen x = rnormal(0,10)
. list, clean
x
1. -9.580833
2. -2.907274
3. 8.45202
4. 8.617108
5. -12.19151
6. 9.457337
7. 1.722469
8. -13.29949
9. -11.5291
10. 25.1646
想想当你不使用时会发生什么set obs
。在这种情况下,Stata 会看到gen x = rnormal(0,10)
并认为“好吧,我需要从正态分布中创建随机抽取,但是有多少?”。如果您打开了一个数据集,那么它会回答“与数据集中的观察值一样多”。如果您没有打开数据集,那么答案仍然是“与数据集中的观察值一样多”,但这恰好是 0。
编辑:
如果你只想要一个数字,你最好使用标量而不是变量。在 Stata 中,标量指的是单个数字,变量指的是数据集中的单个列。对于标量,最好使用临时名称,因为它们与变量共享相同的命名空间,但在涉及缩写时变量优先,这可能导致意外行为。因此,您可以执行以下操作:
. tempname a
. scalar `a' = rnormal(0,10)
. di `a'
10.737423