Stata分析機能例題を利用してもっと知ろう
潜在クラス分析(LCA)

潜在クラス分析(LCA)では母集団にはグループがあり、これらのグループの個人は異なる行動をとると考えます。
しかし、このグループを識別する変数はありません。
グループはさまざまな購買嗜好を持つ消費者、さまざまな行動パターンを持つ少年、または健康状態の分類である可能性があります。
LCAはこれらの観測できないグループ分けを特定し、標本ごとのグループへの所属やそのグループの特徴が他のグループとどのように異なるかを知ることができます。
潜在クラスモデルは、(連続ではなく)カテゴリの潜在変数を持つことによって特徴付けられます。
カテゴリ潜在変数のレベルは母集団のグループを表し、クラスと呼ばれます。
これらのクラスを特定して理解することに関心があります。

この例題でできること

  • 潜在クラス 推定
  • 適合度診断とモデル比較
  • 潜在クラス 予測
  • 潜在プロファイル分析
潜在クラス分析 1
潜在クラス分析 2

Stata評価版

最新バージョンのStataをお持ちでない場合は、無料の体験版でお試しいただけます。

doファイルのダウンロード

今回使用するコマンドをまとめたdoファイルです。zipファイルをダウンロード後に展開(解凍)してください。
doファイルは、Stataのメニューの「ファイル > 開く」で開いて使用します。

PDFファイルのダウンロード

このページの内容はPDFでも配布しております。

データの確認

潜在クラスモデルをフィットさせるには、潜在変数にクラスの数を指定する必要があります。
ここで示した潜在クラスモデルの基本的な形式では、2つのクラスを持つ1つのカテゴリ潜在変数があります。
モデルのパラメータ、つまり観測された4つの変数のロジスティック回帰モデルの切片は、クラス間で異なることが許可されています。
ここで使用するデータセットはStouffer and Toby(1951)を参考にしています。
変数は、4つの状況にどのように反応するかを尋ねられたハーバード大学とラドクリフ大学の学生の回答を表しています。
回答者は、特定の反応(友人への義務に基づく)または普遍的な反応(社会への義務に基づく)のいずれかを選択しました。
各変数は、特定の応答を示す0と普遍的な応答を示す1でコード化されます。

まず、下記でサンプルファイルをダウンロードします。
describeで内容を確認します。

. use https://www.stata-press.com/data/r17/gsem_lca1
.describe

データセットには次を記録した変数があります。

  • 変数1 : accident
    accident変数は、次の質問への回答を記録します :
    あなたは親しい友人が運転する車に乗っていて、彼は歩行者に衝突しました。
    彼は時速20マイルのスピードゾーンで少なくとも時速35マイルで走っていました。
    他に目撃者はいません。 彼の弁護士は、速度が時速20マイルにすぎなかったことを宣誓の下で証言すれば、彼を深刻な結果から救うかもしれないと言っています。
    宣誓証人の義務とあなたの友人に対する義務を考慮して、あなたはおそらく何をすると思いますか?
  • 変数2 : play
    playは、次の質問に対する応答を記録します :
    あなたはニューヨークのドラマ評論家です。
    あなたの親しい友人が、ブロードウェイの新作で貯金をすべてつぎ込んでしまいました。
    あなたは本当にその芝居がダメだと思っています。
    あなたの読者に対するあなたの義務とあなたの友人に対するあなたの義務を考慮して、あなたのレビューで彼の遊びに気楽に行きますか?
  • 変数3 : insurance
    insuranceは、次の質問に対する応答を記録します :
    あなたは保険会社の医師です。
    あなたは、より多くの保険料が必要な親しい友人を診察します。
    彼はかなり良い状態であることがわかりますが、診断が難しい小さな点が1つまたは2つあります。
    保険会社に対するあなたの義務と、あなたの友人に対するあなたの義務を考慮して、彼に有利なように疑いを覆い隠しますか?
  • 変数4 : stock
    stockは、質問に対する回答を記録します :
    あなたは会社の取締役会の秘密会議から戻ってきました。
    取締役会の決定が公表される前に彼が市場から撤退しない限り、破産になる親しい友人がいます。
    あなたはたまたまその友人の家で同じ晩に夕食をとっています。
    会社に対するあなたの義務と、友人に対する義務を考慮して、彼にこの件を報告しますか?

ここでは潜在クラスが2つあることを仮定し、変数ごとに定数項のみが異なるモデルを想定する場合、次のように入力し、推定を行います。

. gsem (accident play insurance stock <- ), logit lclass(C 2)

矢印(<-)の左側が観測変数のリスト、今回は定数項のみとなるので右側は空欄です。

