経済統計分析のための Stata 入門

経済統計分析のための Stata 入門
愛知学院大学
野村
1
友和
この資料は,2008~2011 年度,神戸大学大学院経済学研究科の「計量分析演習」で用い
たものです。使っているデータは,主に Jeffrey Wooldridge “Introductory Econometrics”
のものです。
誤りや要望などがあればメールで知らせてください。
目次
Stata の基本操作 .................................................................................................................. 4
Stata の画面 ..................................................................................................................... 5
ヘルプの参照..................................................................................................................... 7
メモリの割当..................................................................................................................... 8
カレント・ディレクトリ ................................................................................................... 9
データ(.dta ファイル)の読み込み ............................................................................... 10
Data Browser と Data Editor ........................................................................................ 11
データの保存................................................................................................................... 12
Stata の終了 ................................................................................................................... 13
ログの記録 ...................................................................................................................... 14
do ファイル ..................................................................................................................... 16
ado ファイルのインストール .......................................................................................... 17
データの管理と要約 ........................................................................................................... 18
統計データについて ........................................................................................................ 19
横断面データと時系列データ.......................................................................................... 19
欠損値について ............................................................................................................... 20
条件式 ............................................................................................................................. 21
新しい変数の作成 ........................................................................................................... 22
スカラー .......................................................................................................................... 23
サンプルの限定 ............................................................................................................... 24
記述統計量の計算 ........................................................................................................... 25
コマンドの戻り値 ........................................................................................................... 26
度数分布表・クロス表の作成.......................................................................................... 27
より自由度の高い集計 .................................................................................................... 29
ヒストグラムの作成 ........................................................................................................ 30
カーネル密度推定 ........................................................................................................... 31
相関マトリクス・散布図・散布図マトリクス................................................................. 32
ウェイトの使い方 ........................................................................................................... 33
不平等度の計算 ............................................................................................................... 34
2
ローレンツ曲線の描画 .................................................................................................... 35
時系列データ ...................................................................................................................... 36
時系列データの宣言 ........................................................................................................ 37
時間変数の作成 1(文字列からの変換) ........................................................................ 38
時間変数の作成 2(複数の変数によって時間が記録されている場合) .......................... 39
分析期間の限定 ............................................................................................................... 40
オペレータ ...................................................................................................................... 41
計量経済モデル................................................................................................................... 42
線形回帰モデルの推定 .................................................................................................... 43
予測値,残差の保存 ........................................................................................................ 44
線形制約の検定 ............................................................................................................... 45
ダミー変数 ...................................................................................................................... 47
頑健な標準誤差 ............................................................................................................... 48
不均一分散の検定(Breush-Pagan 検定) ..................................................................... 49
不均一分散の検定(White 検定の例) ........................................................................... 50
加重最小二乗法(WLS) ................................................................................................ 51
Feasible GLS の推定例................................................................................................... 52
3
Stata の基本操作
4
Stata の画面
①メニュー
Stata では基本的にすべての機能に対応するコマンドが用意されており,コマンド入力で
すべての操作が可能である。しかし,すべてのコマンドを覚えることはできないので,メ
ニューから選択することによっても多くの機能が利用できる(コマンドを補完できる)よ
うに設計されている。
②Result ウィンドウ
コマンドを実行した結果や,メッセージなどが表示されるウィンドウ。出力結果はコピ
ーして Word や Excel などに貼り付けることも可能。表として Excel に貼り付けたい場合は
“Copy as a table”でコピーする。
③Command ウィンドウ
コマンドを入力するウィンドウ。PageUp キー,PageDown キーで直前に入力したコマ
ンドを再度呼び出すことができる。
④Review ウィンドウ
実行したコマンドが表示されるウィンドウ。過去に実行したコマンドを再度呼び出すに
は,その部分をマウスでクリックすればよい。
5
⑤Variable ウィンドウ
変数のリストが表示されるウィンドウ。変数はキーボードから入力しなくても,このリ
ストからマウスでクリックすることにより入力できる。
もし,各ウィンドウが表示されない場合に
は,メニューの“Window”から表示したいウ
ィンドウを選択すればよい。
6
ヘルプの参照
ヘルプを検索するコマンド:help (キーワード)
Stata のコマンドなどについて知りたいときには,ヘルプを利用する(GradPlan の場合
はマニュアルが付属しない)。help コマンドを入力すると,ヘルプの目次が表示されるので,
リンクを辿っていくか,検索 BOX にキーワードを入力する。
. help
ヘルプの参照
. help regress
ヘルプから“regress”を検索
7
メモリの割当
メモリを確保するコマンド:set memory メモリ容量
データを格納するメモリは初期状態で 1MB 確保されている。
1MB を超える大きなデータを扱う際には,メモリを確保しなければならない。メモリは
使用するデータの大きさに応じて設定する(大きいほどよいというわけではない)。
. set memory 50m
m はメガ,g はギガを表す
Current memory allocation
current
memory usage
settable
value
description
(1M = 1024k)
-------------------------------------------------------------------set maxvar
5000
max. variables allowed
1.909M
set memory
50M
max. data space
50.000M
set matsize
400
max. RHS vars in models
1.254M
----------53.163M
8
カレント・ディレクトリ
カレント・ディレクトリを確認するコマンド:cd
カレント・ディレクトリを変更するコマンド:cd フォルダ名
Stata で用いるファイル(データ・セット,do ファイル,ログ・ファイル等)はすべて
カレント・ディレクトリに置いておくと便利である。カレント・ディレクトリは通常,自
分のホーム・フォルダ(学籍番号)に設定されているが,変更することも可能である。
カレント・ディレクトリ内にあるフォルダやファイルは,パス(ファイルの場所)を指
定しなくてもファイル名やフォルダ名だけ指定してやればよい。
. cd
/export/home1/学籍番号/
. cd exercise1
/export/home1/学籍番号/exercise1
9
データ(.dta ファイル)の読み込み
データ・ファイルを読み込むコマンド:use ファイル名
メモリ上のデータ・セットに関する情報を表示させるコマンド:describe
読み込む Stata データ・ファイル(.dta ファイル)はあらかじめカレント・ディレクト
リに置いておく。カレント・ディレクトリ以外にあるデータを読み込む際にはフル・パス
でファイル名を指定しなければいけない(入力するのは大変なので,File メニューから開
けばよい)。ファイルの拡張子(.dta)は省略することができる。
データの読み込みに成功すれば,Variable ウィンドウに変数のリストが表示される。
. use wage1
. describe
Contains data from wage1.dta
obs:
526
観測数
vars:
24
変数の数
4 Aug 2009 22:08
size:
21,040 (99.9% of memory free)
-------------------------------------------------------------------------------storage display
value
variable name
type format
label
variable label
-------------------------------------------------------------------------------wage
float %9.0g
average hourly earnings
educ
byte %8.0g
years of education
exper
byte %8.0g
years potential experience
・・・・・・・・・・・・・・・・・<省略>・・・・・・・・・・・・・・・・・・・・
servocc
byte %8.0g
=1 if in service occupation
lwage
float %9.0g
log(wage)
expersq
int
%8.0g
exper^2
tenursq
int
%8.0g
tenure^2
------------------------------------------------------------------------Sorted by:
ソート(並べ替え)に用いられている変数(空白であればソートされていない)
10
Data Browser と Data Editor
Data Browser を呼び出すコマンド :browse
Data Editor を呼び出すコマンド:edit
Stata にはデータを閲覧や編集を行うために,Data Browser と Data Editor が用意され
ている。どちらも Excel などの表計算ソフトのような概観だが,Data Browser はデータの
閲覧専用で編集を行うことができないことに注意。
小規模のデータであれば,Excel などから Stata の Data Editor にコピー&ペーストする
ことで,Stata にデータをインポートすることができる。
Stata 10 以前のバージョンでは,Data Browser や Data Editor を開いた状態で他の作業
(コマンドの入力)を行うことができないので注意。
11
データの保存
データを保存するコマンド:save ファイル名 ( ,replace)
メモリ上のデータをファイルに保存する。すでに存在するファイルに上書き保存をする
際には,replace オプションを用いる。ファイルのパス(場所)を指定しなければ,カレン
ト・ディレクトリに保存される。
. save wage1
上書きするときには replace オプションをつけないと,エラーになる
file wage1.dta already exists
r(602);
. save wage1,replace
file wage1.dta saved
12
Stata の終了
メモリの内容を消去するコマンド:clear
Stata を終了するコマンド :exit (,clear)
データに変更が加えられた後に保存が行われていなければ,Stata を終了することができ
ない。保存するか,メモリの内容を消去してから終了する。
メモリの内容の消去と Stata の終了を同時に行うには,exit コマンドに clear オプション
を用いる。
. exit
変更されたデータを保存するか,消去しなければ Stata を終了することができない
no; data in memory would be lost
r(4);
. exit, clear
13
ログの記録
ログの記録を開始するコマンド:log using ファイル名 ( ,replace / ,append)
ログの記録を終了するコマンド:log close
コマンドの記録を開始するコマンド:cmdlog using ファイル名
コマンドの記録を終了するコマンド:cmdlog close
ログを閲覧するコマンド:view ファイル名
…
拡張子省略不可
Stata のコマンドや出力結果はログ・ファイルに記録することができる。通常は Result
ウィンドウで結果を確認したり,コピー・ペーストで Excel や Word などに結果を保存した
りすればよいが,長いプログラムを実行した場合などは,はじめの方の出力が読めなくな
ってしまうのでログ・ファイルを利用する。
. log using logfile
-------------------------------------------------------------------------------name: <unnamed>
log: /export/home1/学籍番号/exercise1/logfile.smcl
log type: smcl
opened on: 1 Jan 2009, 00:00:00
. log close
ログ・ファイルの形式は,smcl 形式と text 形式の 2 つがある。ログの記録を開始する際
に,ログ・ファイル名の拡張子を指定しなければ,自動的に smcl 形式となる(拡張子.smcl
が自動的につけられる)
。text 形式のログ・ファイルを作成したいときには,ログの記録を
開始する際に,ログ・ファイル名の拡張子を.log としてやればよい。
smcl 形式のログは Stata の Viewer でしか読めないが,文字の色やフォントなどがマー
クアップされているために読みやすい。text 形式のログはメモ帳など多くのソフトでその
まま読むことができる。
ログ・ファイルも,すでに存在するファイルに上書きする際には replace オプションを用
いる。すでに存在するログ・ファイルの末尾に新たなログを追加するには append オプショ
ンを用いる。 コマンドのみを記録し,出力結果を記録したくない場合は,cmdlog コマン
ドを用いればよい。
ログの記録中は新たなログ・ファイルの記録を開始することができないので,一度閉じ
てから行わなければならない。
記録されたログ・ファイルを閲覧するには view コマンドを用いる(smcl,log,コマン
ドのどの形式でも閲覧することができる)。このとき,ファイル名の拡張子を省略すること
ができないので注意が必要である。
14
. log using logfile.log
file /export/home1/学籍番号/exercise1/logfile.log already exists
r(602);
上書きするときには replace か append オプションをつけないと,エラーになる
. log using logfile.log,replace
-------------------------------------------------------------------------------name: <unnamed>
log: /export/home1/学籍番号/exercise1/logfile.log
log type: text
opened on: 1 Jan 2009, 00:00:00
. cmdlog using logfile
(cmdlog /export/home1/学籍番号/exercise1/logfile.txt opened)
. cmdlog using logfile
log file already open
r(604);
ログを記録中は新たなログ・ファイルを開くことができない
. cmdlog close
(cmdlog /export/home1/学籍番号/exercise1/logfile.txt closed)
. view logfile.smcl
15
do ファイル
do ファイル・エディタを起動するコマンド:doedit
(ファイル名)
do ファイルを実行するコマンド:do ファイル名
データを変えて同じ分析を行う場合や,繰り返し同じ作業が必要な場合などは,do ファ
イルに一連のコマンド(プログラム)を記述しておき実行する。Stata には do ファイルを
作成するための do ファイル・エディタが搭載されており,編集から実行までを簡単に行う
ことができるようになっている。ただし,do ファイルはテキスト・ファイルなので,メモ
帳など他のエディタでも編集することができる。
新しい do ファイルを作成して編集するには doedit コマンドを使う。 ”Untitled#.do”と
いう名前の do ファイルが作成されるので,名前を変更して保存する。すでに保存してある
do ファイルを読み込んで編集するには,doedit のあとにファイル名を指定する。
do ファイル・エディタで編集中の do ファイルは,do ボタンを押すことによりすぐに実
行することができる。
do ファイルの実行中は,ひとつずつコマンドを入力した場合と同様に出力結果が Result
ウィンドウに表示されていく。run コマンドを用いると,do ファイルが実行されるだけで,
結果は出力されない(ログ・ファイルに記録しておかないと結果を見ることができない)。
Stata ではデータの編集を行った際に,元に戻すことができない上,編集の履歴も残らな
い。そのため,オリジナル・データは別の場所に保存してコピーしたファイルを用いて分
析する。さらに,データの読み込みから加工の過程を do ファイルに記述しておいて分析の
たびに毎回実行し,分析後にデータを上書き保存しないようにしておけば,もとのデータ
の内容が間違って変更されたり失われたりするリスクが大幅に軽減される。
16
ado ファイルのインストール
ado ファイルをインストールするコマンド:ssc install ファイル名
Stata には,ado ファイルと呼ばれるユーザーが作成した拡張コマンドが多数公開されて
おり,それをインストールすることにより Stata 本体には実装されていない機能を用いる
ことができるようになる。
ado ファイルには,さまざまな不平等の測度を計算してくれるもの(inequal7)や,回帰
分析の結果を雑誌論文の形式で出力してくれるもの(outreg2)など便利なものが多くある。
ado ファイルをインストールすればヘルプも同時にインストールされるので,使い方はヘル
プでチェックする。
ado ファイルは,EconPapers にも登録されているので,検索してみよう。
. ssc install inequal7
checking inequal7 consistency and verifying not already installed...
installing into c:\ado\plus\...
installation complete.
. help inequal7
17
データの管理と要約
18
統計データについて
「i=1~N までの N 個の観測個体(時点)について,var_1~var_k まで k 個の変数の値
が記録されている」と表現することにする。
観測個体(時点)1~N までを指して,サンプルと呼ぶ。サンプルに含まれる観測個体(時
点)の数(N)のことを,観測数またはサンプル・サイズと呼ぶ。
横断面データと時系列データ
一時点において,複数の個体の状態を記録したデータを 横断面データ(クロス・セクシ
ョン・データ)という。 i(1~N の番号)は標本を識別するために,便宜上付したもので
あり,観測個体の順番を並べ替えたとしても本質的には問題がない。
一つの個体について,複数の時点の状態を記録したデータを時系列データ(タイム・シ
リーズ・データ)という。 横断面データと異なり,i (1~N の番号)の順序に意味がある
ため,順番をランダムに並べ替えることはできない。
複数の個体について,複数の時点での状態を記録したデータは,パネル・データと呼ば
れる。
Stata では,特に宣言しない限りデータはクロス・セクション・データとして扱われる。
時系列データやパネル・データを扱う際には,観測時点や観測個体を識別する変数を指定
しなければならない。
19
欠損値について
基本的に Stata では欠損値を
. (ピリオド)で表す。
また,欠損値を区別したい場合(たとえば,アンケートの「無回答」と「調査の対象外」
を区別したい場合など)には “.a”, “.b”, …
,
“.z” の 26 種類を追加的に用い
ることができる。
Stata では欠損値は「欠損値ではない数 < . < .a < .b < ... < .z」と扱われる。すなわち age
> 60 という式は,age が 60 よりも大きいか,もしくは欠損値となっている場合に真という
ことになる。
多くのデータでは,
“9”が並んだ数値を欠損値として定めている。たとえば,年齢が“999”
となっている場合,その観測個体の年齢は 999 歳ではなく欠損値である。Stata に読み込ん
だときに,欠損値がそのままの“9”の並んだ数値として扱われることを避けるため,ピリ
オドに置き換えておくようにする。
. mvencode age, mv(999)
age=999 の場合,欠損値 “.” に置き換える
20
条件式
条件
記号
A と等しい
var==A
A よりも大きい
var>A
A よりも小さい
var<A
A 以上
var=>A
A 以下
var=<A
A と等しくない
var!=A
A よりも大きいか,B よりも小さい(or)
var>A | var<B
“|”は shift キーを押しながら“¥”キーで入力
A よりも大きくて B よりも小さい(and)
var>A & var<B
21
新しい変数の作成
新しい変数を定義するコマンド:gen 新しい変数名=式
変数の内容を置き換えるコマンド:replace 変数名=式
変数を削除するコマンド:drop 変数名
変数名を変更するコマンド:rename var 新しい変数名
既存の変数や関数を用いて新しい変数を定義(計算)することができる。利用できる関
数についての詳細は,“help functions”参照。
. gen wageph=wage/hour
. gen lwage=ln(wageph)
(### missing values generated)
欠損値が生じる場合はメッセージが出る
(この場合は,賃金がゼロの観測個体については,対数賃金が計算できないので欠損値となる)
. gen lwage=ln(wage)
lwage already defined
r(110);
すでに定義されている変数を gen コマンドで再度定義しようとするとエラーとなる
→replace コマンドを用いる
. replace lwage=ln(wage)
22
スカラー
スカラーに値を代入するコマンド:scalar スカラー名=式
スカラーの値を表示するコマンド:display スカラー名
スカラーのリストを表示するコマンド:scalar list
. scalar a=5
. display a
5
. scalar b=ln(a)
. scalar list
b = 1.6094379
a =
5
スカラーはデータ・セットに保存されないので注意。
23
サンプルの限定
条件を満たす観測個体を削除するコマンド:drop
if 条件式
条件を満たす観測個体以外を削除するコマンド:keep if 条件式
. drop if wage==0
賃金がゼロの観測個体を削除
(### observations deleted)
. keep if hour>=35
労働時間が 35 時間以上の観測個体だけを残す
(### observations deleted)
Stata では,一度削除した変数や標本は元に戻すことはできないので,データ・セットの
原本に上書き保存しないように注意。
また,サンプルの一部を削除しなくても,コマンドのあとに if オプションを付けること
により条件を満たすサンプルを対象にコマンドが実行される。
24
記述統計量の計算
記述統計量を求めるコマンド:summarize 変数名 (, detail)
記述統計量(観測数,平均,標準偏差,最小値,最大値)を求めるには,summarize コ
マンドを用いる。detail オプションをつけると,分位点,分散,尖度,歪度があわせて計算
される。summarize コマンドは“sum”と省略することができる。また,複数の変数を指定
することが可能。
. sum wage educ
Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------wage |
526
5.896103
3.693086
.53
24.98
educ |
526
12.56274
2.769022
0
18
. sum wage ,detail
wage
------------------------------------------------------------Percentiles
Smallest
1%
1.67
.53
5%
2.75
1.43
10%
2.92
1.5
Obs
526
25%
3.33
1.5
Sum of Wgt.
526
50%
4.65
75%
90%
95%
99%
6.88
10
13
20
Largest
21.86
22.2
22.86
24.98
Mean
Std. Dev.
5.896103
3.693086
Variance
Skewness
Kurtosis
13.63888
2.007325
7.970083
25
コマンドの戻り値
コマンドの実行結果は,Resultウィンドウやログに出力されるだけでなく,メモリにも
保存される。直前に実行したコマンドで保存された結果(スカラー,行列)のリストを表
示させるにはreturn listコマンドを用いる 1。
. sum wage
Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------wage |
526
5.896103
3.693086
.53
24.98
. return list
scalars:
r(N)
r(sum_w)
r(mean)
r(Var)
r(sd)
r(min)
r(max)
r(sum)
=
=
=
=
=
=
=
=
526
526
5.896102674787035
13.63888436377501
3.693086021713413
.5299999713897705
24.97999954223633
3101.350006937981
. scalar averagewage=r(mean)
次のコマンドを実行すると結果が書き換えられてしまうのでスカラーを定義して実行結果
(平均賃金)を保存
1
回帰式の推定などで保存された結果のリストを表示するときには,ereturn list を用いる。
26
度数分布表・クロス表の作成
度数分布を求めるコマンド:tabulate 変数名
クロス集計を行うコマンド:tabulate 変数名 1 変数名 2
度数分布を求めるには tabulate コマンドを用いる。2 変数のクロス集計を行う際にも
tabulate コマンドが用いられる。 tabulate コマンドは,“tab”と省略することができる。
. tab numdep
度数分布表
number of |
dependents |
Freq.
Percent
Cum.
------------+----------------------------------0 |
252
47.91
47.91
1 |
105
19.96
67.87
2 |
99
18.82
86.69
3 |
45
8.56
95.25
4 |
16
3.04
98.29
5 |
7
1.33
99.62
6 |
2
0.38
100.00
------------+----------------------------------Total |
526
100.00
. tab nonwhite female
クロス集計表
=1 if |
=1 if female
nonwhite |
0
1 |
Total
-----------+----------------------+---------0 |
245
227 |
472
1 |
29
25 |
54
-----------+----------------------+---------Total |
274
252 |
526
連続変量の場合は,tabulate コマンドを実行しても,あまり意味のある結果は得られな
い。 そこで,階級に分類してから度数分布表やクロス集計表を作成する。
recode コマンドを用いれば,連続変量を階級分類することができる。たとえば,
gen lwagecls=recode(lwage,1,2,3)
を実行すると,lwage による右の表のような
階級分類が行われ,新しい階級分類の変数
lwagecls が作成される。
27
lwage
lwagecls
lwage ≦ 1
1
1<lwage ≦ 2
2
2<lwage ≦ 3
3
. tab lwage
log(wage) |
Freq.
Percent
Cum.
------------+-----------------------------------.6348783 |
1
0.19
0.19
.3576744 |
1
0.19
0.38
.4054651 |
2
0.38
0.76
.48858 |
1
0.19
0.95
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
3.100092 |
1
0.19
99.62
3.129389 |
1
0.19
99.81
3.218076 |
1
0.19
100.00
------------+----------------------------------Total |
526
100.00
連続変量の場合はそのまま tab コマンドを用いてもあまり意味がない
. gen lwagecls=recode(lwage,1,2,3)
. tab lwagecls
lwagecls |
Freq.
Percent
Cum.
------------+----------------------------------1 |
26
4.94
4.94
2 |
376
71.48
76.43
3 |
124
23.57
100.00
------------+----------------------------------Total |
526
100.00
通常の度数分布表
28
より自由度の高い集計
要約統計表を作成するコマンド:table 変数名 ,contents(リスト)
クロス集計を行うコマンド:table 変数名 1 変数名 2, contents(リスト)
表示される内容を詳細に指定して集計表を作成することができる。表示内容を指定する
には,contents()オプションを使う。()内には表示させたい内容を指定する。
. table nonwhite,contents(freq mean wage)
---------------------------------=1 if
|
nonwhite |
Freq. mean(wage)
----------+----------------------0 |
472
5.9
1 |
54
5.5
. table nonwhite female,contents(freq mean wage sd wage)
-----------------------------=1 if
|
=1 if female
nonwhite |
0
1
----------+------------------0 |
245
227
|
7.2
4.6
| 4.221021 2.589199
|
1 |
29
25
|
6.5
4.2
| 3.630215 1.907482
contents として指定できるもの:
freq: 観測個数
mean var: var の平均
sd var:
var の標準偏差
など
詳細は,help table
29
ヒストグラムの作成
ヒストグラムを描くコマンド:histogram 変数名
histogram コマンドは,ヒストグラムを描きたい変数だけを指定すれば,階級の分け方な
どは Stata が最適なものを選んでヒストグラムを作成してくれる。自分で細かい部分を指
定したい場合には,メニューの[Graphics]>[Histogram]から行えばよい。
0
.2
Density
.4
.6
.8
. histogram lwage
(bin=22, start=-.63487834, width=.17513427)
-1
0
1
log(wage)
30
2
3
カーネル密度推定
カーネル密度推定を行うコマンド:kdensity 変数名
ヒストグラム同様,カーネル密度推定を行いたい変数だけ指定すれば,バンド幅などは
Stata が最適なものを選んでくれる(カーネルには Epanechnikov が用いられる)。自分で
詳細を指定したい場合は,メニューの[Graphics]>[Smoothing and densities]>[Kernel
density estimation] から行えばよい。
. kdensity lwage
0
.2
Density
.4
.6
.8
Kernel density estimate
-1
0
1
log(wage)
kernel = epanechnikov, bandwidth = 0.1366
31
2
3
相関マトリクス・散布図・散布図マトリクス
相関行列を求めるコマンド:corr 変数名 1 変数名 2…
散布図を描くコマンド:scatter 変数名 1 変数名 2
散布図マトリクスを描くコマンド:graph matrix 変数名 1 変数名 2…
. corr wage educ exper tenure
(obs=526)
|
wage
educ
exper tenure
-------------+-----------------------------------wage | 1.0000
educ | 0.4059 1.0000
exper | 0.1129 -0.2995 1.0000
tenure | 0.3469 -0.0562 0.4993 1.0000
. scatter wage educ
. graph matrix wage educ exper tenure
0
10
0
20
20
40
25
30
average hourly earnings
10
15
20
average
hourly
earnings
20
10
0
20
years
of
education
10
0
60
5
years
potential
experience
40
20
0
40
0
years
with
current
employer
0
5
10
years of education
15
20
20
0
0
10
20
30
0
20
40
60
散布図には回帰直線を追加したり複数のグラフを重ね合わせたりすることも可能なので,
メニューの[Graphics]>[Twoway graph]からいろいろ試してみるとよい。
散布図マトリクスの詳細な設定は,メニューの[Graphics]>[Scatterplot matrix]から行え
ばよい。
32
ウェイトの使い方
度数分布表などの集計データを用いる場合や,個票データ
貯蓄階級
でも抽出確率に基づくウェイトが公表されている場合には, 100万円 未 満
記述統計を計算する際にウェイトを用いる必要がある。
Stata では,ほとんどのコマンドで,ウェイトとして使う
変数を指定することができる。集計の際によく用いられるウ
ェイトは fweight(frequency weight)で,その観測値がウ
ェイトの数だけ存在しているとして集計される。
たとえば,右の表は 2009 年家計調査から,貯蓄階級別の
世帯数および平均貯蓄額を抜粋したものである。
ここから,貯蓄額の平均や標準偏差などを計算するために
は,世帯数をウェイトとして用いる。左下の表のように
Stata にデータを入力して,計算を行う際には[fweight=n]
100 ~
200
200 ~
300
300 ~
400
400 ~
500
500 ~
600
600 ~
700
700 ~
800
800 ~
900
900 ~
1000
1000 ~
1200
1200 ~
1400
1400 ~
1600
1600 ~
1800
1800 ~
2000
2000 ~
2500
2500 ~
3000
3000 ~
4000
4,000万円 以 上
世帯数
貯蓄額(万円)
1,066
28
610
143
566
239
521
342
516
444
444
541
419
642
367
744
369
841
341
948
625
1,084
469
1,288
378
1,493
329
1,687
299
1,893
620
2,219
451
2,728
612
3,430
995
6,658
を指定すればよい。
. sum saving[fweight=n],d
saving
------------------------------------------------------------Percentiles
Smallest
1%
28
28
5%
28
143
10%
28
239
Obs
9997
25%
342
342
Sum of Wgt.
9997
50%
75%
90%
95%
99%
948
2219
3430
6658
6658
33
Largest
2219
2728
3430
6658
Mean
Std. Dev.
1637.733
1912.118
Variance
Skewness
Kurtosis
3656195
1.694311
4.906109
不平等度の計算
不平等度を計算するコマンド(ado ファイル):inequal7 変数名
inequal7 は,不平等に関するジニ係数やタイル尺度などの代表的な測度を計算してくれ
る ado ファイル。
インストールしなければ使えないので,”ssc install inequal7”
細は「ado ファイルのインストール」参照)。
. inequal7 saving[fweight=n]
----------------------------------------------------Inequality measures |
saving
-----------------------------------------+----------Relative mean deviation |
0.42979
Coefficient of variation |
1.16754
Standard deviation of logs |
1.51649
Gini coefficient |
0.56878
Mehran measure |
0.73999
Piesch measure |
0.48318
Kakwani measure |
0.27361
Theil index (GE(a), a = 1) |
0.56318
Mean Log Deviation (GE(a), a = 0) |
0.80982
Entropy index (GE(a), a = -1) |
3.79833
Half (Coeff.Var. squared) (GE(a), a = 2) |
0.68151
-----------------------------------------------------
34
でインストールする(詳
ローレンツ曲線の描画
ローレンツ曲線を描く ado ファイル:glcurve 変数, lorenz pvar(新しい変数名 1) glvar(新
しい変数名 2)
ローレンツ曲線を描くためには,ado ファイル glcurve を用いる。新しい変数名 1,2 が作
成され,累積世帯比率および累積所得比率が格納される。
グラフも描かれるが,描画の自由度はあまり高くないので,累積世帯比率および累積所
得比率の計算結果だけを用いて,グラフは Excel など他のソフトで描いた方がよい。
0
.2
Lorenz (saving)
.4
.6
.8
1
. glcurve saving[fweight=n],lorenz pvar(x) glvar(y)
new variable y created
new variable x created
0
35
.2
.4
.6
Cumulative population proportion
.8
1
時系列データ 2
2
時系列データの取り扱いに関する詳細は,“help dates_and_times”,
“help tsset”で,
Stata のヘルプを参照すること。
36
時系列データの宣言
データを時系列として認識させるコマンド:tsset 時間変数名
(, 時系列の頻度)
Stata で時系列データを扱うには,まずデータが時系列データであることを Stata に認識
させる必要がある。その際,時間を表す変数と,時系列の頻度を指定する。
時系列の頻度
日次データ
: ,daily
月次データ
: ,monthly
四半期データ: ,quarterly
年次データ
: ,yearly
年次データの場合は,4 桁の西暦年が記録された変数を,時間変数として指定すればよい。
たとえば,year という変数に,1975,1976,1977,…,2005 と記録されていれば,
. tsset year, yearly
time variable: year, 1975 to 2005
delta: 1 year
四半期データの場合は,
“0”が 1960 年の第一四半期として扱われる。たとえば,quarter
という変数に,0、1,2,3,…,11 と記録されていれば,
. tsset quarter, quarterly
time variable: var1, 1960q1 to 1962q4
delta: 1 quarter
1960 年第一四半期から,1962 年第四四半期までのデータとして認識される
同様に月次データの場合は“0”が 1960 年 1 月,日次データの場合は“0”が 1960 年 1
月 1 日を表す。
なお,1960 年よりも前の日付は負の値で表す。
37
時間変数の作成 1(文字列からの変換)
文字列で記録された日付を,時間を表す変数に変換するには date( ) 関数を用いる。たと
えば,date_str という変数に文字列として“2005/4/1”,“2005/4/2”,…というように記録
されている日次データの場合には,
. gen date=date(date_str, "YMD")
“YMD”は date_str に年/月/日と記録されていることを表す。月次データであれば“YM”。
. tsset date, daily
time variable: date, 01apr2005 to 30apr2005
delta: 1 day
のようにすればよい。
四半期データの場合は,quarterl( ) 関数を用
いる。たとえば,qtr_str という変数に文字列と
して“1975q1”,“1975q2”,…というように記
録されている四半期データの場合は,
. gen date=quarterly(qtr_str,"Yq")
. tsset date, quarterly
time variable: date, 1975q1 to 1976q4
delta: 1 quarter
38
時間変数の作成 2(複数の変数によって時間が記録されている場合)
たとえば,y という変数に年が,m という変数に月が記録されている場合,y と m の二
変数から時間変数を作り出すには,ym ( y , m ) 関数を用いる。
. gen date=ym(y,m)
. tsset date,monthly
time variable: date, 1990m1 to 1995m12
delta: 1 month
同様に,日次データの場合には mdy(m,d,y),四半期データの場合には yq(y,q) 関数を用
いる。
39
分析期間の限定
時間を表す変数から,年や月,日だけを取り出したい場合には,year( ) 関数,month( ) 関
数,day( ) 関数を用いる。
たとえば,2005 年 4 月の平均株価を求めたいときには,
. sum stock_price if year(date)==2005 & month(date)==4
もしくは,
. sum stock_price if date>=16527&date<=16556
2005 年 4 月 1 日は date=16527,4 月 30 日は date=16556
. sum stock_price if date>=date("2005/4/1", "YMD") & date<=date("2005/4/30", "YMD")
date 関数を用いる
40
オペレータ
オペレータ
意味
例
Ln.
n 期前の値
l.x
(1 は省略可)
x(t-1)
l2.x
x(t-2)
Fn.
n 期先の値
f.x
x(t+1)
Dn.
n 階の階差
d2.x
[x(t)-x(t-1)]-[x(t-1)-x(t-2)]
41
計量経済モデル
42
線形回帰モデルの推定
OLS による線形回帰モデルの推定を行うコマンド:
reg 従属変数
独立変数 1 独立変数 2 …
SSE
SSR
. reg lwage educ exper tenure
Source |
SS
SST
df
MS
Number of obs =
-------------+-----------------------------Model | 46.8741776
3 15.6247259
Residual | 101.455574
522 .194359337
F( 3,
-------------+-----------------------------Total | 148.329751
525
522) =
526
80.39
Prob > F
= 0.0000
R-squared
= 0.3160
Adj R-squared = 0.3121
.28253286
Root MSE
観測数
F 値,p 値
決定係数
自由度修正済み
決定係数
= .44086
推定値
標準誤差
t値
p値
95%信頼区間
-----------------------------------------------------------------------------従属変数
lwage |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+----------------------------------------------------------------
独立変数
定数項
educ |
.092029
.0073299
12.56
0.000
.0776292
.1064288
exper |
.0041211
.0017233
2.39
0.017
.0007357
.0075065
tenure |
.0220672
.0030936
7.13
0.000
.0159897
.0281448
_cons |
.2843595
.1041904
2.73
0.007
.0796756
.4890435
------------------------------------------------------------------------------
画面に表示されないものを含めた統計量などの一覧は ereturn list コマンドで表示できる。
43
予測値,残差の保存
新しい変数を作成して従属変数の予測値を保存するコマンド:
predict 予測値を保存する新しい変数名
新しい変数を作成して残差を保存するコマンド:
predict 残差を保存する新しい変数名, residual
predict コマンドは,reg コマンドを実行した直後に実行する(直前に推定したモデルに
関する予測値,残差が保存される)
。
. reg lwage educ exper tenure
Source |
SS
df
MS
-------------+-----------------------------Model | 46.8741776
3 15.6247259
Residual | 101.455574 522 .194359337
-------------+-----------------------------Total | 148.329751 525 .28253286
Number of obs
F( 3, 522)
Prob > F
R-squared
Adj R-squared
Root MSE
=
=
=
=
=
=
526
80.39
0.0000
0.3160
0.3121
.44086
-----------------------------------------------------------------------------lwage |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+---------------------------------------------------------------educ |
.092029
.0073299
12.56 0.000
.0776292
.1064288
exper | .0041211
.0017233
2.39 0.017
.0007357
.0075065
tenure | .0220672
.0030936
7.13 0.000
.0159897
.0281448
_cons | .2843595
.1041904
2.73 0.007
.0796756
.4890435
-----------------------------------------------------------------------------. predict yhat
(option xb assumed; fitted values)
. predict uhat, residual
. browse lwage educ ecper tenure yhat uhat
44
線形制約の検定
線形制約の検定を行うコマンド:
test (制約 1) (制約 2) …
test コマンドは,reg コマンドを実行した直後に実行する(直前に推定したモデルに関す
る検定結果が表示される)。
ゼロ制約の検定(係数がゼロという帰無仮説の検定)の場合は,制約として変数名だけ
記述すればよい(括弧も不要)。それ以外の場合は,下の具体例を参照。
. reg lwage educ exper tenure まず,モデルを推定する
Source |
SS
df
MS
-------------+-----------------------------Model | 46.8741776
3 15.6247259
Residual | 101.455574 522 .194359337
-------------+-----------------------------Total | 148.329751 525 .28253286
Number of obs
F( 3, 522)
Prob > F
R-squared
Adj R-squared
Root MSE
=
=
=
=
=
=
526
80.39
0.0000
0.3160
0.3121
.44086
-----------------------------------------------------------------------------lwage |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+---------------------------------------------------------------educ |
.092029
.0073299
12.56 0.000
.0776292
.1064288
exper | .0041211
.0017233
2.39 0.017
.0007357
.0075065
tenure | .0220672
.0030936
7.13 0.000
.0159897
.0281448
_cons | .2843595
.1041904
2.73 0.007
.0796756
.4890435
------------------------------------------------------------------------------
. test lasses lasses の係数がゼロであるかの検定(通常は t 検定)
( 1) lassess = 0
F( 1,
83) =
Prob > F =
47.44
0.0000
. test llotsize lsqrft bdrms
llotsize, lsqrft. bdrms の係数が同時ゼロであるかの検定
( 1) llotsize = 0
( 2) lsqrft = 0
( 3) bdrms = 0
F( 3,
83) =
Prob > F =
0.87
0.4580
45
. test lassess=1
帰無仮説がゼロ以外の値の場合
( 1) lassess = 1
F( 1,
83) =
Prob > F =
0.08
0.7768
. test llotsize= lsqrft llotsize と lsqrft の係数が等しいという帰無仮説の検定
( 1) llotsize - lsqrft = 0
F( 1,
83) =
Prob > F =
0.75
0.3903
. test (lassess=1) (llotsize) (lsqrft) (bdrms)
lassess の係数が 1 で,llotsize,lsqrft,bdrms の係数がすべてゼロという帰無仮説の検定
( 1) lassess = 1
( 2) llotsize = 0
( 3) lsqrft = 0
( 4) bdrms = 0
F( 4,
83) =
Prob > F =
0.67
0.6162
46
ダミー変数
たとえば region という変数に,本州=1,北海道=2,四国=3,九州・沖縄=4 という分類
が記録されているとする。このような質的な変数について,ダミー変数を用いた分析を行
うときには,i.を変数名の前につければよい(ダミー変数は作成されない)。
. sum i.region
Variable
|
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------region |
2 |
47
.0212766
.145865
0
1
3 |
47
.0851064
.2820567
0
1
4 |
47
.1914894
.3977271
0
1
. reg econ_growth inv pop_growth i.region 独立変数に 3 つの region ダミーを用いる
(結果省略)
コマンドの前に xi: をつけると,ダミー変数が作成される。その際,基準となるカテゴリ
を指定するには,char コマンドを用いる:
char 変数名[omit] 基準となる値
. char region[omit] 4 region=4 を基準カテゴリとする
. xi: sum i.region
region=4 を基準として region=1,2,3 のダミー変数を作成し,記述統計を求める
i.region
_Iregion_1-4
(naturally coded; _Iregion_4 omitted)
Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------_Iregion_1 |
47
.7021277
.4622673
0
1
_Iregion_2 |
47
.0212766
.145865
0
1
_Iregion_3 |
47
.0851064
.2820567
0
1
47
頑健な標準誤差
不均一分散に対して頑健(White robust)な標準誤差を計算するには,regress コマンド
に,robust オプションを用いる。robust オプションを用いて回帰を行った後 test コマンド
を実行すれば,不均一分散に対して頑健な検定統計量(Wald 統計量)に基づく検定が行わ
れる。
. reg lwage educ exper expersq tenure tenursq nonwhite female married,robust
Linear regression
Number of obs
F( 8, 517)
Prob > F
R-squared
Root MSE
=
526
= 50.09
= 0.0000
= 0.4428
= .39983
-----------------------------------------------------------------------------|
Robust
lwage |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+---------------------------------------------------------------educ | .0789037
.0076092
10.37 0.000
.0639549
.0938525
exper | .0270363
.0051894
5.21 0.000
.0168414
.0372311
expersq | -.0005418
.0001083
-5.00 0.000
-.0007546
-.000329
tenure | .0314485
.0072229
4.35 0.000
.0172587
.0456383
tenursq | -.0005796
.0002615
-2.22 0.027
-.0010933 -.0000659
nonwhite | -.0256928
.0614652
-0.42 0.676
-.1464452
.0950595
female | -.2905919
.0366557
-7.93 0.000
-.3626043 -.2185795
married | .0515622
.0414365
1.24 0.214
-.0298424
.1329669
_cons | .4237199
.1078502
3.93 0.000
.2118414
.6355984
-----------------------------------------------------------------------------. test tenure tenursq
( 1) tenure = 0
( 2) tenursq = 0
F( 2,
517) =
Prob > F =
15.61
0.0000
48
不均一分散の検定(Breush-Pagan 検定)
不均一分散の検定を行うコマンド:estat hettest(,rhs iid fstat)
. reg price lotsize sqrft bdrms
Source |
SS
df
MS
-------------+-----------------------------Model | 617130.701
3 205710.234
Residual | 300723.805
84 3580.0453
-------------+-----------------------------Total | 917854.506
87 10550.0518
Number of obs
F( 3,
84)
Prob > F
R-squared
Adj R-squared
Root MSE
=
=
=
=
=
=
88
57.46
0.0000
0.6724
0.6607
59.833
-----------------------------------------------------------------------------price |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+---------------------------------------------------------------lotsize | .0020677
.0006421
3.22 0.002
.0007908
.0033446
sqrft | .1227782
.0132374
9.28 0.000
.0964541
.1491022
bdrms | 13.85252
9.010145
1.54 0.128
-4.065141
31.77018
_cons | -21.77031
29.47504
-0.74 0.462
-80.38466
36.84405
-----------------------------------------------------------------------------estat コマンドは,必ずモデルを推定した直後に実行する
. estat hettest,rhs iid
Wooldridge の教科書と同じ検定を行うには,rhs と iid オプショ
ンを付ける
Breusch-Pagan / Cook-Weisberg test for heteroskedasticity
Ho: Constant variance
Variables: lotsize sqrft bdrms
chi2(3)
=
Prob > chi2 =
14.09
0.0028
49
不均一分散の検定(White 検定の例)
. reg lprice llotsize lsqrft bdrms
Source |
SS
df
MS
-------------+-----------------------------Model | 5.15504028
3 1.71834676
Residual | 2.86256324
84 .034078134
-------------+-----------------------------Total | 8.01760352
87 .092156362
Number of obs
F( 3,
84)
Prob > F
R-squared
Adj R-squared
Root MSE
=
88
= 50.42
= 0.0000
= 0.6430
= 0.6302
= .1846
-----------------------------------------------------------------------------lprice |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+---------------------------------------------------------------llotsize | .1679667
.0382812
4.39 0.000
.0918404
.244093
lsqrft | .7002324
.0928652
7.54 0.000
.5155597
.8849051
bdrms | .0369584
.0275313
1.34 0.183
-.0177906
.0917074
_cons | -1.297042
.6512836
-1.99 0.050
-2.592191
-.001893
-----------------------------------------------------------------------------. predict yhat
(option xb assumed; fitted values)
. gen yhatsq=yhat^2
. predict uhat,residual
. gen uhatsq=uhat^2
. reg uhatsq yhat yhatsq
Source |
SS
df
MS
-------------+-----------------------------Model | .018463986
2 .009231993
Residual | .452873375
85 .005327922
-------------+-----------------------------Total | .471337362
87 .005417671
Number of obs
F( 2,
85)
Prob > F
R-squared
Adj R-squared
Root MSE
=
=
=
=
=
=
88
1.73
0.1830
0.0392
0.0166
.07299
-----------------------------------------------------------------------------uhatsq |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+---------------------------------------------------------------yhat | -1.709221
1.163334
-1.47 0.145
-4.022241
.6037986
yhatsq | .1451354
.1009925
1.44 0.154
-.0556647
.3459354
_cons | 5.046839
3.345002
1.51 0.135
-1.603921
11.6976
LM 統計量:0.0392×88=3.45 (P 値は 0.178)
50
加重最小二乗法(WLS)
加重最小二乗法を行う reg コマンドのオプション:
[aweight=ウェイトとして用いる変数名]
. keep if fsize==1
. gen weight=1/inc
. reg nettfa inc[aweight=weight]
(sum of wgt is 8.7566e+01)
Source |
SS
df
MS
-------------+-----------------------------Model | 184535.798
1 184535.798
Residual | 2419034.48 2015 1200.51339
-------------+-----------------------------Total | 2603570.28 2016 1291.45351
Number of obs
F( 1, 2015)
Prob > F
R-squared
Adj R-squared
Root MSE
=
=
=
=
=
=
2017
153.71
0.0000
0.0709
0.0704
34.648
-----------------------------------------------------------------------------nettfa |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+---------------------------------------------------------------inc | .7870523
.0634814
12.40 0.000
.6625562
.9115484
_cons | -9.580702
1.653284
-5.79 0.000
-12.82303 -6.338378
------------------------------------------------------------------------------
データ:401ksub.dta
51
Feasible GLS の推定例
. reg cigs lincome lcigpric educ age agesq restaurn
Source |
SS
df
MS
-------------+-----------------------------Model | 8003.02506
6 1333.83751
Residual | 143750.658 800 179.688322
-------------+-----------------------------Total | 151753.683 806 188.280003
Number of obs
F( 6, 800)
Prob > F
R-squared
Adj R-squared
Root MSE
=
=
=
=
=
=
807
7.42
0.0000
0.0527
0.0456
13.405
-----------------------------------------------------------------------------cigs |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+---------------------------------------------------------------lincome | .8802682
.7277832
1.21 0.227
-.548322
2.308858
lcigpric | -.7508586
5.773343
-0.13 0.897
-12.08355
10.58183
educ | -.5014982
.1670772
-3.00 0.003
-.8294597 -.1735368
age | .7706936
.1601223
4.81 0.000
.456384
1.085003
agesq | -.0090228
.001743
-5.18 0.000
-.0124443 -.0056013
restaurn | -2.825085
1.111794
-2.54 0.011
-5.007462 -.6427078
_cons | -3.639841
24.07866
-0.15 0.880
-50.90466
43.62497
-----------------------------------------------------------------------------. estat hettest ,rhs iid
不均一分散の検定(BP 検定)
Breusch-Pagan / Cook-Weisberg test for heteroskedasticity
Ho: Constant variance
Variables: lincome lcigpric educ age agesq restaurn
chi2(6)
=
Prob > chi2 =
. predict uhat ,residual
. gen uhatsq=uhat^2
. gen luhatsq=ln(uhatsq)
32.26
0.0000
均一分散を棄却
残差を uhat に保存
残差の二乗を uhatsq に保存
残差の二乗の対数を luhatsq に保存
. reg luhatsq lincome lcigpric educ age agesq restaurn, quietly
quietly オプションを付けると,画面に結果は表示されない
. predict ghat
(対数をとった)分散の予測値を ghat に保存
(option xb assumed; fitted values)
. gen hhat=exp(ghat) 分散の推定値を hhat に保存
52
. reg cigs lincome lcigpric educ age agesq restaurn [aweight=1/hhat]
(sum of wgt is 1.9977e+01) 推定された分散構造を用いて WLS
Source |
SS
df
MS
-------------+-----------------------------Model | 10302.6461
6 1717.10768
Residual | 80542.1581 800 100.677698
-------------+-----------------------------Total | 90844.8042 806 112.710675
Number of obs
F( 6, 800)
Prob > F
R-squared
Adj R-squared
Root MSE
=
=
=
=
=
=
807
17.06
0.0000
0.1134
0.1068
10.034
-----------------------------------------------------------------------------cigs |
Coef.
Std. Err.
t
P>|t|
[95% Conf. Interval]
-------------+---------------------------------------------------------------lincome |
1.29524
.4370118
2.96 0.003
.4374148
2.153065
lcigpric | -2.940312
4.460144
-0.66 0.510
-11.69528
5.814656
educ | -.4634463
.1201587
-3.86 0.000
-.6993098 -.2275828
age | .4819479
.0968082
4.98 0.000
.2919197
.671976
agesq | -.0056272
.0009395
-5.99 0.000
-.0074713 -.0037831
restaurn | -3.461064
.795505
-4.35 0.000
-5.022588 -1.899541
_cons | 5.635461
17.80314
0.32 0.752
-29.31092
40.58184
------------------------------------------------------------------------------
53