楼主: 夏目贵志
2587 5

[Stata] 分享一个用Stata调用EViews做统计模拟的程序 [推广有奖]

贵宾

学科带头人

96%

还不是VIP/贵宾

-

威望
1
论坛币
238570 个
通用积分
17117.5494
学术水平
851 点
热心指数
971 点
信用等级
711 点
经验
759232 点
帖子
4029
精华
1
在线时间
793 小时
注册时间
2012-7-15
最后登录
2017-9-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

Stata调用EViews做统计模拟的程序

  1. // This file runs simulation exercise using data generated in Stata
  2. program runsim , rclass

  3. syntax , dgp(string) simout(string) result(string) folder(string) [reps(string)]

  4. qui {

  5. // Set default number of replications
  6. if "`reps'"=="" {
  7.     local reps = 100
  8. }

  9. // Run these simulations
  10. noi di "Simulation Start"
  11. forvalues r = 1/`reps' {
  12.     // Progress bar
  13.     if mod(`r',20)==0 {
  14.         noi di "`r'" _c
  15.     }
  16.     else if mod(`r',5)==0 {
  17.         noi di "." _c
  18.     }
  19.     // Generate data
  20.     clear
  21.     run "./`folder'/`dgp'"
  22.     compress
  23.     save simdata.dta, replace
  24.     cap erase simdata_result.dta

  25.     // Call EViews to run the simulation
  26.     shell "C:\Program Files\EViews 9\EViews9_x64.exe" "./sim.prg"

  27.     // Collect results
  28.     use simdata_result.dta, clear
  29.     save "./`folder'/`simout'`r'", replace
  30.     cap erase simdata_result.dta
  31.     cap erase simdata.dta
  32. }
  33. noi di "Simulation finished."

  34. // merge all the results
  35. clear
  36. use ./`folder'/`simout'1.dta
  37. forvalues r = 2/`reps' {
  38.     append using ./`folder'/`simout'`r'.dta
  39. }

  40. // Here you can add more code to process your results as necessary

  41. // Save final results
  42. compress
  43. save "./`folder'/`result'", replace

  44. } // end qui
  45. end
复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:EVIEWS Views Stata Eview view 程序 统计

已有 5 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
pkl + 2 + 2 + 2 精彩帖子
happy_287422301 + 100 精彩帖子
xddlovejiao1314 + 100 + 100 + 5 + 5 + 5 精彩帖子
niuniuyiwan + 100 + 100 + 5 + 5 + 5 精彩帖子
crystal8832 + 20 + 1 + 1 + 1 精彩帖子

总评分: 经验 + 200  论坛币 + 320  学术水平 + 13  热心指数 + 13  信用等级 + 13   查看全部评分

本帖被以下文库推荐

沙发
夏目贵志 发表于 2015-10-28 12:40:35 |只看作者 |坛友微信交流群
之前我发过一个帖子,大概是说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的转换。

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
happy_287422301 + 100 + 100 + 3 + 3 精彩帖子
niuniuyiwan + 100 + 100 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 200  论坛币 + 200  学术水平 + 8  热心指数 + 8  信用等级 + 5   查看全部评分

使用道具

藤椅
夏目贵志 发表于 2015-10-28 12:46:01 |只看作者 |坛友微信交流群
对了,漏了一个关键点:
第31行,shell命令是个非常好用的命令。这里,shell命令用来调用EViews。不过还有一些用法大家也许会感兴趣。这里列举一些。大家可以补充。
1. 调用7zip来对项目文件进行打包保存。
2. 调用pdflatex.exe之类的程序来生成pdf文件。
3. 调用vbscript来处理Excel表格。

第三点尤其有用。很多时候Stata输出的Excel表需要进一步处理,但是一般来说发给客户的Excel最好不要带有VBA程序(比如我们不想公开我们的VBA程序,或者基于安全考虑不想在工作簿里启用宏)。这个时候就可以通过这个方法来解决调整表格格式的问题。很好用的。
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
happy_287422301 + 100 + 3 + 3 精彩帖子
niuniuyiwan + 100 + 100 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 100  论坛币 + 200  学术水平 + 8  热心指数 + 8  信用等级 + 5   查看全部评分

使用道具

板凳
xddlovejiao1314 学生认证  发表于 2015-10-28 13:24:04 |只看作者 |坛友微信交流群
谢谢分享。

使用道具

报纸
西门高 发表于 2017-4-2 11:10:17 |只看作者 |坛友微信交流群
谢谢分享

使用道具

地板
zhoudanhz 在职认证  发表于 2019-8-12 13:38:16 |只看作者 |坛友微信交流群
非常棒!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 16:53