Mic*_*ico 7 random r code-translation stata
我试图在R中复制别人在Stata写的一些代码,并试图预测他们的p-RNG的行为.
他们的代码有这个片段:
set seed 123456
Run Code Online (Sandbox Code Playgroud)
不幸的是,它完全是Stata使用的算法有点模糊.这个问题表明它是一个KISS算法,但最终没有设法复制(有些链接似乎死了/过时).而手动从塔塔对于set seed没有提及任何算法.这个问题似乎也没有完成.
尝试复制Stata的随机数是愚蠢的吗?
我不知道使用哪个版本的Stata来创建它.
简而言之:是的,这是一个傻瓜的差事.
Stata作为一种专有软件,尚未发布其核心组件的所有细节,如随机数发生器.但是,文档是可用的(Stata 14的链接),最有针对性:
runiform()是所有其他随机数函数的基础,因为所有其他随机数函数将均匀(0,1)随机数转换为指定的分布.
runiform()实现了Mersenne Twister 64位(MT64)和"保持简单愚蠢"的32位(KISS32)算法,用于生成均匀(0,1)随机数.runiform()默认情况下使用MT64算法.
runiform()仅当用户版本小于14或随机数生成器设置为kiss32... 时才使用KISS32算法
回想一下?RandomR中的Mersenne twister:
'种子'是一组624维的32位整数加上该组中的当前位置.
Stata内部控制着624维集,这几乎是不可能猜到的.
我建议你从Stata中导出这些随机数并将它们读入矢量/矩阵/等.在R中使用
library(haven)
mydata <- read_dta("mydata.dta")
Run Code Online (Sandbox Code Playgroud)