井出草平の研究ノート

潜在クラス分析の応答確率の棒グラフ[Stata]

Stataでは潜在クラス分析の応答確率の棒グラフが描ける。棒グラフというのは今まで見たことがなかった。不要な気もしないでもないが、説明するときにわかりやすいのかもしれない。

使用するのはmarginsmarginsplotである。説明によると条件付き応答確率の関数であるestat lcmeanmarginsのラッパーらしい。ちなみにestat lcmean前のエントリで応答確率を計算するときに使ったコマンドである。

前のエントリで計算はしているが、一応今回も同じ潜在クラス分析のモデルを作っておこう。

. use http://www.stata-press.com/data/r16/gsem_lca1.dta, clear
. gsem (accident play insurance stock <- ), logit lclass(C 2)

前回のフィッテング指標の結果2クラスの方が良かったので、今回は2クラスのモデルで計算してある。プロットは下記のように記述する。

. margins, predict(outcome(accident) class(1)) ///
predict(outcome(play) class(1)) ///
predict(outcome(insurance) class(1)) ///
predict(outcome(stock) class(1))

. marginsplot, recast(bar) title("Class 1") xtitle("") ///
xlabel(1 "accident" 2 "play" 3 "insurance" 4 "stock", angle(45)) ///
ytitle("Predicted mean") ylabel(0(0.1)1) name(class1)


. margins, predict(outcome(accident) class(2)) ///
predict(outcome(play) class(2)) ///
predict(outcome(insurance) class(2)) ///
predict(outcome(stock) class(2))

. marginsplot, recast(bar) title("Class 2") xtitle("") ///
xlabel(1 "accident" 2 "play" 3 "insurance" 4 "stock", angle(45)) ///
ytitle("") ylabel(0(0.1)1) name(class2)


.graph combine class1 class2, cols(2)

書いてあることは難しくないが、内容のわりにやたらと長い。
2クラスなのでこの程度だが、4クラスだとこの倍の量になる。とても洗練されているとは言い難い。estat lcmeanmarginsのラッパーであれば、プロットもオプションとして用意して、marginsから記述しなくてもいいようにできなかったのだろうか。

少し注意が必要そうなのは、ylabelの目盛りを調節だ。この図を出すまでに何回か調節をする必要があった。

f:id:iDES:20191116032605p:plain