日誌

Stataメモ >> 記事詳細

2016/02/27

割合と信頼区間のグラフを描く

Tweet ThisSend to Facebook | by mtsuchi
割合の95%信頼区間を算出する

にて,割合と信頼区間の算出を紹介しました。
これらをStataでをグラフにするには,
割合と信頼区間それぞれが変数となった新たなデータセットが必要です。
以下,バージョンはStata14.1を用いました。

上記の解析で得られた結果出力をexcel等で加工して取り出して
作ることもできますが,手間がかかります。
そこで,何とかStata上だけで処理する方法を考えてみました。


1. 割合と信頼区間の情報のみを抽出

例えば,rep78=3だけ取り出してみてみます。

ci proportions foreign if rep78==3
 
                                         -- Binomial Exact --
Variable | Obs  Proportion    Std. Err.  [95% Conf. Interval]
-------------+---------------------------------------------------
 foreign |  30          .1    .0547723   .0211171    .2652885


この解析が行われると,いくつかの情報がメモリに格納されるようです。

return list

と打つと出てきます。

scalars:
                  r(N) =  30
         r(proportion) =  .1
                 r(se) =  .0547722557505166
                 r(lb) =  .0211171370297225
                 r(ub) =  .2652884504742086
              r(level) =  95

macros:
             r(citype) : "exact"


この内,割合と信頼区間の情報である

         r(proportion) =  .1
                 r(lb) =  .0211171370297225
                 r(ub) =  .2652884504742086

さえ選んで出力できれば便利です。以下のようにしてできます。
出力したい値をコンマ(,)で区切って並べると,スペースで
区切って出力されます

display r(proportion),r(lb),r(ub)

.1 .02111714 .26528845

あとは,これをrep78の値ごとに繰り返せば
便利です。そんな時はloopを使います。くわしくは
たくさんの変数に同じ処理を繰り返したいとき

forvalues i=3/5 {
 quietly ci proportions foreign if rep78==`i'
 display `i',r(proportion),r(lb),r(ub)
 }


rep78が3-5まであるので,それぞれごとに
foreignの割合と信頼区間を算出し,算出結果の
割合,95%信頼区間の下限,上限を,rep78の値ごと(i)
にdisplayで選んで出力。なお,ciの出力はquietlyで抑制

出力は以下の通り

3 .1 .02111714 .26528845
4 .5 .26019058 .73980942
5 .81818182 .48224415 .9771688

あとはこれをStataデータセットに読み込めれば,
グラフ化に便利です。


2. 新たなデータセット作成

ここでいったんデータセットをclearします。

clear

1.で取り出した情報を結果画面からコピーして
以下のようにエディタに書きます。

input rep78 proportion lower upper
/*↓に貼り付け*/
3 .1 .02111714 .26528845
4 .5 .26019058 .73980942
5 .81818182 .48224415 .9771688
end


inputの行は変数の名前です。そして最後にendを置きます。

次に,100%換算にするために,割合と信頼区間
それぞれに100を掛けます。

replace proportion=proportion*100
replace lower=lower*100
replace upper=upper*100


そして,新たなデータセットを確認します。

list _all

     | rep78   propor~n      lower      upper |
     |----------------------------------------|
  1. |     3         10   2.111714   26.52884 |
  2. |     4         50   26.01906   73.98094 |
  3. |     5   81.81818   48.22441   97.71688 |

これで準備完了です。


3. 割合と信頼区間のグラフ作成(縦書き)

ここまでできたらあとは簡単です。
rspikeで信頼区間,scatterで割合をそれぞれ描画します。

twoway rspike upper lower rep78 || scatter proportion rep78




見栄えが悪いので,オプションを色々追加してグラフを表示します。

twoway rspike upper lower rep78 || scatter proportion rep78,  ///
    msymbol(square) msize(medium) xlabel(3(1)5)  ///
    legend(pos(5) ring(0) col(1) label(1 "95%CI"))  plotregion(margin(large))


msymbolで点推定値を四角形に指定し,msizeで大きさを変更,
xlabelで,rep78が3~5まで1ずつ表示されるようにし,
legendで凡例の位置を調整,ラベルも変更,plotregionで左右の空きを増やしました。




rspikeをrcapに変えると,信頼区間の端に棒がつきます。

twoway rcap upper lower rep78 || scatter proportion rep78,  ///
   msymbol(square) msize(medium)  xlabel(3(1)5)  ///
   legend(pos(5) ring(0) col(1) label(1 "95%CI")) plotregion(margin(large))





4. 割合と信頼区間のグラフ作成(横書き)

横向きに描きたいときは,rcapの方にhorizontalオプションを付け,
scatterの変数の順序を逆にします。

twoway rspike upper lower rep78, horizontal || scatter rep78 proportion


22:25 | 投票する | 投票数(0) | コメント(0)