Stata/随机数生成
外观
< Stata
- 函数 -runiform()- 返回区间 [0,1) 上的均匀分布的伪随机数
. set obs 10 obs was 0, now 10 . gen x = runiform()
您有针对主要分布的内置随机数生成方法。关键字是 rnd。以下帮助文件中列出了所有可用分布:-h rnd-
- 生成随机数的基本函数是 uniform()。因此,您通常必须使用逆CDF方法从其他分布中进行采样。
我们可以从均匀分布中抽取
. clear . set obs 500 obs was 0, now 500 . gen unif=runiform() . hist unif (bin=22, start=.0043096, width=.04522361)
我们可以从正态分布中抽取
. gen norm=invnorm(runiform()) . hist norm (bin=22, start=-2.8517358, width=.23821211)
我们可以从 分布中抽取
. gen chi2=invchi2(1,uniform()) . hist chi2 (bin=22, start=.00002381, width=.50381869) . gen chi210=invchi2(10,uniform()) . hist chi210 (bin=22, start=1.8273849, width=1.3336678)
我们可以从 Fisher Snedecor 分布中抽取
. gen fisher=invF(10,10,uniform()) . hist fisher (bin=22, start=.14025442, width=.39209784)
我们可以从 Student 分布中抽取。记住invttail()不是 CDF(累积分布函数)的逆,而是生存函数(1 - CDF)的逆。
. gen student=1-invttail(10,uniform()) . hist student (bin=22, start=-3.9568543, width=.4741968)
drawnorm 直接从多元正态分布中抽取。