ps001 - math工房 · 本解説書はstatacorp 社の許諾のもとに作成したものです。...
Post on 24-Dec-2019
0 Views
Preview:
TRANSCRIPT
PS001
Stata 11 コマンド解説書
【基盤機能編】
目 次
機能区分 コマンド whitepaperタイトル ページ mwp番号
一般 − 推定機能 4 mwp-027
− 因子変数 23 mwp-028
− 日付/時間情報の入力 41 mwp-001
− プログラミング機能 51 mwp-078
− サーベイデータの扱い 62 mwp-079
データ管理 functions 関数群 72 mwp-076
insheet スプレッドシートの読込み 89 mwp-030
recode コードの変換 94 mwp-033
reshape wide/long形式変換 100 mwp-036
推定機能 ivregress 操作変数法による回帰 110 mwp-082
logistic/logit ロジスティック回帰 127 mwp-039
logistic/logit 推定後機能 137 mwp-040
margins マージン分析機能 151 mwp-029
mlogit 多項ロジスティック回帰 167 mwp-090
ologit 順序ロジスティック回帰 184 mwp-088
poisson ポアソン回帰 199 mwp-087
regress 線形回帰 217 mwp-037
regress 推定後機能 235 mwp-038
検定機能 anova/oneway 分散分析 247 mwp-042
sdtest χ2 検定、F 検定 272 mwp-043
ttest t検定 279 mwp-041
テーブル作成 table 要約統計量のテーブル化 286 mwp-070
tabstat 要約統計量のテーブル化 294 mwp-071
tabulate 一元度数分布表 299 mwp-072
tabulate 二元度数分布表 305 mwp-073
本解説書は StataCorp社の許諾のもとに作成したものです。
c⃝ 2011 Math工房
一部 c⃝ 2011 StataCorp LP
Math工房 web: www.math-koubou.jp
email: master@math-koubou.jp
Stata11 whitepapers
mwp-076
functions - 関数群
Stataには数多くの関数が用意されており、generateコマンドや数式記述の中で利用されます。詳細は
[D] functions を参照いただくとして、ここでは代表的な関数に限定した形でその用法を紹介します。なお、
[D] egen (mwp-077 ) についても併せてご参照ください。
1. 乱数の発生
1.1 一様乱数
1.2 正規乱数
2. 数学関数
2.1 整数値への変換
2.2 Running sum
3. 統計分布関数
3.1 t検定の実行
3.2 t分布のグラフ化
3.3 面積の算出
3.4 限界値の算出
4. プログラミング関数
4.1 コード化関数
5. 文字列関数
6. 日付/時間関数
7. 行列操作関数
補足1
c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)
4
Stata11 whitepapers
1. 乱数の発生
統計解析を行う上で擬似乱数を発生させたいといったニーズが生ずる場合があります。Stataには種々の分布
に従って乱数を発生させる関数が用意されていますが、本セクションでは一様分布と正規分布のケースを例に
とってその用例を紹介します。詳細については [D] functions のセクション“Random-number functions”
をご参照ください。
1.1 一様乱数
関数 runiform() は [0, 1) 上で一様に分布する擬似乱数を発生させます。例えば観測データ (observations)
数を 10に設定した上で、変数 x1 中に一様乱数を発生させてみます。なお、repeatabilityを確保する意味で
最初に擬似乱数発生用の seedを設定しておきます。
. set obs 10
obs was 0, now 10
. set seed 2
. generate x1 = runiform() *1
. list *2
10. .409848 9. .3874338 8. .9104601 7. .1747266 6. .3360431
5. .518447 4. .6991696 3. .6303533 2. .0515642 1. .850512
x1
区間 [a, a + b)上での一様乱数を発生させたい場合には
a + b*runiform()
という数式を用いれば良いわけです。例えば区間 [10, 20)上での一様乱数を変数 x2 中に発生させるには次の
ように操作します。
*1 メニュー操作: Data ◃ Create or change data ◃ Create new variable*2 メニュー操作: Data ◃ Describe data ◃ List data
5
Stata11 whitepapers
. generate x2 = 10 + 10*runiform()
. list x2
10. 12.13104 9. 10.89719 8. 18.96779 7. 14.25147 6. 17.27702
5. 14.2031 4. 14.25097 3. 16.53234 2. 11.52971 1. 19.59647
x2
整数値が欲しい場合には数学関数 round()(四捨五入)、または floor()(切捨て)を使用します。
. generate x3 = round(x2)
. list x2 x3
10. 12.13104 12 9. 10.89719 11 8. 18.96779 19 7. 14.25147 14 6. 17.27702 17
5. 14.2031 14 4. 14.25097 14 3. 16.53234 17 2. 11.52971 12 1. 19.59647 20
x2 x3
この round()や floor()を runiform()と組み合わせて使用することもできます。
. generate x4 = round(10 + 10*runiform())
. list x4
10. 13 9. 18 8. 16 7. 15 6. 18
5. 15 4. 20 3. 20 2. 14 1. 16
x4
6
Stata11 whitepapers
1.2 正規乱数
評価版では割愛しています。
2. 数学関数
Stataには数多くの数学関数が用意されています。全体像については [D] functions のセクション“Mathe-
matical functions”を参照いただくとして、ここでは注意を要する事項についてのみ記載しておきます。
2.1 整数値への変換
実数値から整数値への変換という操作はしばしば必要となります。具体的には
◦ round() – 四捨五入
◦ floor() – 切捨て
◦ ceil() – 切上げ
といった関数が用いられるわけですが、これ以外に
◦ int() – 0方向への切捨て
という関数もあるので説明を補足しておきます。
(1) xが正の実数値の場合
round(x) floor(x) ceil(x) int(x)
x = 4.8 5 4 5 4
x = 5.2 5 5 6 5
この場合、int()の挙動は floor()と等しくなります。
(2) xが負の実数値の場合
round(x) floor(x) ceil(x) int(x)
x = −4.8 −5 −5 −4 −4
x = −5.2 −5 −6 −5 −5
この場合、int()の挙動は ceil()と等しくなります。
7
Stata11 whitepapers
2.2 Running sum
数学関数の中に sum()という関数がありますが、これは running sumを算出する機能を提供します。例えば
1, 2, . . . , 10という値を持つ変数 xを生成してみましょう。
. clear
. set obs 10
. generate x = n *3
この変数 xに対して running sumを計算すると次のようになります。
. generate y1 = sum(x)
. list
10. 10 55 9. 9 45 8. 8 36 7. 7 28 6. 6 21
5. 5 15 4. 4 10 3. 3 6 2. 2 3 1. 1 1
x y1
変数 y1 には∑i
j=1 xj (i = 1, 2, . . . , 10) という形の和がセットされていることがわかります。これに対して
egenの total()関数を使用すると総和の値∑10
j=1 xj が算出されます。
. egen y2 = total(x) *4
. list
10. 10 55 55 9. 9 45 55 8. 8 36 55 7. 7 28 55 6. 6 21 55
5. 5 15 55 4. 4 10 55 3. 3 6 55 2. 2 3 55 1. 1 1 55
x y1 y2
*3 nというシステム変数については [U] 13.4 System variables をご参照ください。*4 メニュー操作: Data ◃ Create or change data ◃ Create new variable (extended)
8
Stata11 whitepapers
3. 統計分布関数
Stataには各種統計分布に関連した関数が一式用意されています。具体的には正規分布とか二項分布といった
統計分布ごとに
◦ 確率密度関数◦ 累積分布関数◦ 逆関数
等の値を算出する関数が提供されています。詳細については [D] functions のセクション“Probability
distributions and density functions”をご参照ください。ここでは Studentの t分布を例にとってその用例を
紹介します。
3.1 t検定の実行
最初に Exampleデータセット fuel.dtaを用いて t検定を実行してみます。
. use http://www.stata-press.com/data/r11/fuel, clear *5
このデータセット中にはある燃料添加剤を加えたときと加えなかったときでの 1ガロン当りの走行距離が、12
台の車に関し wide形式で記録されています。変数 mpg1は燃料添加剤を加えなかったときのデータに、mpg2
は燃料添加剤を加えたときのデータに対応しています。
. list, separator(0)
12. 19 23 11. 23 21 10. 24 27 9. 20 24 8. 24 28 7. 18 17 6. 17 18 5. 18 23 4. 25 22 3. 21 21 2. 23 25 1. 20 24
mpg1 mpg2
ここで mpg1 = mpg2と言えるかどうかについて t検定を実行してみましょう。ただし有意水準はデフォルト
の 5%を用います。
*5 メニュー操作:File ◃ Example Datasets ◃ Stata 11 manual datasets と操作、Base Reference Manual [R] の ttest の項よりダウンロードする。
9
Stata11 whitepapers
. ttest mpg1 == mpg2 *6
Pr(T < t) = 0.0232 Pr(|T| > |t|) = 0.0463 Pr(T > t) = 0.9768Ha: mean(diff) < 0 Ha: mean(diff) != 0 Ha: mean(diff) > 0
Ho: mean(diff) = 0 degrees of freedom = 11 mean(diff) = mean(mpg1 mpg2) t = 2.2444
diff 12 1.75 .7797144 2.70101 3.46614 .0338602
mpg2 12 22.75 .9384465 3.250874 20.68449 24.81551 mpg1 12 21 .7881701 2.730301 19.26525 22.73475
Variable Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]
Paired t test
. ttest mpg1 == mpg2
この場合、mpg1と mpg2の間には 1.75の差があり、検定統計量である t値が −2.2444、自由度 11、両側検定
時の p値が 0.0463とレポートされています。なお、ttestコマンドについては [R] ttest (mwp-041 ) をご
参照ください。
3.2 t分布のグラフ化
関数 tden(n, t)を用いると t分布の確率密度関数の値を算出できますが、ここではこの関数を用いてグラフを
作成してみます。なお、t分布の関数式は自由度 nに依存するわけですが、今の場合、nの値としては 11を
指定します。
. twoway (function tden(11, x), range(-4 4)), ytitle("") xtitle(t)
> title(t(11) distribution) *7
*6 メニュー操作: Statistics ◃ Summaries, tables and tests ◃ Classical tests of hypotheses ◃ Mean-comparison test, paired
data*7 メニュー操作: Graphics ◃ Twoway graph (scatter, line, etc.) 詳細については補足1を参照。
10
Stata11 whitepapers
ttest出力の主張するところは、|t| > 2.2444の部分における曲線下の面積が双方足して 0.0463であるとい
うことです。
3.3 面積の算出
評価版では割愛しています。
3.4 限界値の算出
評価版では割愛しています。
4. プログラミング関数
Stata にはプログラミングを支援するための関数が多数用意されています。詳細は [D] functions のセク
ション“Programming functions”を参照いただくとして、ここでは有用性の高いコード化に関連した関数につ
いてその用例を紹介します。
4.1 コード化関数
ある連続変数(もしくはそれに準ずる離散変数)が与えられたときに、その値に応じてデータを区分化/
コード化したいというニーズはしばしば起ります。ここでは年齢に関するデータを例にとって関連する関数
recode(), autocode(), irecode()の用法を説明します。使用するデータセットは age01.dtaです。
. use http://www.math-koubou.jp/stata/data11/age01.dta
データセットの内容は次のとおりです。
11
Stata11 whitepapers
. list, separator(0)
8. 82 7. 73 6. 65 5. 58 4. 44 3. 36 2. 21 1. 18
age
(1) recode()の用例
関数 recode()は (x, x1, x2, . . . , xn)という引数を取ります。x1, x2, . . . , xn が変数 xに関する境界を意味す
ることになります。例えば
. generate code1a = recode(age, 20, 30, 40, 50, 60, 70, 80, 90)
と入力すると次のような結果が得られます。
. list age code1a, separator(0)
8. 82 90 7. 73 80 6. 65 70 5. 58 60 4. 44 50 3. 36 40 2. 21 30 1. 18 20
age code1a
境界値 x1, x2, . . . , xn は等間隔である必要はなく、また x > xn となるようなデータがあっても構いません。
. generate code1b = recode(age, 25, 40, 60)
. list age code1b, separator(0)
8. 82 60 7. 73 60 6. 65 60 5. 58 60 4. 44 60 3. 36 40 2. 21 25 1. 18 25
age code1b
x > xn となるようなデータに対しては値 xn がセットされている点に注意してください。
12
Stata11 whitepapers
(2) autocode()の用例
評価版では割愛しています。
(3) irecode()の用例
評価版では割愛しています。
5. 文字列関数
Stata には文字列を操作する関数が多数用意されています。全容は [D] functions のセクション“String
functions”を参照いただくとして、ここでは和暦を西暦に変換する操作を一例として紹介します。
評価版では割愛しています。
6. 日付/時間関数
Data Editor 上で 10/15/2011や 01jan2011ような日付データを入力した場合、これらは文字列データとし
て認識されてしまうため、このままでは時系列分析等で利用することができません。このため最初に数値デー
タ、具体的には 01jan1960を起点とした整数値に変換してやる必要があります。そのために用いられるのが
daily()とか monthly()といった関数です。詳細については [D] functions のセクション“Date and time
functions”を、用例については mwp-001 をご参照ください。
7. 行列操作関数
Stata には行列演算に関連した関数も多数用意されています。詳細は [D] functions のセクション“Matrix
functions returning a matrix”、及び“Matrix functions returning a scalar”をご参照いただくとして、ここ
では一部の用例のみを紹介します。最初に次のような行列
A =
1 1 11 2 21 2 3
を定義します。
. matrix input A = (1,1,1\1,2,2\1,2,3)
. matrix list A
r3 1 2 3r2 1 2r1 1 c1 c2 c3symmetric A[3,3]
この場合、Aは対称行列のため、下三角要素しか表示されていない点に注意してください。Aの逆行列を求め
るには関数 inv()を使用します。
13
Stata11 whitepapers
. matrix B = inv(A)
. matrix list B
c3 0 1 1c2 1 2c1 2 r1 r2 r3symmetric B[3,3]
すなわち
A−1 =
2 −1 0−1 2 −10 −1 1
と求まったわけです。
次に Aを Cholesky分解してみます。使用するのは関数 cholesky()です。
. matrix C = cholesky(A)
. matrix list C
r3 1 1 1r2 1 1 0r1 1 0 0 c1 c2 c3C[3,3]
実際、CCT を計算してみると
. matrix D = C*C’
. matrix list D
r3 1 2 3r2 1 2r1 1 r1 r2 r3symmetric D[3,3]
よりA = CCT
となっていることが確認できます。
補足1 – グラフ作成コマンド操作
評価版では割愛しています。
¥
14
Stata11 whitepapers
mwp-082
ivregress - 操作変数法による回帰
説明変数が誤差項と相関を持つ場合、OLS推定量には不偏性も一致性も期待できなくなります。そのような
場合には操作変数を用いた推定が必要となります。
1. OLSの前提条件
2. OLS推定量の性質
3. 確率的説明変数
4. 操作変数法
5. 2段階最小 2乗法
6. ivregressの用例
6.1 データセット
6.2 2SLS推定法
6.3 LIML推定法
6.4 GMM推定法
7. ivregress postestimationの用例
7.1 estat endogenous
7.2 estat firststage
7.3 estat overid
1. OLSの前提条件
ここでは煩雑さを避ける意味で、単回帰モデル
yi = β0 + β1xi + ui, i = 1, 2, . . . , n (M1)
を対象に議論を進めて行くことにします。通常、β0 と β1 の推定には最小 2 乗法 (OLS: ordinary least
squares) が使用されますが、その推定が適切に行われるためには次の 4条件が前提となる点に注意する必要
があります。
c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)
15
Stata11 whitepapers
前提1: 説明変数 xは確率変数ではなく固定変数 (fixed variable) である。
前提2: 誤差項 uは確率変数で、期待値は 0である。
E(ui) = 0, i = 1, 2, . . . , n (M2)
前提3: 誤差項の分散は均一である。
V (ui) = E(u2i ) = σ2, i = 1, 2, . . . , n (M3)
前提4: 異なった誤差項は無相関である。
Cov(ui, uj) = E(uiuj) = 0, i = j, i, j = 1, 2, . . . , n (M4)
これらの前提のもとで OLS推定法は残差 2乗和 (RSS: residual sum of squares)、すなわち
RSS =n∑
i=1
(yi − yi)2 =n∑
i=1
(yi − β0 − β1xi)2 (M5)
を最小化する推定量 β0, β1 を求めます。具体的には
∂RSS
∂β0
= −2n∑
i=1
(yi − β0 − β1xi) = 0 (M6a)
∂RSS
∂β1
= −2n∑
i=1
(yi − β0 − β1xi)xi = 0 (M6b)
を連立させて解けばよく、β0, β1 は次式で与えられることになります。
β1 =∑n
i=1(xi − x)(yi − y)∑ni=1(xi − x)2
(=
∑ni=1(xi − x)yi∑ni=1(xi − x)2
)(M7a)
β0 = y − β1x (M7b)
2. OLS推定量の性質
(1) 不偏性 (unbiasedness)
ある母集団パラメータを θ、その推定量を θ とします。何度も標本抽出と推定を繰り返したとき、θ の期待値
である E(θ)が真の値 θ に一致するとき、すなわち
E(θ) = θ (M8)
が成り立つとき、θ は不偏推定量 (unbiased estimator) であると言います。
前提条件 1から 4のもとで得られる OLS推定量 β0, β1 は不偏推定量です。またそれらは線形不偏推定量の中
で最も分散の小さな推定量、すなわち最良線形不偏推定量 (BLUE: best linear unbiased estimator) でもあ
ります [ Gauss-Markovの定理 ]。
16
Stata11 whitepapers
(2) 一致性 (consistency)
標本数 nを∞にしたとき、推定量の値 θ が θ に収束する、すなわち任意の ϵ > 0について
limn→∞P (|θ − θ| ≥ ϵ) = 0
が成立するとき、θは θの一致推定量 (consistent estimator) であると言います。また θが θの一致推定量で
あることを θ が θ に確率収束すると言い、plim θ = θ (M9)
のように書きます。
OLS推定量 β0, β1 は一致推定量でもあります。
3. 確率的説明変数
説明変数が非確率変数であることを主張する前提 1が崩れた場合、推定量の重要な資質である不偏性と一致性
は共に失われることになります。
(1) 不偏性
今、説明変数 xが確率変数であることに注意して (M7a)式を変形します。yi − y = β1(xi − x) + (ui − u)と
書けることから
β1 =∑n
i=1(xi − x)(yi − y)∑ni=1(xi − x)2
= β1 +∑n
i=1(xi − x)(ui − u)∑ni=1(xi − x)2
(M10)
従ってその期待値は
E[β1] = β1 + E
[∑ni=1(xi − x)(ui − u)∑n
i=1(xi − x)2
](M11)
で与えられることになります。この第 2項は変数 xが誤差項 uと統計的に独立であれば 0となりますが、一
般的には xと uの間の相関によって 0とはならず、β1 は β1 の不偏推定量とは言えなくなります。
(2) 一致性
今、
plim(V (xi)) = plim
[n∑
i=1
(xi − x)2/n
]= σ2
x
plim(Cov(xi, ui)) = plim
[n∑
i=1
(xi − x)(ui − u)/n
]= σxu
17
Stata11 whitepapers
であるとします。このとき (M10)より
plim(β1) = plim[β1 +
∑ni=1(xi − x)(ui − u)∑n
i=1(xi − x)2
]= β1 + plim
[∑ni=1(xi − x)(ui − u)/n∑n
i=1(xi − x)2/n
]= β1 +
plim [∑n
i=1(xi − x)(ui − u)/n]plim [
∑ni=1(xi − x)2/n]
= β1 +σxu
σ2x
(M12)
となるため、σxu = 0の場合、すなわち xと uの間に相関がある場合には、β1 は β1 の一致推定量とは言えな
くなります。
(3) 観測誤差を伴うモデル
今、2つの物理量 ξ と η の間の関係が
ηi = β0 + β1ξi + ϵi, i = 1, 2, . . . , n
という単回帰モデルで表現できるものとします。これらの物理量を観測するに際し、η については誤差のない
値が観測できるが、ξ については観測誤差を伴うものとします。この場合、観測値 xi と yi の間の関係式を
yi = β0 + β1xi + ui, i = 1, 2, . . . , n
と書いた場合、xi は実際には ξi + vi(vi は観測誤差)と表現されるため、ui = ϵi − β1vi であることになりま
す。従ってCov(xi, ui) = Cov(ξi + vi, ϵi − β1vi) = β1σ
2v = 0
すなわち、説明変数 xと誤差項 uの間には相関が生じ、OLS推定量は不偏性も一致性も持たないことになり
ます。
(4) 同時方程式モデル
Y は所得、C は消費、I は投資を表す変数としたとき、次のようなマクロ経済モデルを考えることにします。{Yi = Ci + Ii
Ci = β0 + β1Yi + ui
ただし I は外生変数 (exogenous variable) であるとします。このとき
Yi =β0
1 − β1+
11 − β1
Ii +1
1 − β1ui
Ci =β0
1 − β1+
β1
1 − β1Ii +
11 − β1
ui
と表現できることから、所得 Y は確率変数であることがわかります。
18
Stata11 whitepapers
回帰式において Y と uの相関をチェックすると次のようになります。
Cov(Yi, ui) = E
[u2
i
1 − β1
]=
σ2
1 − β1= 0
このことから、内生変数 (endogenous variable) が説明変数となる場合にも、OLS推定量は不偏性も一致性
も持たないことがわかります。
4. 操作変数法
評価版では割愛しています。
5. 2段階最小 2乗法
評価版では割愛しています。
6. ivregressの用例
評価版では割愛しています。
7. ivregress postestimationの用例
評価版では割愛しています。
¥
19
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)
20
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
21
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コマンドを用いてグラフ化を行ってみます。
22
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
23
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
24
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
25
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
26
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
27
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
28
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倍であることがわかります。
ベータ係数が意味を持つのは連続変数の場合に限られます。
29
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 の項よりダウンロードする。
30
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には値ラベルが設定されていますが、ここでは数値コードを表示させています。
31
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ポンドに変更します。
32
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
33
Stata11 whitepapers
rvpplotは残差を特定の説明変数(今の場合、weight)と対向させた形でプロットする機能を提供します。
この分散不均一性(heteroskedasticity) はフォーマルな検定によっても確かめることができます。
• Statistics ◃ Postestimation ◃ Reports and statistics と操作
• estatダイアログ: Reports and statistics: Tests for heteroskedasticity (hettest)
図 5 estatダイアログ
34
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タブ
35
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を選択した場合には、グループ(クラスタ)内での相関を許
容した推定法が実行されます。
36
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)
¥
37
Stata11 whitepapers
mwp-042
anova/oneway - 機能概要と用例
anovaは分散分析の機能を提供する汎用的なコマンドです。これに対し onewayは一元配置 ANOVAに特化
し、多重比較機能も包含するなど、より使いやすさを追求したコマンドです。
1. 分散分析と多重比較
2. 分散分析の前提条件
3. 一元配置 ANOVA – oneway
4. 一元配置 ANOVA – anova
5. 線形回帰モデル
6. 二元配置 ANOVA
7. 二元配置 ANOVA後の多重比較
8. 反復測定 ANOVA
補足1
補足2
補足3
1. 分散分析と多重比較
平均値が等しいと言えるかどうかを検定する場合、対象とする標本の数が 2つ以下の場合には通常 t検定が用
いられます(mwp-041 参照)。それでは 3つの標本 A, B, Cが与えられたとき、t検定を繰返し使用したら何
が悪いのでしょうか?今、検定の有意水準 αを 5%とすると
(1) A-B間の比較で有意差が検出されない確率 = 0.95
(2) A-C間の比較で有意差が検出されない確率 = 0.95
(3) B-C間の比較で有意差が検出されない確率 = 0.95
ですから、3回の検定を通じて有意差が検出されない確率は 0.953 = 0.86 となります。逆に言えば (1), (2),
(3)のいずれかで有意差が検出される確率は 1 − 0.86 = 0.14となり、正しい帰無仮説を棄却してしまう過誤
(第 1種過誤)の確率が本来の 5%よりも大きく増大するといった問題が生じます。
c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)
38
Stata11 whitepapers
このため標本数が 3 以上の場合には分散分析 (ANOVA: analysis of variance) という手法が用いられます。
これはすべての平均値間に差がないことを F 検定によって確認しようとするものです。しかしこの仮説が棄
却された場合に、どの平均とどの平均の間に有意差が認められるかについて、分散分析自体は何ら情報をもた
らしません。このため、有意確率の補正を伴う多重比較 (multiple comparison) 検定を併用することが通常行
われます。
2. 分散分析の前提条件
分散分析の実行に際しては次の要件が満たされていることが前提となります。
(1) 従属変数(応答変数)は量的(区間尺度)データであること
(2) 従属変数(応答変数)は正規分布に従うこと
(3) 観測データは互いに独立であること
(4) 各グループの分散は均一であること
反復測定 (repeated-measures) ANOVAの場合には独立性に関する前提条件が成り立たなくなり
ます。
3. 一元配置 ANOVA – oneway
要因として想定する因子 (factor) の数が 1つの場合を一元配置 ANOVA (one-way ANOVA) と言います。一
元配置 ANOVA に対しては anova, oneway コマンド双方を使用することができますが、本セクションでは
onewayを用いて分析を行ってみます。使用するデータセットは anova1.dtaです。
. use http://www.math-koubou.jp/stata/data11/anova1.dta, clear
全部で 24個の血圧 (blood pressure) データが記録されていますが、ここではその一部のデータをリスト表示
しておきます。
. list if n <= 3 | n >= 22, separator(3) *1
24. 123 4 23. 139 4 22. 137 4
3. 115 1 2. 121 1 1. 126 1
bp drug
変数 drug は薬剤の種別を表すカテゴリ変数で 1, 2, 3, 4 という 4 つの値を取ります。この drug の値ごとに
データを整理し、平均値を算出すると次のようになります*2。
*1 メニュー操作: Data ◃ Describe data ◃ List data*2 Stataの機能を用いてテーブルを作成する場合の操作方法については補足1を参照ください。
39
Stata11 whitepapers
drug bp 平均値
1 126 121 115 123 125 113 120.5
2 112 123 115 129 106 108 115.5
3 123 112 133 124 130 121 123.8
4 122 132 125 137 139 123 129.7
薬剤の種類によって平均値は微妙に異なるわけですが、これらの差が統計的に有意と言えるかどうかを oneway
を使って検定してみます。なお、有意水準 α の値としてはデフォルトの 5%を用いることにします。また要
約統計量を示す表の作成と多重比較検定の実行に関するオプションも指定することにします。
• Statistics ◃ Linear models and related ◃ ANOVA/MANOVA ◃ One-way ANOVA と操作
• Mainタブ: Response variable: bp
Factor variable: drug
Multiple-comparison tests: Bonferroni
Output: Produce summary table: X
図 1 onewayダイアログ- Mainタブ
40
Stata11 whitepapers
Bartlett's test for equal variances: chi2(3) = 1.1493 Prob>chi2 = 0.765
Total 1719.625 23 74.7663043
Within groups 1083.16667 20 54.1583333Between groups 636.458333 3 212.152778 3.92 0.0237
Source SS df MS F Prob > FAnalysis of Variance
Total 122.375 8.6467511 24
4 129.66667 7.3665913 6 3 123.83333 7.3598007 6 2 115.5 8.9162773 6
1 120.5 5.3572381 6
drug Mean Std. Dev. Freq. Summary of bp
. oneway bp drug, bonferroni tabulate
0.260 0.020 1.000 4 9.16667 14.1667 5.83333
1.000 0.383 3 3.33333 8.33333
1.000 2 5
Col Mean 1 2 3Row Mean (Bonferroni)
Comparison of bp by drug
(1) ANOVA表の解釈
ここでの操作では tabulateオプションを指定しているので、最初にまず因子水準ごとに要約統計量を整理し
た表が出力されています。この例では度数 (frequency) がいずれも 6ということでバランスの取れたデータと
なっていますが、onewayにしろ anovaにしろ、バランスの取れていないデータ (unbalanced data) も扱う
ことができます。
要約統計量の表に続く形で出力されているのが ANOVA表です。
Bartlett's test for equal variances: chi2(3) = 1.1493 Prob>chi2 = 0.765
Total 1719.625 23 74.7663043
Within groups 1083.16667 20 54.1583333Between groups 636.458333 3 212.152778 3.92 0.0237
Source SS df MS F Prob > FAnalysis of Variance
41
Stata11 whitepapers
SSは平方和 (sum of squares) を意味します。regressの項(mwp-037 参照)では y の変動を∑(yi − y)2 =
∑(yi − yi)2 +
∑(yi − y)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)
と表現しましたが、今の場合、MSSに相当するのが群間変動 (between groups) 636.46、RSSに相当するの
が群内変動 (within groups) 1083.17、TSSに相当するのが全変動(total) 1719.63です。このとき、それぞれ
の変動を自由度 (df: degrees of freedom) で割ることによって MS (mean square) すなわち平均平方が各々
212.15, 54.16と算出されます。これらの比を取ったものが F 値で 212.15/54.16 = 3.92という値になります。
この F 値を使った F 検定の結果が p値 0.0237と示されているわけですが、この場合の帰無仮説はすべての
平均値が等しいとするものです。今の場合、p値は < 0.05ですから帰無仮説は棄却されることになります。
なお、ANOVA 表の末尾に Bartlett 検定の結果が表示されていますが、これは等分散性に関するものです。
等分散性は ANOVAの前提条件の一つであるわけですが、今の場合 p値は≫ 0.05ですから、この前提条件
に関する問題はないと言えます。
(2) 多重比較
上記 ANOVA表からは µ1 = µ2 = µ3 = µ4 が主張できないということはわかったわけですが、どのペア間に
有意差があるかを見るためには多重比較検定のプロセスが必要となります。上記操作では bonferroni とい
うオプションを指定しているので、Bonferroni補正を施した形の多重比較検定の結果が ANOVA表に引き続
く形で出力されています。
0.260 0.020 1.000 4 9.16667 14.1667 5.83333
1.000 0.383 3 3.33333 8.33333
1.000 2 5
Col Mean 1 2 3Row Mean (Bonferroni)
Comparison of bp by drug
表示されている行列要素をMij と表記することにすれば、Mij には µi − µj の値とそれが 0と言えるか否か
に関する Bonferroni補正後の p値が示されています。この結果からすると µ4–µ2 間の差のみ有意と判定され
ています。多重比較補正の手法としては Bonferroniの他に Scheffe, Sidakが選択できます。
42
Stata11 whitepapers
4. 一元配置 ANOVA – anova
評価版では割愛しています。
5. 線形回帰モデル
評価版では割愛しています。
6. 二元配置 ANOVA
評価版では割愛しています。
7. 二元配置 ANOVA後の多重比較
評価版では割愛しています。
8. 反復測定 ANOVA
評価版では割愛しています。
補足1 – 表の作成
評価版では割愛しています。
補足2 – 繰返しのない二元配置 ANOVA
評価版では割愛しています。
補足3 – 二元配置データのグラフ化
評価版では割愛しています。
¥
43
Stata11 whitepapers
mwp-070
table - 要約統計情報のテーブル化
tableコマンドはカテゴリ変数の組合せごとに要約統計情報を算出し、結果をテーブル形式で出力します。要
約統計情報の種類としては数多くのものが用意されています。Superrows, supercolumns を用いたテーブル
構成にも対応しています。
1. tableコマンド
2. 一元表
3. 二元表
4. 三元表
1. tableコマンド
table コマンドを使用する場合にキーとなるのはカテゴリ変数です。その数が n 個の場合には n 元の表
(n-way table) が作成されます(ただし n ≤ 7)。一方、カテゴリ変数の値の組合せに対して個々のテーブルセ
ルが対応することになるわけですが、そこに表示できる要約統計情報としては次のようなものが用意されてい
ます。
◦ 度数 (frequency)
◦ 平均値 (mean)
◦ 標準偏差 (standard deviation)
◦ 最大値 (maximum)
◦ 最小値 (minimum)
◦ 中央値 (median)
◦ 四分位範囲 (interquantile range)
◦ パーセンタイル (percentile)
それぞれのセルに複数の統計情報を出力させることもできます。
c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)
44
Stata11 whitepapers
2. 一元表
最初に一元の場合についてその用例を示します。使用する Exampleデータセットは auto.dtaです。
. sysuse auto.dta *1
(1978 Automobile Data)
このデータセット中には 1978 年に米国で販売された 74 車種のデータが収納されています。変数
displacementは排気量を表す連続変数ですが単位が立方インチでわかりにくいので、最初にそれをリッター
に変換します。
. generate disp1 = 16.4*displacement/1000 *2
変数 disp1の最大値と最小値をチェックしておくと
. summarize disp1 *3
disp1 74 3.235676 1.50613 1.2956 6.97
Variable Obs Mean Std. Dev. Min Max
. summarize disp1
より、排気量の値は 1.3lから 7.0lまでの範囲に及ぶことがわかります。この変数 disp1から次のようなカテ
ゴリ変数 classを生成してみます。
class 排気量区分
0 disp1≤ 2.0
1 2.0 < disp1≤ 3.0
2 3.0 < disp1≤ 4.0
3 4.0 < disp1
. generate class = irecode(disp1, 2.0, 3.0, 4.0) *4
参考までに先頭から 5台の車種について disp1と classの値をリスト出力しておきます。
. list make disp1 class in 1/5
5. Buick Electra 5.74 3 4. Buick Century 3.2144 2 3. AMC Spirit 1.9844 0 2. AMC Pacer 4.2312 3 1. AMC Concord 1.9844 0
make disp1 class
*1 メニュー操作: File ◃ Example datasets ◃ Example datasets installed with Stata と操作しダウンロードする。*2 メニュー操作:Data ◃ Create or change data ◃ Create new variable*3 メニュー操作: Statistics ◃ Summaries, tables and tests ◃ Summary and descriptive statistics ◃ Summary statistics*4 関数 irecode()については [D] functions を参照
45
Stata11 whitepapers
このカテゴリ変数 classを用いて一元の表を作成してみましょう。その際、変数 mpg (miles per gallon) に
関する要約統計情報をいくつか出力させることにします。
• Statistics ◃ Summaries, tables, and tests ◃ Tables ◃ Table of summary statistics (table) と操作
• Mainタブ: Row variable: class
Statistics 1: Count nonmissing mpg
Statistics 2: Mean mpg
Statistics 3: Standard deviation mpg
図 1 tableダイアログ- Mainタブ
3 19 16.4211 3.485142 19 19.4211 2.7348731 13 20.6154 3.819652
0 23 27.2609 5.100957
class N(mpg) mean(mpg) sd(mpg)
. table class, contents(count mpg mean mpg sd mpg )
定義された排気量クラスごとに変数 mpgの度数、平均値、標準偏差が出力されていることがわかります。な
お、変数 classに対し値ラベルを設定してやればよりわかりやすい出力とすることができます*5。
*5 値ラベルの設定は Variables Manager を用いることによって対話的に行えます。
46
Stata11 whitepapers
. label define class 0 "<2000cc" 1 "2000-3000cc" 2 "3000-4000cc" 3 ">4000cc"
. label values class class
. table class, contents(count mpg mean mpg sd mpg )
>4000cc 19 16.4211 3.4851430004000cc 19 19.4211 2.73487320003000cc 13 20.6154 3.819652 <2000cc 23 27.2609 5.100957
class N(mpg) mean(mpg) sd(mpg)
. table class, contents(count mpg mean mpg sd mpg )
さらに tableダイアログの Optionsタブ上で表示書式を明示してやれば数値の表示様式も調整できます。
• Optionsタブ: Override display format for numbers in cells: %9.2f
図 2 tableダイアログ- Optionsタブ
>4000cc 19 16.42 3.4930004000cc 19 19.42 2.7320003000cc 13 20.62 3.82 <2000cc 23 27.26 5.10
class N(mpg) mean(mpg) sd(mpg)
. table class, contents(count mpg mean mpg sd mpg ) format(%9.2f)
47
Stata11 whitepapers
3. 二元表
評価版では割愛しています。
4. 三元表
評価版では割愛しています。
¥
48
top related