カンマ以降はオプションです。
ここでは観測変数がバイナリなので、logitオプションでロジットモデルを指定します。
lclassオプションは潜在クラスの名前と数を指定します。
ここでは名前はCとして、2クラス存在していることを想定するので2と入力します。

潜在クラス分析(LCA) Fitting full model 潜在クラス分析(LCA) class: 1潜在クラス分析(LCA) class: 2

推定結果は反復計算のログから始まります。
最初の3つの部分は初期値の計算を行っています。出力結果の最初の表は、Cに対する多項ロジットモデルの推定係数を示しています。
次の2つの表は、1番目と2番目のクラスのロジスティック回帰モデルの結果です。

適合度診断とモデル比較

潜在クラス分析では、推定後にモデルの適合度を診断することができます。
観測変数がカテゴリカルな標準的な潜在クラス分析では、推定したモデルと飽和モデルを比較することです。
estat lcgofを使用し、これらの尤度比検定を行います。
この尤度比統計量は潜在クラス分析では、特にG^2と呼ばれることがあります。

. estat lcgof
. estat lcgofの結果

この結果からは、推定したモデルが飽和モデルと同様に適合するという帰無仮説を棄却できません。

異なるクラス数を想定したモデル同士の適合度を比較することも可能です。
まずは、すでに推定した2クラスモデルを保存します。

. estimates store twoclass

次に1クラスモデルを推定・結果を保存し、飽和モデルと尤度比検定を行います。

. gsem (accident play insurance stock <- ), logit lclass(C 1)
. estimates store oneclass
. estat lcgof
飽和モデルと尤度比検定

1クラスモデルでは帰無仮説が棄却され、当てはまりが良くないことがわかります。
さらに3クラスモデルを推定し、適合度を確認します。

. gsem (accident play insurance stock <- ), logit lclass(C 3)
. estimates store threeclass
. estat lcgof
3クラスモデルを推定し、適合度を確認

この結果からは3クラスモデルの適合度は、2クラスモデルと同様に飽和モデルと比較しても悪くありません。
保存した2クラス、1クラス、3クラスモデルをestimates statsコマンドでAIC、BICを基準に比較します。

. estimates stats oneclass twoclass threeclass
AIC、BICを基準に比較

この結果からは、2クラスモデルがどの情報規準について最小の値を持つことがわかります。

予測

このモデルをよりよく理解するために、質問への回答の確率がクラス間でどのように異なるかを調べてみましょう。
まず、2クラスモデルを再推定します。
estat lcmeanコマンドは、変数ごとにクラス固有の限界平均を報告します。

. gsem (accident play insurance stock <- ), logit lclass(C 2)
. estat lcmean
2クラスモデルを再推定

この表の最初のセクションは、クラス1の確率を報告します。
最初の表から、クラス1ではaccident変数に対して1と回答をする確率は0.714です。
表の2番目のセクションも同様に、クラス2の対応する確率を報告します。

estat lcprobを使用して、各クラスに属する確率を推定できます。

. estat lcprob
estat lcprobを使用して確率を推定

これは、データセットに含まれる標本の72%がクラス1に属し、28%がクラス2に属すると予想されることを示しています。

predictコマンドでは、クラスメンバーシップの事後確率の予測を使用して各観測値がどのクラスに属する確率を評価できます。
標本ごと、クラスごとの確率を計算し、1行目の観測値の確率をlistコマンドで表示させます。

. predict classpost*, classposteriorpr
. list in 1

新しく作成された変数classpost1およびclasspost2に各クラスとなる確率が保存されます。
この新しい変数名の接頭辞は分析者が定義します(ここではclasspost)。
アスタリスクは各潜在クラスの番号に置き換えられます。

この推定結果から、各観測値を0.5を基準として、想定した潜在クラスに分類する際には次のように入力し、新しいカテゴリカル変数を作成します。

. generate expclass = 1+(classpost2 > 0.5)

できましたら、tabulateコマンドで構成を確認できます。

. tabulate expclass
tabulateコマンドで構成を確認

marginsmarginsplotを組み合わせて、クラスごと・変数ごとの限界確率を予測・作図できます。
まずは全体的な潜在クラスの限界確率を信頼区間込みで計算します。

. margins, predict(classpr class(1)) predict(classpr class(2))
. marginsplot, xlabel(, angle(vertical))
クラスごと・変数ごとの限界確率を予測・作図

クラスごと・観測変数ごとの限界効果は前述のestat lcmeanmarginsplotで作図できます。

. estat lcmean
. marginsplot
クラスごと・観測変数ごとの限界効果を作図

潜在プロファイル分析

