Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3...
Transcript of Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3...
BR001
Stata 11 コマンド解説書
【基盤機能編】推定の基本
Stataの中核をなす機能は回帰推定に関わる機能です。本解説書では
• 回帰推定に関する基本的事項• Stata11で機能が刷新された因子変数の概念と用法
• 線形回帰、ロジスティック回帰に関するコマンドの用法• プログラミング機能• サーベイデータの扱い
等、幅広い基本的事項をカバーしました。
目 次
コマンド whitepaperタイトル ページ mwp番号
− 推定機能 3 mwp-027
− 因子変数 22 mwp-028
− 日付/時間情報の入力 40 mwp-001
logistic/logit 機能概要と用例 50 mwp-039
logistic/logit postestimation機能 60 mwp-040
margins マージン分析機能 74 mwp-029
regress 機能概要と用例 90 mwp-037
regress postestimation機能 108 mwp-038
− プログラミング機能 120 mwp-078
− サーベイデータの扱い 131 mwp-079
本解説書は StataCorp社の許諾のもとに作成したものです。
c⃝ 2011 Math工房
一部 c⃝ 2011 StataCorp LP
Math工房 web: www.math-koubou.jp
email: [email protected]
Stata11 whitepapers
mwp-027
推定機能
Stata には regress, logistic, xtreg, stcox といった数多くの推定コマンドが用意されています。それ
ら推定コマンドの集合体に若干の補足機能を加えたものが Stata の実体であると言っても過言ではあり
ません。一方、これらの推定コマンドには例外なく postestimation 機能が付帯しています。実際マニュ
アル上には regress とか logistic といったエントリとは別に、regress postestimation や logistic
postestimationといったエントリが用意されており、多数のページが割かれていることが確認できると思い
ます。本 whitepaper では推定、及び postestimation 機能全般に関する基本的な事項について解説を行いま
す。個々の推定コマンド、個々の postestimation機能に関する情報については個別の whitepaper、またはマ
ニュアルエントリをご参照ください。
1. eクラスコマンド
2. 係数の参照
3. predictコマンド
4. estatコマンド
5. 推定結果の保存と回復
5.1 メモリ上への退避/回復
5.2 ディスク上への保存/回復
6. testコマンド
7. vceオプション
8. 重み付き推定
8.1 fweight
8.2 aweight
8.3 pweight
1. eクラスコマンド
Stataのコマンドは summarize等の一般的な rクラスコマンドと推定機能を司る eクラスコマンドの 2群に
区分されます*1。この区分はコマンドの実行結果が格納される領域の種類や構造に依存したものであるわけで
すが、試しに線形回帰用の regressコマンドを例に取ってその内容を覗いてみましょう。まず Exampleデー
タセット auto.dtaをロードします。
c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)*1 細かく言えばこの他に sクラス、nクラスといった区分があります。
3
Stata11 whitepapers
. sysuse auto.dta *2
(1978 Automobile Data)
このデータセット中には 1978年に米国で販売された 74車種のデータが収納されていますが、ここでは走行燃
費性能を表す mpg (miles per gallon) を車重 weightと国産/非国産の区分を表す指標変数 foreignとによっ
て説明する線形回帰モデルをフィットさせてみます。
. regress mpg weight foreign *3
_cons 41.6797 2.165547 19.25 0.000 37.36172 45.99768 foreign 1.650029 1.075994 1.53 0.130 3.7955 .4954422 weight .0065879 .0006371 10.34 0.000 .0078583 .0053175
mpg Coef. Std. Err. t P>|t| [95% Conf. Interval]
Total 2443.45946 73 33.4720474 Root MSE = 3.4071 Adj Rsquared = 0.6532
Residual 824.171761 71 11.608053 Rsquared = 0.6627 Model 1619.2877 2 809.643849 Prob > F = 0.0000
F( 2, 71) = 69.75Source SS df MS Number of obs = 74
. regress mpg weight foreign
foreign に対する p 値が 0.130 と 0.05 よりも大きいため、説明変数としての有意性には疑問がありますが
(実際、95% CIの中に値 0が含まれており、係数値が 0である可能性が否定できないことが示されています)、
ここでは目をつぶって先に進むことにします。フィットされたモデル式は次のように記述できます。
mpg = β0 + β1 · weight + β2 · foreign= 41.68 − 0.0066 · weight− 1.65 · foreign (1)
この regressコマンドの実行結果は e()という領域中に格納されています。一応その内容を確認しておきま
しょう。
. ereturn list
e(rank) = 3e(ll_0) = 234.3943376482347
e(ll) = 194.1830643938065e(r2_a) = .6532015851691599e(rss) = 824.1717612920727e(mss) = 1619.287698167387
e(rmse) = 3.407059285651584e(r2) = .6627029116028815e(F) = 69.74846262000308
e(df_r) = 71e(df_m) = 2
e(N) = 74scalars:
. ereturn list
*2 メニュー操作: File ◃ Example datasets ◃ Example datasets installed with Stata と操作しダウンロードする。*3 メニュー操作: Statistics ◃ Linear models and related ◃ Linear regression
4
Stata11 whitepapers
e(sample)functions:
e(V) : 3 x 3 e(b) : 1 x 3matrices:
e(estat_cmd) : "regress_estat" e(model) : "ols" e(predict) : "regres_p" e(properties) : "b V" e(cmd) : "regress" e(depvar) : "mpg" e(vce) : "ols" e(marginsok) : "XB default" e(title) : "Linear regression" e(cmdline) : "regress mpg weight foreign"macros:
コマンドからの出力量が多い場合に —more— と表示されて出力が中断されることがあります。
この表示をクリックすれば残りの部分の出力が行えるわけですが、set more off とコマンド入力
しておけば出力の中断は回避できます。
rクラスコマンドの出力内容は return list コマンドによって確認できます。
Stata環境でプログラミングを行う場合を除くと e()領域の内容を直接意識することは余りありませんが、例
えば推定結果である係数ベクトル β は e(b)の中に格納されています。
. matrix list e(b)
y1 .00658789 1.6500291 41.679702 weight foreign _conse(b)[1,3]
また e(V)の中には推定された分散共分散行列の値が格納されています。
. matrix list e(V)
_cons .00134646 1.5713159 4.6895946foreign .0004064 1.1577633 weight 4.059e07 weight foreign _conssymmetric e(V)[3,3]
Postestimation機能として区分されるコマンド群はこれら e()領域中に格納されている情報に基づき処理を
行います。
5
Stata11 whitepapers
2. 係数の参照
係数の推定値 β0, β1, β2 が得られると (1)式に示されるようなモデル式を使って mpgの値を算出することがで
きます。その場合でも e(b)といった行列(ベクトル)を直接参照する必要はありません。 b[]というシステ
ム変数を用いることによって係数値を参照することができます(システム変数については [U] 13.4 System
variables を参照ください)。
. generate mpghat1 = b[ cons] + b[weight]*weight + b[foreign]*foreign *4
b[ cons]によって β0 を、 b[weight]によって β1 を、 b[foreign]によって β2 を参照したことになりま
す。この generateコマンドによりモデル式 (1)の値が算出され、その結果が新変数 mpghat1中に格納され
ます*5。先頭の 5台の車種について変数値を出力してみましょう。
. list make weight foreign mpg mpghat1 in 1/5, nolabel *6
5. Buick Electra 4,080 0 15 14.80113 4. Buick Century 3,250 0 20 20.26907 3. AMC Spirit 2,640 0 22 24.28768 2. AMC Pacer 3,350 0 17 19.61028 1. AMC Concord 2,930 0 22 22.3772
make weight foreign mpg mpghat1
変数 mpgの値は実測値であるのに対し、変数 mpghat1の値はフィットされた線形のモデル式によって計算さ
れた値であるわけです。
複数の回帰式を含むモデルの場合、係数を参照するには [eqno] b[varname] という構文を用い
ます。
3. predictコマンド
セクション 2 では係数参照という少々ベーシックな方法を用いて予測値 mpg を算出したわけですが、
postestimationコマンドの代表格である predictコマンドを使用すれば苦もなく予測値を算出することがで
きます。
• Statistics ◃ Postestimation ◃ Predictions, residuals, etc. と操作
• Mainタブ: New variable name: mpghat2
Produce: Linear prediction (xb) (デフォルト)
*4 メニュー操作: Data ◃ Create or change data ◃ Create new variable*5 weightとか foreignといった変数の実体はベクトルである点に注意してください。このベクトル演算操作により 74台分の mpg
推定値が算出されます。*6 メニュー操作:Data ◃ Describe data ◃ List data
6
Stata11 whitepapers
図 1 predictダイアログ - regress実行後
. predict mpghat2, xb
predictによって生成された新変数 mpghat2の内容を確認しておきます。
. list make weight foreign mpg mpghat1 mpghat2 in 1/5, nolabel
5. Buick Electra 4,080 0 15 14.80113 14.80113 4. Buick Century 3,250 0 20 20.26907 20.26907 3. AMC Spirit 2,640 0 22 24.28768 24.28768 2. AMC Pacer 3,350 0 17 19.61028 19.61028 1. AMC Concord 2,930 0 22 22.3772 22.3772
make weight foreign mpg mpghat1 mpghat2
セクション 2で算出した mpghat1の値と一致していることがわかると思います。
7
Stata11 whitepapers
predictコマンドは名前からすると予測値の計算に特化したコマンドという印象を与えますが、図 1に示さ
れているように、モデル式に基づく様々な統計指標を算出する機能を備えています。予測値の計算は一部の機
能であるに過ぎません。機能詳細については [R] regress postestimation (mwp-038 ) をご参照ください。
ここで敢えて [R] predict と書かなかった点に注意してください。もちろん [R] predict というマニュア
ルエントリもありますが、そこには推定コマンドに依存しない共通的な事項が記述されているに過ぎません。
predictの機能は直前に実行された推定コマンドの種類によって大きく変ってきます。このため regress実
行後の predict機能については [R] regress postestimation というマニュアルエントリを確認する必要
があるわけです。
参考までに logisticコマンドを実行した後の predictダイアログを次に掲載しておきます。
図 2 predictダイアログ - logistic実行後
図 1とは全く異なるダイアログ構成であることが確認できると思います。この場合の predict機能について
は [R] logistic postestimation (mwp-040 ) を参照する形となります。
8
Stata11 whitepapers
4. estatコマンド
評価版では割愛しています。
5. 推定結果の保存と回復
評価版では割愛しています。
6. testコマンド
評価版では割愛しています。
7. vceオプション
評価版では割愛しています。
8. 重み付き推定
評価版では割愛しています。
¥
9
Stata11 whitepapers
mwp-037
regress - 機能概要と用例
regressは線形回帰モデルのフィットを行います。
1. 結果の解釈
1.1 シミュレーションモデル
1.2 良好なフィット
1.3 小標本時のフィット
2. ベータ係数
3. 定数項の抑止
4. 重み付き回帰
5. ロバスト推定
補足1
1. 結果の解釈
regressは回帰分析系のコマンドの中で最も頻繁に使用されるコマンドです。このコマンドを実行すると例
えば次のような推定結果が得られます。
_cons 41.6797 2.165547 19.25 0.000 37.36172 45.99768 foreign 1.650029 1.075994 1.53 0.130 3.7955 .4954422 weight .0065879 .0006371 10.34 0.000 .0078583 .0053175
mpg Coef. Std. Err. t P>|t| [95% Conf. Interval]
Total 2443.45946 73 33.4720474 Root MSE = 3.4071 Adj Rsquared = 0.6532
Residual 824.171761 71 11.608053 Rsquared = 0.6627 Model 1619.2877 2 809.643849 Prob > F = 0.0000
F( 2, 71) = 69.75Source SS df MS Number of obs = 74
. regress mpg weight foreign
c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)
10
Stata11 whitepapers
ここに示した結果は Stataの Exampleデータセット auto.dtaに対し
mpg = β0 + β1 · weight + β2 · foreign + ϵ
という線形モデルをフィットさせたときの出力を示しています。Stataのマニュアルを見ればコマンドの使い
方は細かくわかるわけですが、残念ながら得られた結果をどう解釈・評価したら良いかに関する記述は十分で
はありません。結果の評価は使用するデータやモデルに深く依存するため、一般的に言えることは表面的な側
面に限られてしまうという事情があるからです。
ここではやや変則的なアプローチですが、人為的に用意されたデータを用いてモデルフィットを行い、十分な
サンプルがある場合とそうでない場合とでフィット結果がどう変化するかを見てみることにします。regress
のアウトプットを評価する上でどこに注意しなくてはならないかは、このプロセスによって自ずと明白になる
ものと期待されます。
1.1 シミュレーションモデル
データセット regress1.dtaには 1,000件のデータが含まれています。
use http://www.math-koubou.jp/stata/data11/regress1.dta
先頭の 5個のデータをリスト出力しておくと次のようになります。
. list in 1/5 *1
5. 16.8 45 8 3 4. 11.6 26 2 3 3. 36.2 73 9 6 2. 35.8 54 7 10 1. 25.4 49 3 3
y x1 x2 x3
この変数 y の値は
. generate y = 0.5*x1 + 2*x2 - 10 + rnormal(0, 10)
のような形で変数 x1 と x2 の値をベースに生成したものです。rnormal(m, s)というのは正規分布に従う乱
数発生関数であり、mは平均値を、sは標準偏差を意味します([D] functions 参照)。すなわち
y = 0.5x1 + 2.0x2 − 10 (1)
という線形の関係を基調に据えて乱数を発生させているわけです。なお、データセット中には x1, x2 とは全く
無関係の変数 x3 も含めてあります。y に対する線形フィットを実行するに際し、説明変数に x3 も加えたとき
にどのような現象が生ずるかを確認するためです。
*1 メニュー操作: Data ◃ Describe data ◃ List data
11
Stata11 whitepapers
1.2 良好なフィット
まずデータが 1,000件ある状態で regressコマンドを実行してみます。
• Statistics ◃ Linear models and related ◃ Linear regression と操作
• Modelタブ: Dependent variable: y
Independent variables: x1 x2 x3
図 1 regressダイアログ - Modelタブ
_cons 8.906289 1.697041 5.25 0.000 12.23647 5.576103 x3 .0072188 .1083894 0.07 0.947 .205479 .2199165 x2 1.974713 .1090362 18.11 0.000 1.760746 2.18868 x1 .476147 .0303301 15.70 0.000 .4166288 .5356652
y Coef. Std. Err. t P>|t| [95% Conf. Interval]
Total 160820.539 999 160.98152 Root MSE = 9.8954 Adj Rsquared = 0.3917
Residual 97526.2879 996 97.9179598 Rsquared = 0.3936 Model 63294.2507 3 21098.0836 Prob > F = 0.0000
F( 3, 996) = 215.47Source SS df MS Number of obs = 1000
. regress y x1 x2 x3
(1) 診断プロット
regressの出力結果に関する考察を始める前に、フィットの状況を視覚化しておきましょう。これが単回帰で
あれば散布図とフィット直線の組合せで視覚化は容易に行えるのですが、重回帰の場合にはそのような直接的
なアプローチは取れません。n(n ≥ 3)次元空間中における平面のフィット状況を何らかの形で 2次元のグラ
フに焼き直す必要があるわけですが、ここでは rvfplotコマンドを用いてグラフ化を行ってみます。
12
Stata11 whitepapers
. rvfplot, yline(0) *2
モデルをフィットさせると、それぞれの観測点 (x1i, x2i, . . .)ごとにモデルによる推定値 yi が算出されます。
その場合、実際の観測値 yi との差 yi − yi が残差となるわけですが、rvfplot (residual-versus-fitted plot)
はこの残差の値をフィット値 yi に対向させる形でプロットしたものです。標準偏差 10の正規分布を前提に乱
数を発生させているために、それなりにバラツキを持った分布となっていることがわかります。
(2) 決定係数 R2
それでは regressのアウトプットについて見て行くことにしましょう。regress出力の上半分には ANOVA
表が掲載されています。これは変数 y の変動(バラツキ)に関する情報を集約したもので、SSは平方和 (sum
of squares) を意味します。ここで yi(i = 1, . . . , n)の平均値を y、最小 2乗法による yi の推定値を yi と書く
ことにしたとき、y の変動は ∑(yi − y)2 =
∑(yi − yi)2 +
∑(yi − y)2 (2)
のように分解することができます。今、∑(yi − y)2 を TSS (total sum of squares)∑(yi − y)2 をMSS (model sum of squares)∑(yi − yi)2 を RSS (residual sum of squares)
と書くことにすれば、上の例の場合、TSSは 160820.539、MSSは 63294.2507、RSSは 97526.2879という
ことになります。
*2 メニュー操作: Statistics ◃ Linear models and related ◃ Regression diagnostics ◃ Residual-versus-fitted plot
13
Stata11 whitepapers
モデルフィットの良し悪しを判断する上で良く用いられる決定係数 (coefficient of determination) は
R2 =MSSTSS
= 1 − RSSTSS
(3)
として定義されます。上の例では 63294.2507/160820.539 = 0.3936 となるわけですが、この値は ANOVA
表の右側に R-squaredとしてレポートされています。すなわち全変動のうち 39%がフィットされたモデルに
よって表現されたことをこの数値は示しているわけです。
(3) モデル全体に対する p値
R-squared という出力の 1 つ上に p 値が Prob > F という形で示されています。これは分散分析 (ANOVA:
analysis of variance) の結果に基づく F 検定の結果を示しているわけですが、その場合の帰無仮説 H0 は
H0 : β1 = β2 = · · · = 0
とするものです(β0 は含まれません)。全く無意味な説明変数を設定しない限り、この帰無仮説は棄却される
のが普通です。
(4) 係数推定値
ANOVA表の下には係数表が示されています。Coef. (coefficients) と書かれた列に係数の推定値が示されて
いるわけですが、ここでの例の場合、
β1 = 0.48 β2 = 1.97 β3 = 0.01 β0 = −8.91
という結果が得られています。背景にあるモデル式 (1)と比べて十分良好な点推定値が得られていることがわ
かります。
(5) 係数に対する p値
それぞれの係数推定値に対しても p 値が示されています。その場合の帰無仮説は βj = 0 とするもので、そ
れに対する t 検定の結果が p 値として示されているわけです。ここで特筆すべきは変数 x3 に対する p 値が
0.947となっている点です。すなわち β3 = 0という帰無仮説が全く棄却できないことをこれは示しています。
実際、β3 に関する 95% 信頼区間(CI: confidence interval) は [−0.21, 0.22]とレポートされており、0とい
う値がその中に含まれている点に注意してください。変数 x3 は有意ではないと判断せざるを得ません。
これに対し変数 x1, x2、及び定数項の場合、p値はそれらの係数値が 0とは言えないと主張しているだけなの
で、regressが出力してきた p値は余り参考にはならないでしょう。もし仮に理論モデル等により x1 の係数
値としては 0.5が予想されるとしたとき、postestimation機能の 1つである testコマンドを使用すればその
仮説を次のようにして検定することができます。
• Statistics ◃ Postestimation ◃ Tests ◃ Test linear hypotheses と操作
• Mainタブ: Test type for specification 1: Linear expressions are equal
Specification 1, linear expression: x1 = 0.5
14
Stata11 whitepapers
図 2 testダイアログ - Mainタブ
Prob > F = 0.4318 F( 1, 996) = 0.62
( 1) x1 = .5
. test (x1 = 0.5)
(6) 標準誤差
Coef.の隣には標準誤差 (standard error) の値が Std. Err.として示されています。標準誤差とは標本平均の
標準偏差 (standard deviation) を意味するもので、信頼区間を規定する上での重要な統計量であると言えま
す。実際、変数 x1 の場合について与えられた標準誤差の値から 95% CIを算出してみましょう。残差の自由
度 (degrees of freedom) が 996とレポートされていることに注意して t分布の逆関数
invttail(n, p)を使用すると([D] functions 参照)、
. display invttail(996, 0.025) *3
1.9623486
という値が求められます。これが 95% の面積に対応した棄却限界値 (critical value) であるわけですから、信
頼区間は点推定値と標準誤差の値から
. display 0.476147 - 1.9623486*0.0303301
.41662877
. display 0.476147 + 1.9623486*0.0303301
.53566523
のように算出することができるわけです。係数表において x1 に対する 95% CIは [0.4166288, 0.5356652]と
レポートされているわけですが、その内容がこれによって検証できたことになります。
*3 メニュー操作: Data ◃ Other utilities ◃ Hand calculator
15
Stata11 whitepapers
いずれにせよ、得られた係数推定値の信頼度はこれら標準誤差と信頼区間の値から判断することになります。
ここでの例の場合、x1, x2 に対する信頼区間は十分狭いものとなっていますが、定数項についてはやや幅の
広いものとなっています。データ生成のプロセスを勘案するなら、これ以上は期待できないことは明らかで
しょう。
1.3 小標本時のフィット
セクション 1.2では 1,000件のデータに対してフィットを行いましたが、今度は標本サイズを 1/10に減らし
て同じ操作を行ってみます。この resamplingにはランダムなプロセスが伴うため、ここでは再現性を期して
最初に seedの設定を行います。繰り返すごとに異なる結果が出ても構わないということであれば seedの設定
は不要です。
. set seed 111 *4
次にランダムに 100件のデータを抽出します。
. sample 100, count *5
(900 observations deleted)
これでメモリ上のデータは 100件のみとなったわけです。この状態で regressを実行してみます。
. regress y x1 x2 x3
_cons 12.28143 6.422559 1.91 0.059 25.03011 .4672456 x3 .1063396 .3448411 0.31 0.758 .7908438 .5781646 x2 1.565079 .3726188 4.20 0.000 .8254362 2.304721 x1 .583658 .1117937 5.22 0.000 .3617492 .8055668
y Coef. Std. Err. t P>|t| [95% Conf. Interval]
Total 15850.8101 99 160.109193 Root MSE = 10.554 Adj Rsquared = 0.3043
Residual 10693.3387 96 111.388945 Rsquared = 0.3254 Model 5157.47143 3 1719.15714 Prob > F = 0.0000
F( 3, 96) = 15.43Source SS df MS Number of obs = 100
. regress y x1 x2 x3
R2 値にはそれほど大きな変化はありません。また今回も変数 x3 は有意ではないと判定されています。一方、
係数の推定値は微妙に変化していますが、その要因は標準誤差の値がセクション 1.2の場合に比べて 3 ∼ 4倍
に増えている点にあります。結果的に信頼区間の幅がそれだけ広くなってしまっています。例えば x1 の係数
値としては 0.37とか 0.8といった値も有意水準 5% では否定できないことになります。実際、testコマンド
を用いて検定を行ってみましょう。
*4 [R] set seed 参照*5 メニュー操作: Statistics ◃ Resampling ◃ Draw random sample
16
Stata11 whitepapers
. test (x1 = 0.37)
Prob > F = 0.0590 F( 1, 96) = 3.65
( 1) x1 = .37
. test (x1 = 0.37)
. test (x1 = 0.8)
Prob > F = 0.0559 F( 1, 96) = 3.74
( 1) x1 = .8
. test (x1 = 0.8)
共に p値が 0.05よりも大きいため、仮説を棄却することはできないわけです。
有意水準 (significance level) としては 5%という値がデフォルトとして仮定されますが、それは
Reportingタブ上の Confidence levelの設定によって調整できます(図 3参照)。
2. ベータ係数
今度は Stataの Exampleデータセット auto.dtaを用いて線形回帰モデルのフィットを行ってみます。
. sysuse auto.dta *6
(1978 Automobile Data)
このデータセット中には 1978年に米国で販売された 74車種のデータが収納されていますが、ここでは走行
燃費性能を表す mpg (miles per gallon) を車重 weightとその 2乗 weight2 とによって説明する線形回帰モ
デルを考えます。2乗項については交互作用演算子を用いて c.weight#c.weightと記述する方法もあります
が(mwp-028 参照)、ここでは従来通り、新たな変数を生成するアプローチで対応することにします。
. generate weightsq = weight^2 *7
まずデータの内容を確認しておきます。
*6 メニュー操作: File ◃ Example datasets ◃ Example datasets installed with Stata と操作しダウンロードする。*7 メニュー操作:Data ◃ Create or change data ◃ Create new variable
17
Stata11 whitepapers
. format weightsq %10.0g *8
. list mpg weight weightsq in 1/5 *9
5. 15 4,080 16646400 4. 20 3,250 10562500 3. 22 2,640 6969600 2. 17 3,350 11222500 1. 22 2,930 8584900
mpg weight weightsq
このデータの場合、説明変数の桁数に大きな違いがある点に注意する必要があります。あらかじめ weightの
単位を Kポンドにでもしておけば、その 2乗項も 2桁程度の数値でおさまり扱いやすくなるわけですが、こ
こでは敢えて現状のままフィットを行ってみます。
. regress mpg weight weightsq *10
_cons 51.18308 5.767884 8.87 0.000 39.68225 62.68392 weightsq 1.32e06 6.26e07 2.12 0.038 7.67e08 2.57e06 weight .0141581 .0038835 3.65 0.001 .0219016 .0064145
mpg Coef. Std. Err. t P>|t| [95% Conf. Interval]
Total 2443.45946 73 33.4720474 Root MSE = 3.3587 Adj Rsquared = 0.6630
Residual 800.937487 71 11.2808097 Rsquared = 0.6722 Model 1642.52197 2 821.260986 Prob > F = 0.0000
F( 2, 71) = 72.80Source SS df MS Number of obs = 74
. regress mpg weight weightsq
この場合、mpg = −1.42e-2 · weight + 1.32e-6 · weight2 + 51.18
というモデル式が得られたわけです。係数値だけを見れば、mpg に対する影響の大きさは weight の方が
weight2 より 104 倍も大きいように見えるわけですが、これは正しい解釈とは言えません。weight2 の変数
値自体が 106 とか 107 といった大きな値を取るからです。
説明変数が及ぼす効果を相対的に比較・評価したいといった場合に良く利用されるのがベータ係数です。これ
はすべての変数値を規格化 (normalize)、すなわち平均が 0、標準偏差が 1となるように標準化した上で求め
た係数値であり、被説明変数に対する効果を相対的に比較する上で有用な尺度であると言えます。このベータ
係数は betaオプションを指定することで算出することができます。
*8 メニュー操作: Variablesウィンドウ内で weightsqを右クリック、Format ’weightsq’を選択*9 メニュー操作: Data ◃ Describe data ◃ List data
*10 メニュー操作: Statistics ◃ Linear models and related ◃ Linear regression
18
Stata11 whitepapers
• regressダイアログ: Reportingタブ: Standardized beta coefficients: X
図 3 regressダイアログ - Reportingタブ
_cons 51.18308 5.767884 8.87 0.000 . weightsq 1.32e06 6.26e07 2.12 0.038 1.104148 weight .0141581 .0038835 3.65 0.001 1.901918
mpg Coef. Std. Err. t P>|t| Beta
Total 2443.45946 73 33.4720474 Root MSE = 3.3587 Adj Rsquared = 0.6630
Residual 800.937487 71 11.2808097 Rsquared = 0.6722 Model 1642.52197 2 821.260986 Prob > F = 0.0000
F( 2, 71) = 72.80Source SS df MS Number of obs = 74
. regress mpg weight weightsq, beta
beta オプションが指定された場合には信頼区間に関する情報に代ってベータ係数の推定値が出力されます。
ここでの例で言えば、weightの効果は weight2 の効果の約 1.7倍であることがわかります。
ベータ係数が意味を持つのは連続変数の場合に限られます。
19
Stata11 whitepapers
3. 定数項の抑止
引続き同じ auto.dtaを使用しますが、今度は車重 weightを車長 lengthの線形関数として表現したいとし
ます。この場合、特別な指定を行わなければ定数項 β0(切片)を含んだ形のモデル式がフィットされます。す
なわち length= 0のときに β0 という重量の残るモデルとなるわけです。これに対し β0 = 0、すなわち原点
を通る直線をフィットさせたいという場合には noconstantオプションを指定します。
• Statistics ◃ Linear models and related ◃ Linear regression と操作
• Modelタブ: Dependent variable: weight
Independent variables: length
Suppress constant term: X
length 16.29829 .2774752 58.74 0.000 15.74528 16.8513
weight Coef. Std. Err. t P>|t| [95% Conf. Interval]
Total 718762200 74 9713002.7 Root MSE = 451.68 Adj Rsquared = 0.9790
Residual 14892897.8 73 204012.299 Rsquared = 0.9793 Model 703869302 1 703869302 Prob > F = 0.0000
F( 1, 73) = 3450.13Source SS df MS Number of obs = 74
. regress weight length, noconstant
車長が 1インチ増加するごとに車重は 16.3ポンド増加するというモデル式が誘導されたことになります。
4. 重み付き回帰
本セクションでは Exampleデータセット census9.dtaを使用することにします。
. use http://www.stata-press.com/data/r11/census9, clear *11
(1980 Census data by state)
このデータセット中には米国における 1980年国勢調査の結果が州別に記録されています。次に示すのは先頭
5州のデータです。
*11 メニュー操作:File ◃ Example Datasets ◃ Stata 11 manual datasets と操作、Base Reference Manual [R] の regress の項よりダウンロードする。
20
Stata11 whitepapers
. list state drate pop medage region in 1/5, nolabel *12
5. California 79 23,667,902 29.90 4 4. Arkansas 99 2,286,435 30.60 3 3. Arizona 78 2,718,215 29.20 4 2. Alaska 40 401,851 26.10 4 1. Alabama 91 3,893,888 29.30 3
state drate pop medage region
ここでは死亡率 (drate) のデータを州別の年齢中央値 (medage) と地域区分 (region) とによって説明し
ようとする線形回帰モデルをフィットさせます。ただし region はカテゴリ変数であり、Northeast, North
Central, South, Westという米国内地域区分がそれぞれ 1, 2, 3, 4というコードによって表現されています。
このフィットに際して注意すべきは、drateも medageも共に平均化された値であるという点です。そのため
州の人口を表す変数 popを重みとして用いた形のフィットがより適切であると判断されます。その際、重み
の選択には注意を払う必要があります(mwp-027 参照)。
図 4 regressダイアログ - Weightsタブ
今の場合、Analytic weightsが正しい選択です。間違えて Frequency weightsを選択した場合、例えばAlabama
州であれば州人口の 3, 893, 888人すべてが 29.3才という扱いとなってしまうので、極めて奇妙な結果が導か
れてしまう結果となります。
*12 変数 regionには値ラベルが設定されていますが、ここでは数値コードを表示させています。
21
Stata11 whitepapers
• Statistics ◃ Linear models and related ◃ Linear regression と操作
• Modelタブ: Dependent variable: drate
Independent variables: medage i.region *13
• Weightsタブ: Analytic weights: pop
_cons 39.14727 17.23613 2.27 0.028 73.86262 4.431915
4 10.90629 2.681349 4.07 0.000 16.30681 5.505777 3 1.438452 2.320244 0.62 0.538 6.111663 3.234758 2 .3138738 2.456431 0.13 0.899 4.633632 5.26138 region
medage 4.283183 .5393329 7.94 0.000 3.196911 5.369455
drate Coef. Std. Err. t P>|t| [95% Conf. Interval]
Total 5335.01916 49 108.877942 Root MSE = 5.246 Adj Rsquared = 0.7472
Residual 1238.40987 45 27.5202192 Rsquared = 0.7679 Model 4096.6093 4 1024.15232 Prob > F = 0.0000
F( 4, 45) = 37.21 Source SS df MS Number of obs = 50
(sum of wgt is 2.2591e+08). regress drate medage i.region [aweight = pop]
コマンド構文上は [aweight = pop]という指定が追加されている点に注意してください。
5. ロバスト推定
特に何も指定しなかった場合、regressは最小 2乗法 (OLS: ordinary least squares) による回帰を実行しま
す。しかし OLSの場合には分散の均一性 (homoskedasticity) が一つの前提となっている点に注意する必要
があります。例えば Exampleデータセット auto.dtaに対して次のようなフィットを行ってみます。
. sysuse auto, clear
(1978 Automobile Data)
. replace weight = weight/1000 *14
*13 i.演算子については mwp-028 を参照。*14 メニュー操作: Data ◃ Create or change data ◃ Change contents of variable
適正な係数値を得るため、車重の単位をポンドから Kポンドに変更します。
22
Stata11 whitepapers
. regress mpg weight
_cons 39.44028 1.614003 24.44 0.000 36.22283 42.65774 weight 6.008687 .5178782 11.60 0.000 7.041058 4.976316
mpg Coef. Std. Err. t P>|t| [95% Conf. Interval]
Total 2443.45946 73 33.4720474 Root MSE = 3.4389 Adj Rsquared = 0.6467
Residual 851.469221 72 11.8259614 Rsquared = 0.6515 Model 1591.99024 1 1591.99024 Prob > F = 0.0000
F( 1, 72) = 134.62Source SS df MS Number of obs = 74
. regress mpg weight
このモデルは単回帰であるため、フィットの様子を直接視覚化することが可能です。
. twoway (scatter mpg weight) (lfit mpg weight), ytitle(mpg) *15
フィットされた直線周囲のデータ点のバラツキは余り均等とは言えないように見えます。この点は診断プロッ
トの 1つである rvpplot (residual-versus-predictor plot) を使うとより鮮明なものにできます。
. rvpplot weight, yline(0) *16
*15 メニュー操作: Graphics ◃ Twoway graph (scatter, line, etc.) 詳細については補足1を参照。*16 メニュー操作: Statistics ◃ Linear models and related ◃ Regression diagnostics ◃ Residual-versus-predictor plot
23
Stata11 whitepapers
rvpplotは残差を特定の説明変数(今の場合、weight)と対向させた形でプロットする機能を提供します。
この分散不均一性(heteroskedasticity) はフォーマルな検定によっても確かめることができます。
• Statistics ◃ Postestimation ◃ Reports and statistics と操作
• estatダイアログ: Reports and statistics: Tests for heteroskedasticity (hettest)
図 5 estatダイアログ
24
Stata11 whitepapers
Prob > chi2 = 0.0009 chi2(1) = 11.05
Variables: fitted values of mpg Ho: Constant varianceBreuschPagan / CookWeisberg test for heteroskedasticity
. estat hettest
estat hettestの出力に示されているように、均一な分散を仮定した帰無仮説H0 に対する p値が 0.0009で
すから、H0 は棄却せざるを得ないわけです。
このように今回設定したモデルについては分散の均一性が主張できないため、OLSの結果を疑ってかかる必
要がありそうです。OLSに代る推定法を選択するには regressダイアログの SE/Robustタブを利用します
(SEは標準誤差 (standard error) の略です)。
• Statistics ◃ Linear models and related ◃ Linear regression と操作
• Modelタブ: Dependent variable: mpg
Independent variables: weight
• SE/Robustタブ: Robust
図 6 regressダイアログ - SE/Robustタブ
25
Stata11 whitepapers
_cons 39.44028 1.98832 19.84 0.000 35.47664 43.40393 weight 6.008687 .5840839 10.29 0.000 7.173037 4.844337
mpg Coef. Std. Err. t P>|t| [95% Conf. Interval] Robust
Root MSE = 3.4389Rsquared = 0.6515Prob > F = 0.0000F( 1, 72) = 105.83
Linear regression Number of obs = 74
. regress mpg weight, vce(robust)
vce(robust)オプションを指定した場合には分散不均一性を許容する推定法が用いられます。OLSの場合と
比べ点推定値に変化は生じませんが、標準誤差や信頼区間の推定値が変わってきます。たまたま今回の例では
次の表に見られるように 95% CIに大きな違いは見られませんでした。
OLS Robust
weight [−7.04, −4.98] [−7.17, −4.84]
cons [36.22, 42.66] [35.48, 43.40]
SE/Robustタブ上で Clustered robustを選択した場合には、グループ(クラスタ)内での相関を許
容した推定法が実行されます。
26
Stata11 whitepapers
補足1 – グラフ作成コマンド操作
セクション 5では散布図にフィット直線を重ね合わせる形でグラフを作成しましたが、その操作の詳細を記し
ておきます。
• Graphics ◃ Twoway graph (scatter, line, etc.) と操作
• Plotsタブ上で Createボタンをクリック、表示される Plot 1ダイアログ上で次の設定を行う。
◦ Choose a plot category and type: Basic plots (デフォルト)
◦ Basic plots: Scatter
◦ Y variable: mpg
◦ X variable: weight
• Plotsタブ上で再度 Createボタンをクリック、表示される Plot 2ダイアログ上で次の設定を行う。
◦ Choose a plot category and type: Fit plots
◦ Fit plots: Linear prediction (デフォルト)
◦ Y variable: mpg
◦ X variable: weight
• Y axisタブ: Title: mpg
. twoway (scatter mpg weight) (lfit mpg weight), ytitle(mpg)
¥
27