<!DOCTYPE html> Stata_MC.md

Stataでのモンテカルロ法

プログラム定義

. capture program drop lnsim

. 
. program define lnsim, rclass //プログラム定義
  1. 
. version 18 // Stataのバージョン
  2. 
. syntax [, obs(integer 1) mu(real 0) sigma(real 1) ]
  3. 
. drop _all // 全ての変数削除
  4. 
. set obs `obs' // サンプル数
  5. 
. tempvar z  //一時的な変数z作成
  6. 
. gen `z' = exp(rnormal(`mu',`sigma')) // 対数正規分布
  7. 
. summarize `z' // 記述統計
  8. 
. return scalar mean = r(mean) //平均保存
  9. 
. return scalar Var  = r(Var) //分散保存
 10. 
. end

モンテカルロ法実行(1)

. simulate mean=r(mean) var=r(Var), reps(10000) nodots : lnsim, obs(100)

      Command: lnsim, obs(100)
         mean: r(mean)
          var: r(Var)


. 
. save "Data_output/data1.dta",replace
file Data_output/data1.dta saved

. 
. su

    Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
        mean |     10,000    1.651469    .2171037   .9949802   2.890096
         var |     10,000    4.727914    4.587005   .7066754   125.7499

モンテカルロ法実行(2)

. clear

. 
. simulate mean=r(mean) var=r(Var), reps(10000) nodots : lnsim, obs(50) mu(-3) sigma(7)

      Command: lnsim, obs(50) mu(-3) sigma(7)
         mean: r(mean)
          var: r(Var)


. 
. 
. save "Data_output/data2.dta",replace
file Data_output/data2.dta saved

OLS

. clear all 

. 
. program define ols, rclass 
  1. 
. version 14.2 
  2. 
. syntax 
  3. 
. 
.     clear 
  4. 
.     drop _all 
  5.     set obs 10000 
  6.     gen x = 9*rnormal()  
  7.     gen u  = 36*rnormal()  
  8.     gen y  = 3 + 2*x + u 
  9.     reg y x 
 10.     end 

. 
. simulate beta=_b[x], reps(1000): ols 

      Command: ols
         beta: _b[x]

Simulations (1,000): .........10.........20.........30.........40.........50.........60.........70.........80......
> ...90.........100.........110.........120.........130.........140.........150.........160.........170.........180
> .........190.........200.........210.........220.........230.........240.........250.........260.........270.....
> ....280.........290.........300.........310.........320.........330.........340.........350.........360.........3
> 70.........380.........390.........400.........410.........420.........430.........440.........450.........460...
> ......470.........480.........490.........500.........510.........520.........530.........540.........550........
> .560.........570.........580.........590.........600.........610.........620.........630.........640.........650.
> ........660.........670.........680.........690.........700.........710.........720.........730.........740......
> ...750.........760.........770.........780.........790.........800.........810.........820.........830.........84
> 0.........850.........860.........870.........880.........890.........900.........910.........920.........930....
> .....940.........950.........960.........970.........980.........990.........1,000 done

. su 

    Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
        beta |      1,000    1.997351    .0397718   1.875863   2.112572

. 
. hist beta
(bin=29, start=1.8758633, width=.00816237)

. 
. graph export "Figures/OLS_beta.png", replace
file /Users/ayumu/Documents/GitHub/RTips/MC/Figures/OLS_beta.png saved as PNG format