経済統計分析のための 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
© Copyright 2024 Paperzz