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 2 sdtest χ 検定、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: email: www.math-koubou.jp 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() . list *1 *2 x1 1. 2. 3. 4. 5. .850512 .0515642 .6303533 .6991696 .518447 6. 7. 8. 9. 10. .3360431 .1747266 .9104601 .3874338 .409848 区間 [a, a + b) 上での一様乱数を発生させたい場合には a + b*runiform() という数式を用いれば良いわけです。例えば区間 [10, 20) 上での一様乱数を変数 x2 中に発生させるには次の ように操作します。 *1 *2 メニュー操作: Data ◃ Create or change data ◃ Create new variable メニュー操作: Data ◃ Describe data ◃ List data 5 Stata11 whitepapers . generate x2 = 10 + 10*runiform() . list x2 x2 1. 2. 3. 4. 5. 19.59647 11.52971 16.53234 14.25097 14.2031 6. 7. 8. 9. 10. 17.27702 14.25147 18.96779 10.89719 12.13104 整数値が欲しい場合には数学関数 round()(四捨五入)、または floor()(切捨て)を使用します。 . generate x3 = round(x2) . list x2 x3 x2 x3 1. 2. 3. 4. 5. 19.59647 11.52971 16.53234 14.25097 14.2031 20 12 17 14 14 6. 7. 8. 9. 10. 17.27702 14.25147 18.96779 10.89719 12.13104 17 14 19 11 12 この round() や floor() を runiform() と組み合わせて使用することもできます。 . generate x4 = round(10 + 10*runiform()) . list x4 x4 1. 2. 3. 4. 5. 16 14 20 20 15 6. 7. 8. 9. 10. 18 15 16 18 13 6 Stata11 whitepapers 1.2 正規乱数 評価版では割愛しています。 2. 数学関数 Stata には数多くの数学関数が用意されています。全体像については [D] functions のセクション“Mathematical 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 x y1 1. 2. 3. 4. 5. 1 2 3 4 5 1 3 6 10 15 6. 7. 8. 9. 10. 6 7 8 9 10 21 28 36 45 55 変数 y1 には Pi xj (i = 1, 2, . . . , 10) という形の和がセットされていることがわかります。これに対して P10 egen の total() 関数を使用すると総和の値 j=1 xj が算出されます。 j=1 . egen y2 = total(x) *4 . list x y1 y2 1. 2. 3. 4. 5. 1 2 3 4 5 1 3 6 10 15 55 55 55 55 55 6. 7. 8. 9. 10. 6 7 8 9 10 21 28 36 45 55 55 55 55 55 55 *3 *4 n というシステム変数については [U] 13.4 System variables をご参照ください。 メニュー操作: 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) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. mpg1 mpg2 20 23 21 25 18 17 18 24 20 24 23 19 24 25 21 22 23 18 17 28 24 27 21 23 ここで mpg1 = mpg2 と言えるかどうかについて t 検定を実行してみましょう。ただし有意水準はデフォルト の 5% を用います。 *5 メニュー操作:File ◃ Example Datasets ◃ Stata 11 manual datasets と操作、Base Reference Manual [R] の ttest の項よ りダウンロードする。 9 Stata11 whitepapers . ttest mpg1 == mpg2 *6 . ttest mpg1 == mpg2 Paired t test Variable Obs Mean Std. Err. Std. Dev. [95% Conf. Interval] mpg1 mpg2 12 12 21 22.75 .7881701 .9384465 2.730301 3.250874 19.26525 20.68449 22.73475 24.81551 diff 12 -1.75 .7797144 2.70101 -3.46614 -.0338602 mean(diff) = mean(mpg1 - mpg2) Ho: mean(diff) = 0 Ha: mean(diff) < 0 Pr(T < t) = 0.0232 t = degrees of freedom = Ha: mean(diff) != 0 Pr(|T| > |t|) = 0.0463 -2.2444 11 Ha: mean(diff) > 0 Pr(T > t) = 0.9768 この場合、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) *6 *7 *7 メニュー操作: Statistics ◃ Summaries, tables and tests ◃ Classical tests of hypotheses ◃ Mean-comparison test, paired data メニュー操作: Graphics ◃ Twoway graph (scatter, line, etc.) 10 詳細については補足1を参照。 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) age 1. 2. 3. 4. 5. 6. 7. 8. 18 21 36 44 58 65 73 82 (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) 1. 2. 3. 4. 5. 6. 7. 8. age code1a 18 21 36 44 58 65 73 82 20 30 40 50 60 70 80 90 境界値 x1 , x2 , . . . , xn は等間隔である必要はなく、また x > xn となるようなデータがあっても構いません。 . generate code1b = recode(age, 25, 40, 60) . list age code1b, separator(0) 1. 2. 3. 4. 5. 6. 7. 8. age code1b 18 21 36 44 58 65 73 82 25 25 40 60 60 60 60 60 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 ”をご参照いただくとして、ここ では一部の用例のみを紹介します。最初に次のような行列 1 A = 1 1 1 2 2 1 2 3 を定義します。 . matrix input A = (1,1,1\1,2,2\1,2,3) . matrix list A symmetric A[3,3] c1 c2 c3 r1 1 r2 1 2 r3 1 2 3 この場合、A は対称行列のため、下三角要素しか表示されていない点に注意してください。A の逆行列を求め るには関数 inv() を使用します。 13 Stata11 whitepapers . matrix B = inv(A) . matrix list B symmetric B[3,3] r1 r2 r3 c1 2 c2 -1 2 c3 0 -1 1 すなわち A−1 2 = −1 0 −1 0 2 −1 −1 1 と求まったわけです。 次に A を Cholesky 分解してみます。使用するのは関数 cholesky() です。 . matrix C = cholesky(A) . matrix list C C[3,3] c1 r1 1 r2 1 r3 1 c2 0 1 1 c3 0 0 1 実際、CC T を計算してみると . matrix D = C*C’ . matrix list D symmetric D[3,3] r1 r2 r3 r1 1 r2 1 2 r3 1 2 3 より A = CC T となっていることが確認できます。 補足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 + β1 xi + 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, 前提3: i = 1, 2, . . . , n 誤差項の分散は均一である。 V (ui ) = E(u2i ) = σ 2 , 前提4: (M2) i = 1, 2, . . . , n (M3) 異なった誤差項は無相関である。 Cov(ui , uj ) = E(ui uj ) = 0, i ̸= j, i, j = 1, 2, . . . , n (M4) これらの前提のもとで OLS 推定法は残差 2 乗和 (RSS: residual sum of squares)、すなわち n n X X 2 (yi − β̂0 − β̂1 xi )2 (yi − ŷi ) = RSS = (M5) i=1 i=1 を最小化する推定量 β̂0 , β̂1 を求めます。具体的には ∂RSS ∂ β̂0 ∂RSS ∂ β̂1 = −2 n X (yi − β̂0 − β̂1 xi ) = 0 (M6a) i=1 = −2 n X (yi − β̂0 − β̂1 xi )xi = 0 (M6b) i=1 を連立させて解けばよく、β̂0 , β̂1 は次式で与えられることになります。 β̂1 = Pn µ Pn ¶ (x − x̄)(yi − ȳ) i=1 i=1 (xi − x̄)yi Pn i P = n 2 2 i=1 (xi − x̄) i=1 (xi − x̄) β̂0 = ȳ − β̂1 x̄ (M7a) (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 について lim P (|θ̂ − θ| ≥ ϵ) = 0 n→∞ が成立するとき、θ̂ は θ の一致推定量 (consistent estimator) であると言います。また θ̂ が θ の一致推定量で あることを θ̂ が θ に確率収束すると言い、 plim θ̂ = θ (M9) のように書きます。 OLS 推定量 β̂0 , β̂1 は一致推定量でもあります。 3. 確率的説明変数 説明変数が非確率変数であることを主張する前提 1 が崩れた場合、推定量の重要な資質である不偏性と一致性 は共に失われることになります。 (1) 不偏性 今、説明変数 x が確率変数であることに注意して (M7a) 式を変形します。yi − ȳ = β1 (xi − x̄) + (ui − ū) と 書けることから Pn (x − x̄)(yi − ȳ) Pn i β̂1 = i=1 2 i=1 (xi − x̄) Pn (x − x̄)(ui − ū) Pn i = β1 + i=1 2 i=1 (xi − x̄) 従ってその期待値は E[β̂1 ] = β1 + E · Pn ¸ (x − x̄)(ui − ū) i=1 Pn i 2 i=1 (xi − x̄) (M10) (M11) で与えられることになります。この第 2 項は変数 x が誤差項 u と統計的に独立であれば 0 となりますが、一 般的には x と u の間の相関によって 0 とはならず、β̂1 は β1 の不偏推定量とは言えなくなります。 (2) 一致性 今、 " plim(V (xi )) = plim n X i=1 # 2 (xi − x̄) /n = σx2 " # n X plim(Cov(xi , ui )) = plim (xi − x̄)(ui − ū)/n = σxu i=1 17 Stata11 whitepapers であるとします。このとき (M10) より Pn · ¸ (xi − x̄)(ui − ū) i=1 Pn plim(β̂1 ) = plim β1 + 2 i=1 (xi − x̄) ¸ · Pn (xi − x̄)(ui − ū)/n i=1 Pn = β1 + plim 2 i=1 (xi − x̄) /n Pn plim [ i=1 (xi − x̄)(ui − ū)/n] Pn = β1 + plim [ i=1 (xi − x̄)2 /n] σxu = β1 + 2 σx (M12) となるため、σxu ̸= 0 の場合、すなわち x と u の間に相関がある場合には、β̂1 は β1 の一致推定量とは言えな くなります。 (3) 観測誤差を伴うモデル 今、2 つの物理量 ξ と η の間の関係が ηi = β0 + β1 ξi + ϵi , i = 1, 2, . . . , n という単回帰モデルで表現できるものとします。これらの物理量を観測するに際し、η については誤差のない 値が観測できるが、ξ については観測誤差を伴うものとします。この場合、観測値 xi と yi の間の関係式を yi = β0 + β1 xi + ui , i = 1, 2, . . . , n と書いた場合、xi は実際には ξi + vi(vi は観測誤差)と表現されるため、ui = ϵi − β1 vi であることになりま す。従って Cov(xi , ui ) = Cov(ξi + vi , ϵi − β1 vi ) = β1 σv2 ̸= 0 すなわち、説明変数 x と誤差項 u の間には相関が生じ、OLS 推定量は不偏性も一致性も持たないことになり ます。 (4) 同時方程式モデル Y は所得、C は消費、I は投資を表す変数としたとき、次のようなマクロ経済モデルを考えることにします。 ( Yi = Ci + Ii Ci = β0 + β1 Yi + ui ただし I は外生変数 (exogenous variable) であるとします。このとき Yi = β0 1 1 + Ii + ui 1 − β1 1 − β1 1 − β1 Ci = β0 β1 1 + Ii + ui 1 − β1 1 − β1 1 − β1 と表現できることから、所得 Y は確率変数であることがわかります。 18 Stata11 whitepapers 回帰式において Y と u の相関をチェックすると次のようになります。 · ¸ u2i σ2 Cov(Yi , ui ) = E ̸= 0 = 1 − β1 1 − β1 このことから、内生変数 (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 は回帰分析系のコマンドの中で最も頻繁に使用されるコマンドです。このコマンドを実行すると例 えば次のような推定結果が得られます。 . regress mpg weight foreign Source SS df MS Model Residual 1619.2877 824.171761 2 71 809.643849 11.608053 Total 2443.45946 73 33.4720474 mpg Coef. weight foreign _cons -.0065879 -1.650029 41.6797 c Copyright Math 工房; ⃝ Std. Err. .0006371 1.075994 2.165547 t -10.34 -1.53 19.25 Number of obs F( 2, 71) Prob > F R-squared Adj R-squared Root MSE P>|t| 0.000 0.130 0.000 74 69.75 0.0000 0.6627 0.6532 3.4071 [95% Conf. Interval] -.0078583 -3.7955 37.36172 c Copyright StataCorp LP (used with permission) 一部 ⃝ 20 = = = = = = -.0053175 .4954422 45.99768 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. 2. 3. 4. 5. *1 y x1 x2 x3 25.4 35.8 36.2 11.6 16.8 49 54 73 26 45 3 7 9 2 8 3 10 6 3 3 この変数 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 タブ . regress y x1 x2 x3 Source SS df MS Model Residual 63294.2507 97526.2879 3 996 21098.0836 97.9179598 Total 160820.539 999 160.98152 y Coef. x1 x2 x3 _cons .476147 1.974713 .0072188 -8.906289 Std. Err. .0303301 .1090362 .1083894 1.697041 t 15.70 18.11 0.07 -5.25 Number of obs F( 3, 996) Prob > F R-squared Adj R-squared Root MSE P>|t| 0.000 0.000 0.947 0.000 = = = = = = 1000 215.47 0.0000 0.3936 0.3917 9.8954 [95% Conf. Interval] .4166288 1.760746 -.205479 -12.23647 .5356652 2.18868 .2199165 -5.576103 (1) 診断プロット regress の出力結果に関する考察を始める前に、フィットの状況を視覚化しておきましょう。これが単回帰で あれば散布図とフィット直線の組合せで視覚化は容易に行えるのですが、重回帰の場合にはそのような直接的 なアプローチは取れません。n(n ≥ 3) 次元空間中における平面のフィット状況を何らかの形で 2 次元のグラ フに焼き直す必要があるわけですが、ここでは rvfplot コマンドを用いてグラフ化を行ってみます。 22 Stata11 whitepapers . rvfplot, yline(0) *2 モデルをフィットさせると、それぞれの観測点 (x1i , x2i , . . .) ごとにモデルによる推定値 ybi が算出されます。 その場合、実際の観測値 yi との差 yi − ybi が残差となるわけですが、rvfplot (residual-versus-fitted plot) はこの残差の値をフィット値 ybi に対向させる形でプロットしたものです。標準偏差 10 の正規分布を前提に乱 数を発生させているために、それなりにバラツキを持った分布となっていることがわかります。 (2) 決定係数 R2 それでは regress のアウトプットについて見て行くことにしましょう。regress 出力の上半分には ANOVA 表が掲載されています。これは変数 y の変動(バラツキ)に関する情報を集約したもので、SS は平方和 (sum of squares) を意味します。ここで yi (i = 1, . . . , n) の平均値を ȳ 、最小 2 乗法による yi の推定値を ybi と書く ことにしたとき、y の変動は X (yi − ȳ)2 = X (yi − ybi )2 + X (b yi − ȳ)2 (2) のように分解することができます。今、 P (yi − ȳ)2 を TSS (total sum of squares) P (b yi − ȳ)2 を MSS (model sum of squares) P (yi − ybi )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 = MSS RSS =1− TSS TSS (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) と書かれた列に係数の推定値が示されて いるわけですが、ここでの例の場合、 βb1 = 0.48 βb2 = 1.97 βb3 = 0.01 βb0 = −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 タブ . test (x1 = 0.5) ( 1) x1 = .5 F( 1, 996) = Prob > F = 0.62 0.4318 (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 . regress y x1 x2 x3 Source SS df MS Model Residual 5157.47143 10693.3387 3 96 1719.15714 111.388945 Total 15850.8101 99 160.109193 y Coef. x1 x2 x3 _cons .583658 1.565079 -.1063396 -12.28143 Std. Err. .1117937 .3726188 .3448411 6.422559 t 5.22 4.20 -0.31 -1.91 Number of obs F( 3, 96) Prob > F R-squared Adj R-squared Root MSE P>|t| 0.000 0.000 0.758 0.059 = = = = = = 100 15.43 0.0000 0.3254 0.3043 10.554 [95% Conf. Interval] .3617492 .8254362 -.7908438 -25.03011 .8055668 2.304721 .5781646 .4672456 R2 値にはそれほど大きな変化はありません。また今回も変数 x3 は有意ではないと判定されています。一方、 係数の推定値は微妙に変化していますが、その要因は標準誤差の値がセクション 1.2 の場合に比べて 3 ∼ 4 倍 に増えている点にあります。結果的に信頼区間の幅がそれだけ広くなってしまっています。例えば x1 の係数 値としては 0.37 とか 0.8 といった値も有意水準 5% では否定できないことになります。実際、test コマンド を用いて検定を行ってみましょう。 *4 *5 [R] set seed 参照 メニュー操作: Statistics ◃ Resampling ◃ Draw random sample 26 Stata11 whitepapers . test (x1 = 0.37) . test (x1 = 0.37) ( 1) x1 = .37 F( 1, 96) = Prob > F = 3.65 0.0590 . test (x1 = 0.8) . test (x1 = 0.8) ( 1) x1 = .8 F( 1, 96) = Prob > F = 3.74 0.0559 共に 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 *7 メニュー操作: File ◃ Example datasets ◃ Example datasets installed with Stata と操作しダウンロードする。 メニュー操作:Data ◃ Create or change data ◃ Create new variable 27 Stata11 whitepapers . format weightsq %10.0g *8 . list mpg weight weightsq in 1/5 1. 2. 3. 4. 5. mpg weight weightsq 22 17 22 20 15 2,930 3,350 2,640 3,250 4,080 8584900 11222500 6969600 10562500 16646400 *9 このデータの場合、説明変数の桁数に大きな違いがある点に注意する必要があります。あらかじめ weight の 単位を K ポンドにでもしておけば、その 2 乗項も 2 桁程度の数値でおさまり扱いやすくなるわけですが、こ こでは敢えて現状のままフィットを行ってみます。 . regress mpg weight weightsq *10 . regress mpg weight weightsq Source SS df MS Model Residual 1642.52197 800.937487 2 71 821.260986 11.2808097 Total 2443.45946 73 33.4720474 mpg Coef. weight weightsq _cons -.0141581 1.32e-06 51.18308 この場合、 Std. Err. .0038835 6.26e-07 5.767884 t -3.65 2.12 8.87 Number of obs F( 2, 71) Prob > F R-squared Adj R-squared Root MSE P>|t| 0.001 0.038 0.000 = = = = = = 74 72.80 0.0000 0.6722 0.6630 3.3587 [95% Conf. Interval] -.0219016 7.67e-08 39.68225 -.0064145 2.57e-06 62.68392 md pg = −1.42e-2 · weight + 1.32e-6 · weight2 + 51.18 というモデル式が得られたわけです。係数値だけを見れば、md pg に対する影響の大きさは weight の方が weight2 より 104 倍も大きいように見えるわけですが、これは正しい解釈とは言えません。weight2 の変数 値自体が 106 とか 107 といった大きな値を取るからです。 説明変数が及ぼす効果を相対的に比較・評価したいといった場合に良く利用されるのがベータ係数です。これ はすべての変数値を規格化 (normalize)、すなわち平均が 0、標準偏差が 1 となるように標準化した上で求め た係数値であり、被説明変数に対する効果を相対的に比較する上で有用な尺度であると言えます。このベータ 係数は beta オプションを指定することで算出することができます。 *8 メニュー操作: Variables ウィンドウ内で weightsq を右クリック、Format ’weightsq’ を選択 メニュー操作: Data ◃ Describe data ◃ List data *10 メニュー操作: Statistics ◃ Linear models and related ◃ Linear regression *9 28 Stata11 whitepapers • regress ダイアログ: Reporting タブ: Standardized beta coefficients: X 図 3 regress ダイアログ - Reporting タブ . regress mpg weight weightsq, beta Source SS df MS Model Residual 1642.52197 800.937487 2 71 821.260986 11.2808097 Total 2443.45946 73 33.4720474 mpg Coef. weight weightsq _cons -.0141581 1.32e-06 51.18308 Std. Err. .0038835 6.26e-07 5.767884 t -3.65 2.12 8.87 Number of obs F( 2, 71) Prob > F R-squared Adj R-squared Root MSE = = = = = = 74 72.80 0.0000 0.6722 0.6630 3.3587 P>|t| Beta 0.001 0.038 0.000 -1.901918 1.104148 . 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 . regress weight length, noconstant Source SS df MS Model Residual 703869302 14892897.8 1 73 703869302 204012.299 Total 718762200 74 9713002.7 weight Coef. length 16.29829 Std. Err. .2774752 t 58.74 Number of obs F( 1, 73) Prob > F R-squared Adj R-squared Root MSE = 74 = 3450.13 = 0.0000 = 0.9793 = 0.9790 = 451.68 P>|t| [95% Conf. Interval] 0.000 15.74528 16.8513 車長が 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 state 1. 2. 3. 4. 5. drate pop medage 91 40 78 99 79 3,893,888 401,851 2,718,215 2,286,435 23,667,902 29.30 26.10 29.20 30.60 29.90 Alabama Alaska Arizona Arkansas California *12 region 3 4 4 3 4 ここでは死亡率 (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 . regress drate medage i.region [aweight = pop] (sum of wgt is 2.2591e+08) SS Source df MS Model Residual 4096.6093 1238.40987 4 45 1024.15232 27.5202192 Total 5335.01916 49 108.877942 drate Coef. Std. Err. medage 4.283183 .5393329 region 2 3 4 .3138738 -1.438452 -10.90629 _cons -39.14727 t Number of obs F( 4, 45) Prob > F R-squared Adj R-squared Root MSE = = = = = = 50 37.21 0.0000 0.7679 0.7472 5.246 P>|t| [95% Conf. Interval] 7.94 0.000 3.196911 5.369455 2.456431 2.320244 2.681349 0.13 -0.62 -4.07 0.899 0.538 0.000 -4.633632 -6.111663 -16.30681 5.26138 3.234758 -5.505777 17.23613 -2.27 0.028 -73.86262 -4.431915 コマンド構文上は [aweight = pop] という指定が追加されている点に注意してください。 5. ロバスト推定 特に何も指定しなかった場合、regress は最小 2 乗法 (OLS: ordinary least squares) による回帰を実行しま す。しかし OLS の場合には分散の均一性 (homoskedasticity) が一つの前提となっている点に注意する必要 があります。例えば Example データセット auto.dta に対して次のようなフィットを行ってみます。 . sysuse auto, clear (1978 Automobile Data) . replace weight = weight/1000 *13 *14 *14 i. 演算子については mwp-028 を参照。 メニュー操作: Data ◃ Create or change data ◃ Change contents of variable 適正な係数値を得るため、車重の単位をポンドから K ポンドに変更します。 32 Stata11 whitepapers . regress mpg weight . regress mpg weight Source SS df MS Model Residual 1591.99024 851.469221 1 72 1591.99024 11.8259614 Total 2443.45946 73 33.4720474 mpg Coef. weight _cons -6.008687 39.44028 Std. Err. .5178782 1.614003 t -11.60 24.44 Number of obs F( 1, 72) Prob > F R-squared Adj R-squared Root MSE P>|t| 0.000 0.000 = = = = = = 74 134.62 0.0000 0.6515 0.6467 3.4389 [95% Conf. Interval] -7.041058 36.22283 -4.976316 42.65774 このモデルは単回帰であるため、フィットの様子を直接視覚化することが可能です。 . twoway (scatter mpg weight) (lfit mpg weight), ytitle(mpg) *15 フィットされた直線周囲のデータ点のバラツキは余り均等とは言えないように見えます。この点は診断プロッ トの 1 つである rvpplot (residual-versus-predictor plot) を使うとより鮮明なものにできます。 . rvpplot weight, yline(0) *15 *16 *16 メニュー操作: Graphics ◃ Twoway graph (scatter, line, etc.) 詳細については補足1を参照。 メニュー操作: 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 . estat hettest Breusch-Pagan / Cook-Weisberg test for heteroskedasticity Ho: Constant variance Variables: fitted values of mpg chi2(1) Prob > chi2 = = 11.05 0.0009 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 . regress mpg weight, vce(robust) Linear regression Number of obs = F( 1, 72) = Prob > F = R-squared = Root MSE = mpg Coef. weight _cons -6.008687 39.44028 Robust Std. Err. t .5840839 1.98832 -10.29 19.84 P>|t| 0.000 0.000 74 105.83 0.0000 0.6515 3.4389 [95% Conf. Interval] -7.173037 35.47664 -4.844337 43.40393 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) bp drug 1. 2. 3. 126 121 115 1 1 1 22. 23. 24. 137 139 123 4 4 4 *1 変数 drug は薬剤の種別を表すカテゴリ変数で 1, 2, 3, 4 という 4 つの値を取ります。この drug の値ごとに データを整理し、平均値を算出すると次のようになります*2 。 *1 *2 メニュー操作: Data ◃ Describe data ◃ List data 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 . oneway bp drug, bonferroni tabulate Summary of bp Std. Dev. drug Mean Freq. 1 2 3 4 120.5 115.5 123.83333 129.66667 5.3572381 8.9162773 7.3598007 7.3665913 6 6 6 6 Total 122.375 8.6467511 24 Analysis of Variance SS df MS Source Between groups Within groups 636.458333 1083.16667 3 20 212.152778 54.1583333 1719.625 23 74.7663043 Total F 3.92 Bartlett's test for equal variances: chi2(3) = 1.1493 Comparison of bp by drug (Bonferroni) Row MeanCol Mean 1 2 3 2 -5 1.000 3 3.33333 1.000 8.33333 0.383 4 9.16667 0.260 14.1667 0.020 Prob > F 0.0237 Prob>chi2 = 0.765 5.83333 1.000 (1) ANOVA 表の解釈 ここでの操作では tabulate オプションを指定しているので、最初にまず因子水準ごとに要約統計量を整理し た表が出力されています。この例では度数 (frequency) がいずれも 6 ということでバランスの取れたデータと なっていますが、oneway にしろ anova にしろ、バランスの取れていないデータ (unbalanced data) も扱う ことができます。 要約統計量の表に続く形で出力されているのが ANOVA 表です。 Source Between groups Within groups Total Analysis of Variance SS df MS 636.458333 1083.16667 3 20 212.152778 54.1583333 1719.625 23 74.7663043 Bartlett's test for equal variances: chi2(3) = 41 F Prob > F 3.92 1.1493 0.0237 Prob>chi2 = 0.765 Stata11 whitepapers SS は平方和 (sum of squares) を意味します。regress の項(mwp-037 参照)では y の変動を X (yi − ȳ)2 = X (yi − ybi )2 + X (b yi − ȳ)2 のように分解し P (yi − ȳ)2 を TSS (total sum of squares) P (b yi − ȳ)2 を MSS (model sum of squares) P (yi − ybi )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 表に引き続 く形で出力されています。 Comparison of bp by drug (Bonferroni) Row MeanCol Mean 1 2 2 -5 1.000 3 3.33333 1.000 8.33333 0.383 4 9.16667 0.260 14.1667 0.020 3 5.83333 1.000 表示されている行列要素を Mij と表記することにすれば、Mij には µi − µj の値とそれが 0 と言えるか否か に関する Bonferroni 補正後の p 値が示されています。この結果からすると µ4 –µ2 間の差のみ有意と判定され ています。多重比較補正の手法としては Bonferroni の他に Scheffe, Šidák が選択できます。 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 . summarize disp1 Variable Obs Mean disp1 74 3.235676 Std. Dev. 1.50613 Min Max 1.2956 6.97 より、排気量の値は 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 make 1. 2. 3. 4. 5. AMC Concord AMC Pacer AMC Spirit Buick Century Buick Electra disp1 class 1.9844 4.2312 1.9844 3.2144 5.74 0 3 0 2 3 *1 メニュー操作: File ◃ Example datasets ◃ Example datasets installed with Stata と操作しダウンロードする。 メニュー操作:Data ◃ Create or change data ◃ Create new variable *3 メニュー操作: Statistics ◃ Summaries, tables and tests ◃ Summary and descriptive statistics ◃ Summary statistics *4 関数 irecode() については [D] functions を参照 *2 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 タブ . table class, contents(count mpg mean mpg sd mpg ) class N(mpg) mean(mpg) sd(mpg) 0 1 2 3 23 13 19 19 27.2609 20.6154 19.4211 16.4211 5.100957 3.819652 2.734873 3.48514 定義された排気量クラスごとに変数 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 ) . table class, contents(count mpg mean mpg sd mpg ) class N(mpg) mean(mpg) sd(mpg) <2000cc 2000-3000cc 3000-4000cc >4000cc 23 13 19 19 27.2609 20.6154 19.4211 16.4211 5.100957 3.819652 2.734873 3.48514 さらに table ダイアログの Options タブ上で表示書式を明示してやれば数値の表示様式も調整できます。 • Options タブ: Override display format for numbers in cells: %9.2f 図 2 table ダイアログ- Options タブ . table class, contents(count mpg mean mpg sd mpg ) format(%9.2f) class N(mpg) mean(mpg) sd(mpg) <2000cc 2000-3000cc 3000-4000cc >4000cc 23 13 19 19 27.26 20.62 19.42 16.42 5.10 3.82 2.73 3.49 47 Stata11 whitepapers 3. 二元表 評価版では割愛しています。 4. 三元表 評価版では割愛しています。 ¥ 48
© Copyright 2024 Paperzz