社会学者の研究メモ

はてなダイアリーから移転しました。

Stataの予測値コマンド

日常生活がヒッキーで何らエキサイティングなことがないので、またStataヒマネタ。

Stataでモデルを推計したあとに予測値を計算するにはpredictコマンドを使いますが、最近出版された入門書(下記参照)でも紹介されているように、ユーザ提供のprvalueコマンドをインストールすると、特定の条件下での予測値を返してくれます。以下のデータで実演(ちなみにこのデータはKreft and de Leeuw(1998)のなかで使用されたものです)。

use http://www.ats.ucla.edu/stat/stata/examples/mlm_imm/imm23.dta, clear

このデータは生徒の数学のスコア(math)についてのデータです。まずは簡単に、mathを、数学の宿題に費やす時間(週あたり)と白人ダミー(white)で回帰します。

reg math homework white

結果は

  • homework 2.96***
  • white 6.05***
  • constant 41.33***

となります。

宿題の時間を平均として、非白人と白人のスコアの予測値を知りたいときは、次のように命令します。

prvalue, x(white==0)
prvalue, x(white==1)

そうすると非白人スコアは47.18、白人スコアは53.23だとわかります。(信頼区間も出力してくれます。)

これでもいいのですが、デフォルトでもなかなか便利なコマンドがあります。それがadjustコマンドです。

adjust homework, by(white) ci

とすると、同じ結果を返してくれます。byオプションがある分便利です。prvalueだと何度もコマンドを打ったり、マクロを使ったりしないといけない。

adjustの優れたところは、prvalueではカバーしていない推計、特にxtシリーズに対応していることです。このデータは学校ごとに採取されたもので、数学スコアに級内相関(ICC)が認められる(0.3くらい)ので、マルチレベルを使います。(学校レベル変数として公立校ダミー(public)を説明変数の切片に導入します。)

xtmixed math homework white public|| schid: homework white, cov(un) mle var

固定効果は

  • homework 1.95**
  • white 2.68†
  • public -4.93***
  • constant 48.17***

ランダム効果は

  • homework 15.69
  • white 24.04
  • constant 64.41

(共分散は省略)

白人の効果がえらく小さくなってしまいました。whiteの学校間分散は(homeworkも)0ではないですが、あまり大きくありません。細かい結果の解釈は置いておくとして、adjustコマンドで予測してみます。

adjust homework, by(white public)


non-public public
non-white 52.01 47.08
white 54.69 49.76

白人効果より、non-public(私立)効果の方が大きいですね。(ちなみにwhiteとpublicのクロスレベル交互作用は、別途推計しましたが、あまり大きくないです。)

さて、こういうふうに紹介するとprvalueよりadjustの方が使えそうに見えますが、prvalueは値の設定については多様なやり方を用意してますので(最大・最小値、中央値など)、ばかにできません。

Stataによる社会調査データの分析―入門から応用まで

Stataによる社会調査データの分析―入門から応用まで

Introducing Multilevel Modeling (Introducing Statistical Methods series)

Introducing Multilevel Modeling (Introducing Statistical Methods series)