之前我发过一个帖子,大概是说Eviews进行某些运算的速度比Stata快很多。但是我觉得Stata的数据管理功能用起来更得心应手。于是就想到使用EViews来做需要大量运算的工作,而通过Stata来处理运算结果。这个程序就是为了这个目的写的。
简单的说,每一次repetition(14到39行),程序首先调用一个stata程序(dgp选项)来生成模拟的数据,然后把数据保存下来(23到28行)。然后,让Eviews读取这个数据并进行需要的计算(31行)。EViews中需要的的计算程序保存在sim.prg文件里。这个文件会把运算的结果保存为Stata格式的数据文件。这个数据文件被重命名以后移动到用户指定的文件夹备用(34到37行)。然后,每次repetition的结果被整合到一起并保存(42到52行)。
除了上述的核心部分之外,第4行定义runsim的syntax;9到11行定义可选项(reps)的默认值;17到22行有一个简单的进度条。
至于这个命令的语法:
dgp接受一个string,这个string是用来生成数据的程序的名字,比如simdata1.do
simout接受一个string,这个会作为每次repetition的结果的名字(实际保存的文件为这个名字加上repetition number)。
result接受一个string,这个是最终结果的文件名。
folder接受一个string,表示你要把结果保存在什么文件夹。
reps是一个可选的项目,接受一个整数*,这是repetition的次数。如果不明确指定这个数值,则程序默认使用100
*注意,虽然这里只能接受整数,但是如果程序主要是内部使用,完全可以在syntax行使用string作为可接受的值。Stata会自动进行local macro从numeric到string和从string到numeric的转换。
|