パネルデータ解析セミナー
慶應義塾大学
パネル調査共同研究拠点
2012 年9月10日~13日
本セミナーの目的
• 実際の分析への応用を視野に入れて
– 統計パッケージ (Stata) の利用法
– データセットの構築
• パネルデータの構築
• データクリーニング(無回答・非該当の処理)
• 変数の構築
– 実際の調査データを用いた分析演習
• 慶應義塾家計パネル調査 (KHPS)
• 目的に応じた適切な分析手法の選択
を扱います
セミナーの概要 (1)
• 統計パッケージStataの利用方法 (第1日)
– データセットの読み込み
– パネルデータの構築
– 変数の構築・記述統計・グラフィック
• クロスセクション分析 (第2日)
– 線形回帰モデル
– 質的従属変数モデル
– サンプル・セレクションモデル
3
セミナーの概要 (2)
• パネルデータ分析 (第3日)
– パネルデータ分析の特徴
– 固定効果モデル・変量効果モデル
– DID 法による政策評価
• イベント・ヒストリー分析 (第4日)
– 離散時間ロジットモデル
– Kaplan-Meier 法
– Cox の比例ハザードモデル
個票データ利用上の注意
• 本セミナーで利用するデータ
– 主要な質問項目に限定したKHPSデータ
– 変数のトップコーディング、居住都道府県の
秘匿化等の処理
• 個票データ利用上の注意
– 利用はセミナーにおけるデータ分析に限定
– 私的利用・コピーは不可
– セミナー終了時にデータは消去
5
データのダウンロード (1)
• 演習用データセット以外の資料に関して
は、
https://sites.google.com/site/pdrckeio
uni/
から、ダウンロード可能です
– 配布した講義資料のPDFファイル
– PowerPoint の講義資料
– 演習問題のプログラム
調査票およびコードブック
データのダウンロード (2)
• IE を立ち上げて、以下のURLを入力
http://stata.mita.itc.keio.ac.jp/seminar/ind
ex.html
講義で使用するデータ
– ダウンロードには以下の情報が必要です
• ユーザ名: pdrc
• パスワード: stata201209
– ダウンロードしたファイルは「マイドキュメ
ント」( Z ドライブ)に保存してください
7
Z フォルダへの保存
学外者用パソコン 学内者用パソコン
圧縮ファイルの解凍
• Z フォルダに保存したファイル「main.zip
」「completed.zip」「data.zip」はそれ
ぞれ圧縮ファイルなので、解凍しなけれ
ばならない。
• それぞれのフォルダを右クリック→「す
べて展開」→フォルダの指定を「Z:¥」に
変更→「展開」
9
配布資料
• ハンドアウト(印刷物・PDF)
• 演習用データセット
– KHPS の個票データ(2004~2009)
– 付属のデータセット
– コードブック(varlist_seminar.xls)
• 演習用プログラム
• KHPS 調査票
ファイルの保存場所
Zドライブ ━ main ┳ day1(1日目の作業フォルダ) ┃
┣ day2(2日目) ┃
┣ day3(3日目) ┃
┣ day4(4日目) ┃
┗ 演習用データセット
※ 保存場所が上記のフォルダ構成と異なる場合、適宜演習で用いるプ ログラムやコマンドを修正する必要があります
※ 三田ITCの環境では「マイドキュメント」がZドライブ
11
第1章 データの読み込み・確認・保存
パネルデータとは?
• 同一の経済主体について、2時点以上の
情報を持つデータ
– 個人・家計・企業・都道府県・国…
• 個別主体の「変化」を追うことが可能
• パネルデータ特有の計量経済学的な分析
手法も蓄積
1.1 Stata の起動
(1) Result ウィンドウ (3)
Review ウィンドウ
(4) Variables ウィンドウ
(2) Command ウィンドウ (5) メニュー
1.2 データの読み込み
• Stataで読み込み可能なデータファイルの形式は、3タイプ 1. Stataの標準ファイル形式(拡張子:.dta)
2. カンマ区切りのファイル形式(拡張子: .csv)
3. 固定長のファイル形式(例テキストファイル:.txt)
• 今回は、二番目のcsv形式のデータを読み込み、STATAの標準ファ イル形式dtaファイルを作っていく
• dtaファイルが読み込めるかどうか確認(例題1.1)
15
(2) Command ウィンドウに
use Z:¥main¥day1¥test04.dta
と入力して下さい
csv ファイルの読み込み
• insheetコマンドによるデータの読み込み(例題1.2)
1. Command ウインドウに
clear
を入力して、読み込み済みのデータを閉じる 2. Command ウインドウ上に下記命令を入力する
insheet using Z:¥main¥day1¥test04.csv
※ もしくは、最初にclearと入力せず、下記命令を入力する
insheet using Z:¥main¥day1¥test04.csv, clear
1.3 データ読み込み時の注意事項と工夫
(Stata12では必要ない)
• データサイズが大きいと、データが読み込めない場合がある
→メモリ量や変数の上限の設定を行う
• set memoryによるStataに割り当てるメモリ量の設定(例題1.3)
• 下線箇所(ここでは「mem」や「perm」)は、全体を入力しなく ても、下線部のみの形に省略可能であることを示す
• [ ]内は、必要に応じて省略してもコマンドが実行可能であることを 示す
• permを入れると、この設定を割り当てメモリのデフォルトの設定 にすることができる
17
ファイルサイズの上限を300メガバイトに設定
set memory 300m[, permanently]
1.3 データ読み込み時の注意事項と工夫
• set maxvarによるStataに読み込む変数の数の上限の設定(例題 1.4)
• 設定できる上限はStataのバージョンによって違う(SEとMPのみ)
変数の数の上限を3,000に設定
set maxvar 3000[, permanently]
Version Default Minimum Maximum
MP and SE 5000 2048 32767
IC 2048 2048 2048
Small 99 99 99
1.3.2 作業ディレクトリの指定
• 作業ディレクトリ(フォルダ)を指定することができる
• 同一のフォルダに、繰り返しデータの読み込みや結果の保存を行う ことが可能
• フルパスを指定する必要がなくなる
• 指定方法例
• この後に、以下のコマンドを続けると例題1.2の読み込みコマンド と同じことが実行される
19
cd Z:¥main¥day1
insheet using test04.csv
1.4 読み込んだデータを確認する
• データの内容を直接確認する – Browseボタン をクリック
– コマンドウィンドウに「browse」もしくは「br」と入力する
• Listコマンドによるデータの確認(例題1.6)
– listやsummarizeなどのコマンドの表示は5つ区切りで出てくる – エクセルファイルなどにコピーすると、区切り線までコピーさ
れてしまう
しかし、browseを使用するとそのまま貼り付けることができる
変数v1とv3の内容を直接resultウィンドウに表示させる
list v1 v3
表出結果を全て表示させる
set more off ⇔ set more on
ブラウズに変数v1とv3を表示させる
browse v1 v3
フォントの設定
• 日本語を見られるように設定する
– resultウィンドウを右クリック→「font」をクリック→日本語の フォント名(MSゴシックなど)を選択→文字セットを「日本語
」に指定
– resultウィンドウを右クリック→「preference」→「result
colors」タブの中の「Color scheme」を「Classic」に変更する
21
1.5 変数ラベルの作成と変数名の変更
• label variableコマンドによる変数ラベルの作成(例題1.10)
– variablesウィンドウでラベルが追加されたことを確認
• renameコマンドによる変数名の変更(例題1.11)
v6は、調査対象者の生年であるということが分かるようにラベルを作成
label variable v6 "生年"
v5に性別という変数ラベルをつける
label variable v5 "性別"
v5の1に「男性」、2に「女性」という値ラベルをつける
label define v5_ 1 "男性" 2 "女性" label values v5 v5_
v6は、調査対象者の生年であるということが分かるようにラベルを作成
rename v6 birthy
1.6 データの保存
• Saveコマンドによるデータの保存(例題1.12)
– コマンドを使わずに保存する方法:メニューから「file」→「Save(上書き保存
)」もしくは「Save as(名前を付けて保存)」
23
Zドライブのmainフォルダ内day1フォルダに、test04という名前でデー タを保存する
save test04.dta
既存のファイルに上書き保存する場合は、上記コマンド文に“, replace”を つける
save test04.dta, replace
1 つ前のバージョンで保存する場合は、“saveold”というコマンドを利用 する
saveold test04old.dta
1.7 do ファイル、logファイルの利用
• メニュー→「Window」→「Do-file Editor」→「New Do-file Editor」をクリック
• メニュー画面の を押すと「Do-file Editor」が出る
• Do-file Editorを日本語表記にする
– Do-file Editorのメニューバー→「Edit」→「Preferences」をクリック→「 Editor font」タブをクリック→日本語フォントを選択→適用
• テキスト8ページ、図1.2ファイルを入力する→test_varlistを参考 にする
図1.2 doファイルの具体例
25
do ファイルの実行
• Do-file Editorのメニューバーにある、 (Execute(do))をクリッ ク
• 実行させたい範囲を反転させて、 をクリックすると、実行させた い範囲のみ指定して実行させることができる
• Doファイルの保存は、メニューバー→「file」→「Save」もしくは
「Save as」をクリック(もしくは、 をクリック)
log ファイルの利用
• log ファイルの利用方法(例題1.14)
• log ファイルの表示は、メニューバー→「file」→「log
」→「view」→「browse」から選択
27
logファイルの作成
log using test.log logファイルの終了
log close
1.11 演習:データの読み込み・確認・保存
第2章 データの結合・変数の構築・加工
29
2.1 横方向へのデータの接続(変数の追加)
x1 x3 x4
1 1 1
2 1 2
(省略)
4004 1 2
4005 1 1
x1 pref_id
1 18
2 6
(省略)
4004 40
4005 23
test04.dta test_pref04.dta
接続
x1 x3 x4 pref_id
1 1 1 18
2 1 2 6
(省略)
4004 1 2 40
merge x1 using test04.dta
2.2 縦方向へのデータの接続(観測値の追加)
31
x1 x3 x4 x106
1 1 1 2
2 1 2 2
(省略)
4005 1 1 4
test04.dta
x1 x3 x4
1 2 1
2 2 2
(省略)
4005 2 1
test05.dta
x1 x3 x4 x106
1 1 1 2
2 1 2 2
(省略)
4005 1 1 4
1 2 1 .
2 2 2 .
(省略)
4005 2 1 .
接続
append test05.dta
補足 mergeコマンドの変更
• 1対1対応:例)idをキーとした接続
merge 1:1 varlist using filename
• 多対1対応:例)県コードをキーとした接続
merge m:1 varlist using filename
• 1 対多対応:
merge 1:m varlist using filename
補足 m:1と1:mの違い
• データセット
– Discharge.dta:個々時の入院先、入院期間 – Hospital.dta:各病院の病床数、医師数
33
患者ID 病院ID 入院日数
1 3 6
2 4 7
3 5 6
4 1 5
5 1 5
6 1 5
7 6 3
8 4 7
Discharge.dta
病院ID 病床数 医師数
1 102 32
2 43 13
3 136 42
4 30 9
5 47 15
6 205 64
Hospital.dta
HospID Num_bed Num_doc
1 102 32
2 43 13
3 136 42
4 30 9
5 47 15
6 205 64
patientID HospID period
1 3 6
2 4 7
3 5 6
4 1 5
5 1 5
6 1 5
7 6 3
8 4 7
補足 m:1 のケース
Hospital.dta Discharge.dta
接続
merge m:1 HospID using Discharge.dta
patientID HospID period Num_bed Num_doc
1 3 6 136 42
2 4 7 30 9
3 5 6 47 15
4 1 5 102 32
5 1 5 102 32
6 1 5 102 32
補足 1:m のケース
35
HospID Num_bed Num_doc
1 102 32
2 43 13
3 136 42
4 30 9
5 47 15
6 205 64
patientID HospID period
1 3 6
2 4 7
3 5 6
4 1 5
5 1 5
6 1 5
7 6 3
8 4 7
HospID Num_bed Num_doc patientID period
1 102 32 4 5
1 102 32 5 5
1 102 32 6 5
2 43 13 . .
3 136 42 1 6
4 30 9 2 7
4 30 9 8 7
5 47 15 3 6
6 205 64 7 3
Hospital.dta Discharge.dta
接続
merge m:1 HospID using Hospital.dta
演習2.3 パネルデータの構築
• HP からex2_3.doをダウンロードして使用
• ex2_3.do の最後に、「log close」と入力
2.4 データセットの加工と条件式
• 条件式の書き方(例題2.6)
37
• 等しいとき(==)(等号(=)を重ねて表します) replace x5=0 if x5==2
• 等しくないとき(!= もしくは~=)
replace x5=2 if x5~=1
• 大小関係(>, <, >=, <=)
– 変数old を作成し、x6 が1939 以下の場合1 とする gen old=1 if x6<=1939
• かつ(&)
– 変数stud を作り、x11 が2 以上7 以下なら1 とする
gen stud=1 if x11>=2 & x11<=7
• または(|)
– 変数uni を作り、x106 が4 または5 の場合1 とする
gen uni=1 if x106==4|x106==5
• “&”と“|”を併用する場合、カッコで囲まれた部分が最初に評価されます
– 変数smok を作り、x3 とx321 が両方とも1 の場合、または、x3 が2 でx321 が1 または2 の場合、1 とする
gen smok=1 if x3==1&x321==1)|(x3==2&(x321==1|x321==2))
2.5.3 繰り返し作業を簡略化する
• foreachコマンドによる繰り返し作業の簡略化(例題2.11)
• 「`」は、「SHIFTキー」+「@キー」を押すことで出る
• 「’」は、「SHIFTキー」+「7キー」を押すことで出る
foreach n of numlist 1 2{ sum x323 if x3=`n’
}
演習2.13 変数の作成
39
第3章 データの構築と記述統計量
演習3.1 最終学歴ダミー、就業形態ダミーを作成する
41
• HP からex3_1.doをダウンロードして、それを参考にプ
ログラムを作る
• ex3_1.do の最後に、「save KHPS_seminar.dta,
replace 」と入力
演習3.9 オプションを使ったヒストグラムの作成
• 解答例
.0661
.0353
.0253 .0209
.0156
.0117 .0117 .0085
.0033 .0015
0.02.04.06.08
Density
1 6 11 16 21 26 31 36 41 46 51
Current job tenure
Figure3-2
演習3.11 散布図の作成
• 解答例
43
02468
log(annual earnings)
0 20 40 60
Current job tenure
Job tenure and annual earnings