math工房 - br001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3...

27
BR001

Upload: others

Post on 20-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

BR001

Page 2: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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]

Page 3: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 4: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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 R­squared =  0.6532

Residual  824.171761    71   11.608053 R­squared     =  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

Page 5: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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.059e­07             weight     foreign       _conssymmetric e(V)[3,3]

Postestimation機能として区分されるコマンド群はこれら e()領域中に格納されている情報に基づき処理を

行います。

5

Page 6: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 7: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 8: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 9: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

Stata11 whitepapers

4. estatコマンド

評価版では割愛しています。

5. 推定結果の保存と回復

評価版では割愛しています。

6. testコマンド

評価版では割愛しています。

7. vceオプション

評価版では割愛しています。

8. 重み付き推定

評価版では割愛しています。

¥

9

Page 10: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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 R­squared =  0.6532

Residual  824.171761    71   11.608053 R­squared     =  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

Page 11: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 12: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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 R­squared =  0.3917

Residual  97526.2879   996  97.9179598 R­squared     =  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

Page 13: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 14: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 15: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 16: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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 R­squared =  0.3043

Residual  10693.3387    96  111.388945 R­squared     =  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

Page 17: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 18: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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.32e­06   6.26e­07     2.12   0.038     7.67e­08    2.57e­06      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 R­squared =  0.6630

Residual  800.937487    71  11.2808097 R­squared     =  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

Page 19: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

Stata11 whitepapers

• regressダイアログ: Reportingタブ: Standardized beta coefficients: X

図 3 regressダイアログ - Reportingタブ

       _cons    51.18308   5.767884     8.87   0.000                        .    weightsq    1.32e­06   6.26e­07     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 R­squared =  0.6630

Residual  800.937487    71  11.2808097 R­squared     =  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

Page 20: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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 R­squared =  0.9790

Residual  14892897.8    73  204012.299 R­squared     =  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

Page 21: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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

Page 22: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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 R­squared =  0.7472

Residual  1238.40987    45  27.5202192 R­squared     =  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

Page 23: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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 R­squared =  0.6467

Residual  851.469221    72  11.8259614 R­squared     =  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

Page 24: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

Stata11 whitepapers

rvpplotは残差を特定の説明変数(今の場合、weight)と対向させた形でプロットする機能を提供します。

この分散不均一性(heteroskedasticity) はフォーマルな検定によっても確かめることができます。

• Statistics ◃ Postestimation ◃ Reports and statistics と操作

• estatダイアログ: Reports and statistics: Tests for heteroskedasticity (hettest)

図 5 estatダイアログ

24

Page 25: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

Stata11 whitepapers

         Prob > chi2  =   0.0009         chi2(1)      =    11.05

         Variables: fitted values of mpg         Ho: Constant varianceBreusch­Pagan / Cook­Weisberg 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

Page 26: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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.4389R­squared     =  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

Page 27: Math工房 - BR001コマンド whitepaper タイトル ページ mwp 番号 − 推定機能 3 mwp-027 − 因子変数 22 mwp-028 − 日付/時間情報の入力 40 mwp-001 logistic/logit

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