-1

我想~N(0,10)为每个观察生成一个固定的随机变量以供将来计算。

gen X=rnormal (0,10)
list X

Blank

我怎样才能看到X正在生成什么值?

4

1 回答 1

2

当您发出这些命令时,您可能正在使用一个空数据集。在这种情况下,您首先需要告诉 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
于 2013-04-26T13:40:50.307 回答