潜在クラス分析(LCA)では母集団にはグループがあり、これらのグループの個人は異なる行動をとると考えます。
しかし、このグループを識別する変数はありません。
グループはさまざまな購買嗜好を持つ消費者、さまざまな行動パターンを持つ少年、または健康状態の分類である可能性があります。
LCAはこれらの観測できないグループ分けを特定し、標本ごとのグループへの所属やそのグループの特徴が他のグループとどのように異なるかを知ることができます。
潜在クラスモデルは、(連続ではなく)カテゴリの潜在変数を持つことによって特徴付けられます。
カテゴリ潜在変数のレベルは母集団のグループを表し、クラスと呼ばれます。
これらのクラスを特定して理解することに関心があります。
潜在クラスモデルをフィットさせるには、潜在変数にクラスの数を指定する必要があります。
ここで示した潜在クラスモデルの基本的な形式では、2つのクラスを持つ1つのカテゴリ潜在変数があります。
モデルのパラメータ、つまり観測された4つの変数のロジスティック回帰モデルの切片は、クラス間で異なることが許可されています。
ここで使用するデータセットはStouffer and Toby(1951)を参考にしています。
変数は、4つの状況にどのように反応するかを尋ねられたハーバード大学とラドクリフ大学の学生の回答を表しています。
回答者は、特定の反応(友人への義務に基づく)または普遍的な反応(社会への義務に基づく)のいずれかを選択しました。
各変数は、特定の応答を示す0と普遍的な応答を示す1でコード化されます。
まず、下記でサンプルファイルをダウンロードします。
describe
で内容を確認します。
. use https://www.stata-press.com/data/r17/gsem_lca1
.describe
データセットには次を記録した変数があります。
accident
accident
変数は、次の質問への回答を記録します :play
play
は、次の質問に対する応答を記録します :insurance
insurance
は、次の質問に対する応答を記録します :stock
stock
は、質問に対する回答を記録します :ここでは潜在クラスが2つあることを仮定し、変数ごとに定数項のみが異なるモデルを想定する場合、次のように入力し、推定を行います。
. gsem (accident play insurance stock <- ), logit lclass(C 2)
矢印(<-)の左側が観測変数のリスト、今回は定数項のみとなるので右側は空欄です。
カンマ以降はオプションです。
ここでは観測変数がバイナリなので、logit
オプションでロジットモデルを指定します。
lclass
オプションは潜在クラスの名前と数を指定します。
ここでは名前はCとして、2クラス存在していることを想定するので2と入力します。
推定結果は反復計算のログから始まります。
最初の3つの部分は初期値の計算を行っています。出力結果の最初の表は、Cに対する多項ロジットモデルの推定係数を示しています。
次の2つの表は、1番目と2番目のクラスのロジスティック回帰モデルの結果です。
潜在クラス分析では、推定後にモデルの適合度を診断することができます。
観測変数がカテゴリカルな標準的な潜在クラス分析では、推定したモデルと飽和モデルを比較することです。
estat lcgof
を使用し、これらの尤度比検定を行います。
この尤度比統計量は潜在クラス分析では、特にG^2と呼ばれることがあります。
. 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クラスモデルの適合度は、2クラスモデルと同様に飽和モデルと比較しても悪くありません。
保存した2クラス、1クラス、3クラスモデルをestimates stats
コマンドでAIC、BICを基準に比較します。
. estimates stats oneclass twoclass threeclass
この結果からは、2クラスモデルがどの情報規準について最小の値を持つことがわかります。
このモデルをよりよく理解するために、質問への回答の確率がクラス間でどのように異なるかを調べてみましょう。
まず、2クラスモデルを再推定します。
estat lcmean
コマンドは、変数ごとにクラス固有の限界平均を報告します。
. gsem (accident play insurance stock <- ), logit lclass(C 2)
. estat lcmean
この表の最初のセクションは、クラス1の確率を報告します。
最初の表から、クラス1ではaccident
変数に対して1と回答をする確率は0.714です。
表の2番目のセクションも同様に、クラス2の対応する確率を報告します。
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
margins
とmarginsplot
を組み合わせて、クラスごと・変数ごとの限界確率を予測・作図できます。
まずは全体的な潜在クラスの限界確率を信頼区間込みで計算します。
. margins, predict(classpr class(1)) predict(classpr class(2))
. marginsplot, xlabel(, angle(vertical))
クラスごと・観測変数ごとの限界効果は前述のestat lcmean
とmarginsplot
で作図できます。
. estat lcmean
. marginsplot
潜在クラス分析では、「2. 推定」で紹介したように観測変数がカテゴリカルなモデルをフィットしますが、観測変数は離散値に限りません。
連続値である場合は、特に潜在プロファイル分析と呼ばれます。
サンプルデータセットをダウンロードし、内容を確認します。
. use https://www.stata-press.com/data/r17/gsem_lca2, clear
. describe
Masyn (2013)は、上記のデータを使用して一連の潜在プロファイルモデルに適合させ、それぞれが1つのカテゴリ潜在変数と3つの観測変数(glucose
、insulin
、sspg
)を持ちます。
目標はこれら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の多項ロジットモデルで推定された係数が報告されます。
次の2つの表は、クラスごとの線形回帰モデルの結果を報告します。
推定後は、潜在クラスモデルと同様に、複数の異なるモデルを比較することが可能です。
Masyn(2013)の最終的なモデルは、誤差項間の共分散を考慮し、すべてのパラメータをクラス間で個別に推定する3クラスモデルでした。
共分散を推定するために、covstructure(e._0En, unstructed)
を追加します。
また、クラス間で全てのパラメータが異なることを許容するためlcinvariant(none)
オプションを追加します。
. gsem (glucose insulin sspg <- _cons), lclass(C 3) lcinvariant(none) covstructure(e._OEn, unstructured)
このモデルでは独立変数が無いため、切片がそれぞれ対応する変数のクラスごとの平均値を表しています。
クラス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
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.