せっかく男女別に身長と体重のデータがあるので、それらについて分析を行ってみましょう。本書はあくまで Stata の使い方について説明した本なので、統計学的な解釈には言及せずに使い方だけをご説明します。
まずは t検定を行ってみます。体重の男女差について t検定を行います。t検定は ``ttest`` で行えます。比較したい群を ``, by( )`` で指定します。
. ttest weight, by(male)
Two-sample t test with equal variances
------------------------------------------------------------------------------
Group | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]
---------+--------------------------------------------------------------------
0 | 10 52.77 2.128539 6.731031 47.95491 57.58509
1 | 10 69.21 2.741794 8.670313 63.00763 75.41237
---------+--------------------------------------------------------------------
combined | 20 60.99 2.531745 11.32231 55.691 66.289
---------+--------------------------------------------------------------------
diff | -16.44 3.471039 -23.73238 -9.147618
------------------------------------------------------------------------------
diff = mean(0) - mean(1) t = -4.7363
Ho: diff = 0 degrees of freedom = 18
Ha: diff < 0 Ha: diff != 0 Ha: diff > 0
Pr(T < t) = 0.0001 Pr(|T| > |t|) = 0.0002 Pr(T > t) = 0.9999
左下の方にある ``Ho: diff = 0 `` が帰無仮説です。``Ha: diff != 0`` が対立仮説で ``Pr(|T| > |t|) = 0.0002`` となっており、帰無仮説が棄却されていることがわかります。
次に回帰分析をおこなってみます。今回は性別や身長の情報から体重を推定します。回帰分析についての詳細は本書の範囲をこえますので、詳細については統計の専門書をご参照ください。
まずは性別を無視して体重を従属変数、性別を独立変数として回帰分析を行ってみます。回帰分析は ``regress`` で行えます。
. regress weight male
Source | SS df MS Number of obs = 20
-------------+---------------------------------- F(1, 18) = 22.43
Model | 1351.368 1 1351.368 Prob > F = 0.0002
Residual | 1084.33 18 60.2405556 R-squared = 0.5548
-------------+---------------------------------- Adj R-squared = 0.5301
Total | 2435.698 19 128.194632 Root MSE = 7.7615
------------------------------------------------------------------------------
weight | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
male | 16.44 3.471039 4.74 0.000 9.147618 23.73238
_cons | 52.77 2.454395 21.50 0.000 47.61351 57.92649
------------------------------------------------------------------------------
上半分も大切ですが、ひとまず下半分をみてみましょう。``_cons`` のところが定数項で ``male`` のところが性別の項です。``Coef.`` が係数です。女性は 0 となっていましたので、女性であることで予想される体重は ``52.77 kg`` であり、男性はそれに ``16.44`` であることがわかります。
私たちは ``male`` をカテゴリー変数としましたので、カテゴリー変数として扱いたいです。その場合は ``i.male`` と記載すれば Stata はカテゴリー変数として扱ってくれます。
. regress weight i.male
Source | SS df MS Number of obs = 20
-------------+---------------------------------- F(1, 18) = 22.43
Model | 1351.368 1 1351.368 Prob > F = 0.0002
Residual | 1084.33 18 60.2405556 R-squared = 0.5548
-------------+---------------------------------- Adj R-squared = 0.5301
Total | 2435.698 19 128.194632 Root MSE = 7.7615
------------------------------------------------------------------------------
weight | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
1.male | 16.44 3.471039 4.74 0.000 9.147618 23.73238
_cons | 52.77 2.454395 21.50 0.000 47.61351 57.92649
------------------------------------------------------------------------------
さきほど ``male`` と表示されていた部分が ``1.male`` となっています。これは ``male`` が 0(女性)とくらべて 1(男性)の結果が示されています。もっとよく分かりやすくするには ``, allbase`` オプションをつけます。
. regress weight i.male, allbase
Source | SS df MS Number of obs = 20
-------------+---------------------------------- F(1, 18) = 22.43
Model | 1351.368 1 1351.368 Prob > F = 0.0002
Residual | 1084.33 18 60.2405556 R-squared = 0.5548
-------------+---------------------------------- Adj R-squared = 0.5301
Total | 2435.698 19 128.194632 Root MSE = 7.7615
------------------------------------------------------------------------------
weight | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
male |
0 | 0 (base)
1 | 16.44 3.471039 4.74 0.000 9.147618 23.73238
|
_cons | 52.77 2.454395 21.50 0.000 47.61351 57.92649
------------------------------------------------------------------------------
``male`` が 0 のときは ``Coef.`` (係数)は 0 であり、 1 のときは ``16.44`` であることが分かりやすく表示されています。
説明変数に height も入れてみましょう。
. regress weight i.male height, allbase
Source | SS df MS Number of obs = 20
-------------+---------------------------------- F(2, 17) = 144.14
Model | 2300.0621 2 1150.03105 Prob > F = 0.0000
Residual | 135.635901 17 7.97858242 R-squared = 0.9443
-------------+---------------------------------- Adj R-squared = 0.9378
Total | 2435.698 19 128.194632 Root MSE = 2.8246
------------------------------------------------------------------------------
weight | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
male |
0 | 0 (base)
1 | 5.460796 1.615392 3.38 0.004 2.052617 8.868975
|
height | .6832112 .0626549 10.90 0.000 .551021 .8154014
_cons | -58.24499 10.2199 -5.70 0.000 -79.80709 -36.68289
------------------------------------------------------------------------------
この結果から体重は、``0.683×身長(cm)`` で予測することができ、 男性であればさらに ``5.46`` を加える必要があることが分かります。
実際にこの回帰式を使って予測した値を表示してみましょう。予測には ``predict`` を用います。データに列が追加されることになりますので、追加する列名を ``p1`` とします。コマンドウィンドウには次のように入力してください。
. predict p1
(option xb assumed; fitted values)

一番右に ``p1`` という列が組み込まれているのが分かります。これが身長と性別から予想した体重です。そのすぐ隣にある ``weight`` と比較すると、結構近い値を予測していることがわかります。
## データを保存する
さて、この章では特にデータに変更は加えていませんが、取り込んだデータを Stata 形式で保存しておきましょう。
メニューから [File]>[Save] を選択してください。

下の方にある File format が Stata Data (*.dta) であることを確認します。

``my_test.dta`` という名前で保存しました。
メインウィンドウには次のように表示されます。``(ユーザー名)`` のところには、本書をお読みの方のユーザー名が入ります。ここではデスクトップに保存するようにしましたが、保存場所はそれぞれ適当に決めてください。
. save "/Users/(ユーザー名)/Desktop/my_test.dta"
file /Users/(ユーザー名)/Desktop/my_test.dta saved
これを Doファイルに貼り付ければ、コマンドから保存ができるはずです。貼り付けてもう一度実行してみましょう。
. save "/Users/(ユーザー名)/Desktop/my_test.dta"
file /Users/(ユーザー名)/Desktop/my_test.dta already exists
r(602);
ファイルがすでに存在しているとエラーがでました。上書き保存できるように ``, replace`` オプションをつけましょう。
. save "/Users/(ユーザー名)/Desktop/my_test.dta", replace
file /Users/(ユーザー名)/Desktop/my_test.dta saved
上手く保存できました。
拡張子が ``.dta`` は Stata で作られたファイルであることが分かります。