2014年7月の記事一覧
介入研究の解析での線形混合モデル(2):推定結果のグラフ化
介入研究の解析での線形混合モデル(1) の続きです。
解析後のデータを視覚化して治療効果の違いを把握します。
交互作用が有意でないこともあり,明確な違いを示すグラフには
なりませんが,元の論文でも,推定結果を元にしたらしいmean profilesを
示したグラフを示していたので,こちらでも似たようなものを描いて
みます(preの値を入れてない点は明らかに違いますが)。
mixedを実行した後に,群×時間のそれぞれの周辺効果(調整平均)が
以下のコマンドを打つことで算出できます。
margins treatment#month
----------------------------------------------------------------------------------------------------------
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
--------------------+------------------------------------------------------------------------------------
treatment#month |
TAU#2 | 19.46667 1.619558 12.02 0.000 16.29239 22.64094
TAU#3 | 17.85983 1.693887 10.54 0.000 14.53987 21.17978
TAU#5 | 16.25255 1.763116 9.22 0.000 12.7969 19.70819
TAU#8 | 13.52009 1.81302 7.46 0.000 9.966633 17.07354
BtheB#2 | 14.71154 1.506611 9.76 0.000 11.75864 17.66444
BtheB#3 | 13.69984 1.617249 8.47 0.000 10.53009 16.86959
BtheB#5 | 12.83243 1.697532 7.56 0.000 9.505326 16.15953
BtheB#8 | 12.09091 1.721696 7.02 0.000 8.716448 15.46537
---------------------------------------------------------------------------------
これをグラフ化すると以下のように治療効果の違いが視覚的に
分かるようになります。
marginsplot, x(month)
なんだか,TAUの方が下がり方が急な印象。8か月後は群間にあまり
違いがなさそうです。
0
変数の複数の値のいずれかに該当したら実行するという条件の書き方
autoデータセットを使って説明します。
変数rep78の内,1と3と5を1とした変数rep78rを作りたいとします
(1) genとreplaceを使う場合
と書けばよいです*1。結果は以下の通り
この場合は1と3と5の3つしかないので大変ではないですが,
選びたい値がたくさんあるとき,いちいち
rep78==1 | rep78==3・・・と繰り返すのは大変です。
できれば,重複している所は書かずに,選びたい値だけを
指定したいと思います。そんな時に使えるのがinlist( )関数です。
inlist(変数名, 値1, 値2...) と書いていきます。
結果はもちろん上と同様のものになります。
ただし,inlist( ) の中に249個以上入れるとエラーに
なるみたいなので,長い場合は分割してreplaceを複数繰り返す
必要があります。
参照:Functions: inlist()
上で説明したやり方は,データが文字型の変数でも使えます。
makeという変数は,メーカーと車種の情報が入っているので,
日本車っぽい名前が入っているのを手動で抜きだしてみました
これらのみ1,他は0とした変数japanを作りたい場合は以下のようにします。
長いので,途中で改行してDo-file editorの方で実行します。
(2) recodeを使う場合
または
でも同じことができます。recodeだと( )内はたくさん指定しても
大丈夫みたいでした。
注:
*1このままだと欠損もrep78rで0になってしまうので,これを
防ぎたい場合はgen rep78r=0 if rep78~=.とする。
【履歴】
2014/07/07 記事作成
2014/07/21 文字型の扱い追記
sysuse auto
変数rep78の内,1と3と5を1とした変数rep78rを作りたいとします
(1) genとreplaceを使う場合
gen rep78r=0
replace rep78r=1 if (rep78==1 | rep78==3 | rep78==5)
replace rep78r=1 if (rep78==1 | rep78==3 | rep78==5)
と書けばよいです*1。結果は以下の通り
tab rep78 rep78r
Repair |
Record | rep78r
1978 | 0 1 | Total
------------+-----------------------+----------
1 | 0 2 | 2
2 | 8 0 | 8
3 | 0 30 | 30
4 | 18 0 | 18
5 | 0 11 | 11
------------+------------------------+----------
Total | 26 43 | 69
この場合は1と3と5の3つしかないので大変ではないですが,
選びたい値がたくさんあるとき,いちいち
rep78==1 | rep78==3・・・と繰り返すのは大変です。
できれば,重複している所は書かずに,選びたい値だけを
指定したいと思います。そんな時に使えるのがinlist( )関数です。
inlist(変数名, 値1, 値2...) と書いていきます。
gen rep78r2=0
replace rep78r2=1 if inlist(rep78,1,3,5)
replace rep78r2=1 if inlist(rep78,1,3,5)
結果はもちろん上と同様のものになります。
tab rep78 rep78r2
Repair |
Record | rep78r2
1978 | 0 1 | Total
--------------+-----------------------+----------
1 | 0 2 | 2
2 | 8 0 | 8
3 | 0 30 | 30
4 | 18 0 | 18
5 | 0 11 | 11
--------------+-----------------------+----------
Total | 26 43 | 69
ただし,inlist( ) の中に249個以上入れるとエラーに
なるみたいなので,長い場合は分割してreplaceを複数繰り返す
必要があります。
参照:Functions: inlist()
上で説明したやり方は,データが文字型の変数でも使えます。
makeという変数は,メーカーと車種の情報が入っているので,
日本車っぽい名前が入っているのを手動で抜きだしてみました
"Honda Accord"
"Honda Civic"
"Mazda GLC"
"Subaru"
"Toyota Celica"
"Toyota Corolla"
"Toyota Corona"
これらのみ1,他は0とした変数japanを作りたい場合は以下のようにします。
長いので,途中で改行してDo-file editorの方で実行します。
gen japan=0
replace japan=1 if inlist(make,"Honda Accord","Honda Civic", ///
"Mazda GLC","Subaru","Toyota Celica","Toyota Corolla","Toyota Corona")
replace japan=1 if inlist(make,"Honda Accord","Honda Civic", ///
"Mazda GLC","Subaru","Toyota Celica","Toyota Corolla","Toyota Corona")
(2) recodeを使う場合
recode rep78 (1 3 5=1) (2 4=0), gen(rep78r)
または
recode rep78 (1 3 5=1) (else=0) if rep78~=., gen(rep78r)
でも同じことができます。recodeだと( )内はたくさん指定しても
大丈夫みたいでした。
注:
*1このままだと欠損もrep78rで0になってしまうので,これを
防ぎたい場合はgen rep78r=0 if rep78~=.とする。
【履歴】
2014/07/07 記事作成
2014/07/21 文字型の扱い追記
0
相関係数の95%信頼区間
ユーザー作成コマンドのci2をインストールすると,
相関係数の信頼区間を算出できます。
インターネットにつながっている状態で,
と打ち,sg159_1というリンクをクリックするとインストール
画面になります。
Stata 13.1では問題なく動きました。
使い方を,autoデータセットで確認します。
まずはmpgとweightのピアソン積率相関係数を普通に出すと
次のようになります。
そして,信頼区間を出すには以下のように打ちます
オプションにspearmanをつければ,スピアマンの順位相関にも対応します。
また,このコマンドに含まれているcii2の方を使うと,相関係数と人数が
分かればその数値だけでも信頼区間が算出できます。
詳しくは
相関係数の信頼区間を算出できます。
インターネットにつながっている状態で,
findit ci2
と打ち,sg159_1というリンクをクリックするとインストール
画面になります。
Stata 13.1では問題なく動きました。
使い方を,autoデータセットで確認します。
sysuse auto
まずはmpgとweightのピアソン積率相関係数を普通に出すと
次のようになります。
pwcorr mpg weight
mpg weight
mpg 1.0000
weight -0.8072 1.0000
そして,信頼区間を出すには以下のように打ちます
ci2 mpg weight, corr
Confidence interval for Pearson's product-moment correlation
of mpg and weight, based on Fisher's transformation.
Correlation = -0.807 on 74 observations (95% CI: -0.874 to -0.710)
オプションにspearmanをつければ,スピアマンの順位相関にも対応します。
また,このコマンドに含まれているcii2の方を使うと,相関係数と人数が
分かればその数値だけでも信頼区間が算出できます。
詳しくは
help ci2
0