Stataのグラフマニュアル

Stataで書いたグラフとそのスクリプトを公開します。
どれか一つグラフをクリックするとスライドショーになりますので、
描きたいグラフを探してください。
画像の下に出てくる番号を覚えて、本文中でその番号を探してください。
グラフのリクエストがあれば連絡ください。時間があれば作ってみます。

1. Waist-to-height ratioのカーネル密度関数を調査年ごとに表記

twoway (kdensity whtr if wave==1993) (kdensity whtr if wave==1997) (kdensity whtr if wave==2000) (kdensity whtr if wave==2004) (kdensity whtr if wave==2006) (kdensity whtr if wave==2009) (kdensity whtr if wave==2011), legend(order(1 “1993” 2 “1997” 3 “2000” 4 “2004” 5 “2006” 6 “2009” 7 “2011”) col(4)) xtitle(“WHtR(×100)”, height(5)) ylabel(, angle(0))

kernel<変数名>

  • whtr: waist-to-height ratio
  • wave:調査年

<スクリプト>

  • twoway
    複数のグラフを一つのグラフとして描写する。
    Graphics > Twoway graph (scatter, line, etc.)
  • kdensity
    カーネル密度関数を表記する。
  • if wave == 1993
    調査年が1993年であればという条件
  • legend(order(1 “1993” 2 “1997”)…)
    凡例を変える必要があればここで定義。
  • col(4)
    columnの略で列のこと。
    凡例の一行目が4列で表記される。
  • xtitle
    x軸の軸ラベル
    heightはx軸が表記される箇所の高さ。
    ytitleならばy軸の軸ラベルとなる。
  • ylabel(, angle(0))
    , angle(0)の()内の数字を変えると文字の向きを変えられる。
    何も書かないとY軸に平行の向きになる。
    x軸に平行にしたいのならば(0)もしくはhorizontalにする。

2. WHtRとUrbanization Indexの関係をSESのグループごとに描写する

twoway (lfit whtr2006 index if rel_income==1, scheme(s2mono) xscale(r(20 120)) yscale(r(45 52)))(lfit whtr2006 index if rel_income==2)(lfit whtr2006 index if rel_income==3), xlabel (#5) ylabel(#7, angle(0)) legend(pos(1) ring(0) order(1 “Low SES” 2 “Middle SES” 3 “High SES”)) xtitle(“Urbanization Index”) ytitle(“Waist-to-height ratio (WHtR)”)

whtr<変数名>

  • whtr2006:2006年のWaist-to-height ratio
  • index:都市化指標
  • rel_income:SESのグループ。データは1,2,3という形式。

<スクリプト>

  • twoway
    複数のグラフを一つのグラフとして描写する。
    Graphics > Twoway graph (scatter, line, etc.)
  • lfit y軸 x軸
    linear fitの意味。y軸とx軸のデータを用いて線形回帰する。
  • if rel_income == 1
    もしrel_incomeが1であればという条件式。
  • scheme(s2mono)
    図のデザインを決める。様々なパターンがある。
    http://www.stata.com/manuals13/g-4schemesintro.pdf#g-4schemesintro
  • xscale(r(20 120))
    x軸の範囲を20から120にする。
  • yscale(r(45 52))
    y軸の範囲を45から52にする。
  • xlabel(#5)
    x軸を5分割する
  • ylabel(#7, angle(0))
    #7でy軸を7分割し、angle(0)で文字の方向をx軸と平行にする。
  • legend
    凡例に関する指定。
  • pos(1)
    凡例の場所を指定。1なら1時の方向というように時計の方向になっている。
  • ring(0)
    ring(0)でグラフの枠内に表記することを指定。
  • order(1 “Low” 2 “Middle”…)
    凡例の順番と凡例の内容を指定。
  • xtitle
    x軸の名前を指定。(“name”)で指定する。
  • ytitle
    y軸の名前を指定。

3. HeightとWHtRの散布図をグループごとに描写する

scatter whtr height, ml(out) ms(i) note(“0 = nonoutlier, 1 = outlier”)

123<変数名>

  • whtr:Waist-to-height ratio
  • height:身長
  • out:外れ値。hadimvoを用いて指定したもの。

<スクリプト>

  • scatter
    散布図を書く。
  • ml()
    グループの変数名を入れる
  • ms(i)
    msybolの略。変数がそのまま表示される。
  • note()
    メモを書けるので、レジェンドを自由に記載することが可能。

4. WHtRの箱ひげ図を性別ごとに層化したうえで、年齢と測定年ごとに描写する

graph hbox whtr if wave == 1993 | wave == 2011, over(wave) over(age3, label) by(gender, note(“”)) outergap(100) boxgap(10) asyvars ytitle(“Waist-to-height ratio”, height(10)) marker(1,msize(vsmall) msymbol(S)) marker(2, msize(vsmall) msymbol(S)) xsize(15) ysize(10)

<変数名>

  • whtr:Waist-to-height ratio
  • wave:測定年
  • age3:年齢の階層
  • gender:性別

<スクリプト>

  • graph hbox
    箱ひげ図を書く。graph boxは普通のタテの箱ひげ図。hboxだとヨコになる。
  • if wave == 1993 | wave == 2011
    1993年と2011年のデータに絞った。
  • over()
    カッコ内の引数について層化して箱ひげ図を書くという指令。
  • over(age3, label)
    こうすることでage3という変数のラベルを使って表示できる。
  • by(gender, note(“”))
    性別ごとに二つのパネルを作成。note(“”)を付けることでグラフ下にキャプションが出るのを消せる。
  • boxgap()
    箱ひげ間の距離。
  • asyvars
    これを付けることで一つ目のover()の中の引数がグラフレジェンドになる。
    http://www.stata.com/manuals13/g-2graphbar.pdf
  • marker(1,msize(vsmall) msymbol(S))
    箱ひげ図の1993年を1で指定している。msizeは外れ値のサイズ、msymbolは外れ値の形(Sは四角square)をそれぞれ指定。1を2にしたものが2011年の箱ひげ図をしているすコマンド。