潜在クラス分析では、「2. 推定」で紹介したように観測変数がカテゴリカルなモデルをフィットしますが、観測変数は離散値に限りません。
連続値である場合は、特に潜在プロファイル分析と呼ばれます。

サンプルデータセットをダウンロードし、内容を確認します。

. use https://www.stata-press.com/data/r17/gsem_lca2, clear
. describe

Masyn (2013)は、上記のデータを使用して一連の潜在プロファイルモデルに適合させ、それぞれが1つのカテゴリ潜在変数と3つの観測変数(glucoseinsulinsspg)を持ちます。
目標はこれら3つの変数に基づいて糖尿病のカテゴリを決定することです。
まず、潜在変数Cが2つのクラスを持つモデルを当てはめます。

各観測変数ごとに線形回帰モデルを推定します。
切片 $\alpha_{jc}$ は潜在変数のクラス間で異なることを許可します。
さらに、各モデルの誤差分散も推定します。

クラス1では次を推定します。

\begin{eqnarray} glucose &=& \alpha_{11}+ e.glucose \\ insulin &=& \alpha_{21}+ e.insulin \\ sspg &=& \alpha_{31} + e.sspg \end{eqnarray}

クラス2では次を推定します。

\begin{eqnarray} glucose &=& \alpha_{12}+ e.glucose \\ insulin &=& \alpha_{22}+ e.insulin \\ sspg &=& \alpha_{32} + e.sspg \end{eqnarray}

さらに, 多項ロジット回帰を利用して、各クラスに属する確率を推定します。

\begin{eqnarray} Pr(C = 1) &=& \frac{e^{\gamma_1}}{e^{\gamma_1} + e^{\gamma_2}} \\ Pr(C = 2) &=& \frac{e^{\gamma_2}}{e^{\gamma_1} + e^{\gamma_2}} \end{eqnarray}

$\gamma_1$と$\gamma_2$は多項ロジットモデルの切片です。
デフォルトでクラス1を基準として扱うので、$\gamma_1 = 0$です。
デフォルトで誤差は相関せず、分散はクラス間で異なることはないと仮定します。
推定コマンドは潜在クラス分析と同様です。

. gsem (glucose insulin sspg <- _cons), lclass(C 2)
潜在クラスCの多項ロジットモデルで推定された係数 クラスごとの線形回帰モデルの結果

最初の表には潜在クラスCの多項ロジットモデルで推定された係数が報告されます。
次の2つの表は、クラスごとの線形回帰モデルの結果を報告します。

推定後は、潜在クラスモデルと同様に、複数の異なるモデルを比較することが可能です。

共分散のある3クラスモデル

Masyn(2013)の最終的なモデルは、誤差項間の共分散を考慮し、すべてのパラメータをクラス間で個別に推定する3クラスモデルでした。
共分散を推定するために、covstructure(e._0En, unstructed)を追加します。
また、クラス間で全てのパラメータが異なることを許容するためlcinvariant(none)オプションを追加します。

. gsem (glucose insulin sspg <- _cons), lclass(C 3) lcinvariant(none) covstructure(e._OEn, unstructured)
共分散のある3クラスモデル 1 共分散のある3クラスモデル 2 共分散のある3クラスモデル 3 共分散のある3クラスモデル 4

このモデルでは独立変数が無いため、切片がそれぞれ対応する変数のクラスごとの平均値を表しています。
クラス1では、glucoseの予測された平均値は35.69、insulinは16.58、sspgは10.50です。
分散と共分散についても同様に、各変数のクラスごとの分散と共分散を表します。
クラス1では、glucoseの分散は19.31、glucoseとinsulinの共分散は3.46となっています。

推定後には、潜在クラスモデルと同様にpredictコマンドで事後クラス確率から各標本の分類予測が可能です。

. predict cpost*, classposteriorpr
. egen max = rowmax(cpost*)
. generate predclass = 1 if cpost1==max
. replace predclass = 2 if cpost2==max
. replace predclass = 3 if cpost3==max
. tabulate cclass predclass, col
共分散のある3クラスモデル 5

参考文献

Masyn, K. E. 2013. Latent class analysis and finite mixture modeling. In The Oxford Handbook of Quantitative Methods, ed. T. D. Little, vol. 2, 551–610. New York: Oxford University Press.
Samuel A. Stouffer and Jackson Toby. 1951. "Role conflict and personality." American Journal of Sociology 56: 395-406.

テクニカルサポート

ご不明な点がございましたら、お気軽にお問合せフォームよりテクニカルサポートまでご連絡ください。

その際、必ず「製品名」「バージョン」「シリアル番号」をご連絡ください。

Stata is a registered trademark of StataCorp LLC, College Station, TX, USA, and the Stata logo is used with the permission of StataCorp.

page_top_icon