Try   HackMD

潜在クラス分析

  • 因果関係と構造を把握するための統計手法 (渡辺, 2001)
  • 在クラス分析は、個人の様々な特徴の違いから、統計情報に基づきセグメント(クラス)を決定する手法です。また、連続変数だけでなく、カテゴリカル変数も含めて解析することができます。従来の手法によるセグメンテーションと比べ、より煩雑で膨大なデータを機械的に分類することができる手法とも言えます。(マクロミル)
  • 潜在クラス分析は、数値データ(量的データ)や数値でないデータ(質的データ)を含む様々な種類が混在するデータを統計的にグループ(クラス)分けをしてくれる手法で、属する一つのグループを決めるのではなく、複数のグループに属するあいまいさを認めている手法です。(スリーワンシステム)
  • 潜在クラス分析とは、数値などの量的データだけでなくカテゴリカルな質的データを潜在的な変数として、表面上のデータを統計的にクラス分けする手法です。様々な性質の変数が混在した膨大なデータから分析することができるので、従来の分析手法に比べてより幅広い分野での活用が期待できます。また、分析によって必ず特定のクラスに分類されるのではなく、統計情報を基に分析結果を各クラスへの所属確率として算出するのが特徴です。潜在クラス分析は、幅広い分野で活用されている統計的な分析手法です。(日本マーケティングリサーチ機構)
  • 潜在クラス分析は、カテゴリカルな変数をもとに、データ行をクラスタリングする手法です。潜在クラス分析では、「分析者から観測されない潜在変数が、グループ変数になっている」と仮定されています。この潜在変数の各水準は、「潜在クラス」と呼ばれています。「潜在クラス分析」プラットフォームは、潜在クラスモデルをあてはめ、各データ行が所属する事後確率の最も高い潜在クラスを特定します。多くの場合、分析者は、潜在クラス分析を実行した後、各クラスの特徴を見て、それらのクラスがどのようになっているかを考察します。(JMP Pro 16.2)
  • Latent GOLD®'s cluster module provides the state-of-the-art in cluster analysis based on latent class models. Latent classes are unobservable (latent) subgroups or segments. Cases within the same latent class are homogeneous on certain criteria (variables), while cases in different latent classes are dissimilar from each other in certain important ways. The traditional latent class model can be used to handle measurement and classification errors in categorical variables, and can accomodate avriables that are nominal, ordinal, continuous, counts, or any combination of these. Covariates can be included directly in the model as well for improved cluster description. Latent GOLD® improves over traditional ad-hoc types of cluster analysis methods by including model selection criteria and probability-based classification. Posterior membership probabilities are estimated directly from the model parameters and used to assign cases to the classes.(Latent GOLD 6.0)
  • A mixture model with categorical variables is called latent class analysis, whereas a mixture model with only continuous variables is called a latent profile analysis (Oberski, 2016)
  • Latent class analysis is used to classify individuals into homogeneous subgroups. Individual differences in observed item response patterns are explained by differences in latent class membership (Geiser, 2013)
  • Latent variable mixture modeling (LVMM) is a flexible analytic tool that allows researchers to investigate ques- tions about patterns of data and to determine the extent to which identified patterns relate to important variables. For example, do patterns of co-occurring developmental and medical diagnoses influence the severity of pediatric feeding problems (Berlin, Lobato, Pinkos, Cerezo, & LeLeiko, 2011)? Do differential longitudinal trajectories of glycemic control exist among youth with type 1 diabe- tes (Helgeson et al., 2010) or do differential trajectories of adherence among youth newly diagnosed with epilepsy exist (Modi, Rausch, & Glauser, 2011), and if so, do psychosocial and demographic variables predict these pat- terns? Do patterns of perceived stressors among youth with type 1 diabetes differentially affect glycemic control (Berlin, Rabideau, & Hains, 2012)? Each of these questions is relevant to pediatric psychology and has been explored using LVMM. The purpose of this two- part article is to offer a nontechnical overview and introduction to cross-sectional (Part 1) and longitudinal mixture modeling (Part 2; Berlin, Parra, & Williams, 2014) to facilitate applications of this promising approach within the field of pediatric psychology. We begin with a general overview of LVMM to highlight notable strengths of this analytic approach, and then provide step-by-step examples illustrating three prominent types of mixture modeling: Latent class, latent profile, and growth mixture modeling. (Berlin et al. (2014))

潜在クラス分析の定義

クラスタ分析を知っていることを前提にしても様々。

共通する部分

  • 母集団の中にクラス(層、群)がある
  • 観測される変数の中にそのクラスを表す変数は含まれない
  • 各クラスの比率は同じとは限らない
  • データから、各クラスの比率と、各クラスの分布を推定する
  • 各クラスの分布(条件付き分布)に局所独立という仮定を置く

共通でない部分

  • 観測される変数はすべて名義尺度または順序尺度 (つまり離散変数) -> 渡辺先生の「潜在クラス分析」はこれ。
  • 観測される変数はすべて間隔尺度または比例尺度 (つまり連続変数) -> 「潜在プロファイル分析」はこれ。「混合分布モデル」とも。
  • 観測される変数に離散の変数と連続の変数が混ざっていていい -> 「潜在クラス分析」と「潜在プロファイル分析」の合わせ技。

クラスタ分析

クラスタ分析とは。

  • クラスタリングは、多変量データをもとに、値が近い行をグループにまとめていく手法です。通常、データ点はp次元空間全体に均等に散らばっておらず(pは変数の個数)、いくつかの塊(クラスター)になっています。それらのクラスターを見つけ出すと、データをよりよく理解できるようになるでしょう。(JMP 16.2より)
  • クラスター分析とは、異なるものが混ざりあっている集団の中から互いに似たものを集めて集落(クラスター)を作り、対象を分類するという方法の総称です。「対象」というのは人間とは限らず、企業や商品や地域や、そして時には質問項目を分類する場合もあることに注意してください。このクラスター分析を用いると、標準化された手続に従って対象の分類ができるため、マーケティングリサーチにおいてはポジショニング確認を目的としたブランドの分類や、イメージワードの分類、生活者のセグメンテーションなどに用いられます。調査データに対してクラスター分析を実行することで、メーカーサイドの視点に立ったブランドの分類や、デモグラフィック要因による生活者の分類とは異なった「生活者サイドの視点に立った分類」を発見できます。(マクロミル)
  • クラスター分析は似たような傾向のあるケース同士をグループ化してその説明をします。クラスター分析にいくつか手法があるのですが、階層クラスター分析は小さなデータ(50ケース未満程度)に対してクラスターの成り立ちをひとつずつ説明する手法となります。(SPSS)
  • クラスター分析は似たような傾向のあるケース同士をグループ化してその説明をします。K-MeansクラスタリングはSPSS Modelerではそのまま「K-Means」と呼ばれておりますが、SPSS Statisticsでは「大規模ファイルのクラスタ分析」という名称で呼ばれております。階層クラスター分析は50ケース未満程度の小さいデータに対してクラスターの成り立ちをひとつずつ説明しておりますが、K-Meansは各変数の値を多次元的にプロットした散布図から、座標上でランダムにピックアップしたケースの座標を「クラスタ中心」として、「距離が近いケース群でひとくくりにしてまとめたクラスタ」になります。変数は距離が計算できる数値変数である必要があり、クラスタ数は自ら指定する必要があります。K-Meansは階層クラスター分析と異なり、億単位、万単位のデータに対応しています。(SPSS)

類似度や距離に基づくクラスタリング

  • 階層クラスタリング:デンドログラムと群間距離(Ward/群平均/重心/最短/最長等)の組み合わせ
  • 非階層クラスタリング;k-meansアルゴリズム、正規混合分布のEMアルゴリズムによる最尤推定、自己組織化マップ(SOM)
  • モデルに基づくクラスタリング:混合分布のEMアルゴリズムによる最尤推定(再掲)

詳細はこちらに。

この科目での潜在クラス分析の定義

  • 潜在クラス分析は潜在クラスを推定する方法で、クラスタ分析(クラスター分析、クラスタリング)はグループ化する方法。似てる・・・。
  • 潜在クラス分析は、観測変数が連続変数(比例尺度または間隔尺度)でも離散変数(順序尺度または名義尺度)でも、潜在クラス文政と呼ぶ。観測変数が連続変数の場合を潜在プロファイル分析と呼ぶかもしれない。
  • クラスごとの分布には、局所独立を仮定する。
  • 潜在変数は1次元で、1からCの整数値を取るものとする。Cはクラス数。

潜在クラス分析の目的

  • 異質な母集団から観測された対象(標本、データ、レコード)を、より小さな、そしてより等質な群(クラス)に分類すること
  • 各対象が所属する群は観測されないので、各対象の応答変数(観測値)から推定する
  • 各対象が所属する群の分布も、同じく推定する

潜在クラス分析の例:若年性の肥満

Journal of Pediatric Pscychology掲載の論文より。

文献情報:
Kristoffer S. Berlin, Natalie A. Williams,  Gilbert R. Parra (2014) 
"An Introduction to Latent Variable Mixture Modeling (Part 1): 
Overview and Cross-Sectional Latent Class and Latent Profile Analyses," 
Journal of Pediatric Psychology, Volume 39, Issue 2, March 2014, Pages 174–187.
  1. リサーチクエスチョン:5つの肥満リスクの候補(学校での甘い菓子の有無、塩味の菓子の有無、甘い飲料の有無、運動への参加の有無、子供の部屋のテレビの有無)と、思春期の子供の体重(BMI)との関係を調べたい。これらが観測変数。他に性別が観測されている。これらがヒスパニックでない黒人の若年層の高BMIへの貢献を調べることが、この研究の動機。
  2. モデルの設定:それぞれのリスクの確率が高いクラスは、BMIが高いという仮説を抱く。性別と交絡するかもしれないので、それを調整するために分析に加える。性別の肥満リスクへの影響はクラス間で共通と仮定する。BMIは補助因子。

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  1. モデルの推定:潜在クラスを2から4まで変えて、推定を繰り返した。局所解に陥らないよう、2から4の潜在クラス数ごとに、最も対数尤度が大きくなった推定値を採用した。z-BMI differences accross classは、後で用いるBMIのクラス間差の検定。

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  1. モデルの選択:AICは4、BICは2、Entropyは3、仮説検定は4をそれぞれ示唆するが、4のクラス4は規模がとても小さい。3と4で共通するクラスのプロファイル(確率ベクトル)は同様なので、クラス3を採用する。
基準 合わせ方
対数尤度 複数の異なる結果がある場合には大きい結果を採用する
AIC 小さいモデルが良いモデル
BIC 小さいモデルが良いモデル
SSA-BIC 小さいモデルが良いモデル
Entropy 大きいモデルが良いモデル(0以上1以下)
検定統計量 大きいモデルが仮説から離れている
検定統計量のp値 有意水準以下なら有意(小さければ小さいほどいいという訳でもない)

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  1. 解釈:各クラスの特徴を解釈して、潜在クラス分析には用いなかった変数のクラス間の差異を分析する。クラスは推定できたが、それらのクラスの間のBMIの差は有意ではなかった。

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

潜在クラス分析の例:消費者の購買行動

マクロミルより。

  1. 購買と属性のデータを用意する

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  1. 購買のみに潜在クラス分析を行う

  1. 潜在クラスのプロファイルを解釈する
  2. サンプルを所属確率が最も高いクラスを分類する(クラスタリング)

  1. 各クラスの属性を分析し、クラスの分布と組み合わせる

S1は10代、20代が多い、男性の大半のクラスで、エナジードリンクを購買する。S6, S9も10代、20代が多いが、S6は男女が同数でコーラの購買が多く、S9は女性が大半で、水以外は目立って購買するものがない。他のクラスにも10代、20代はいるので、10代、20代の男性はエナジードリンクを購買する、と結論付けてはいけない。エナジードリンクを購買するS1層には若い男性が多い、止まり。

潜在クラス分析の例:渡辺先生のデータ (表 3.2)

マーケティングの数理モデルより。

文献情報:
岡太 彬訓・木島 正明・守口 剛(編) (2001)
マーケティングの数理モデル, 経営科学のニューフロンティア 6, 朝倉書店. 
ISBN:978-4-254-27516-2 C3350

800人に対してAとBという変数を調査した。

A+ A-
B+ 417 93
B- 93 197

この表を組み替えると次の通り。

A B 度数
+ + 417
+ - 93
- + 93
- - 197

潜在クラス分析では「独立なパターンの総数」と、推定するパラメータの個数との関係で、識別可能性を調べることができる。

<
これは必要条件である。また、この行列のランクが真値の元でパラメータ数と等しいなら、局所的に識別可能である。
rank()|θ=

後者は使いにくいが、前者は目安にはなる。

データに現れるパターンは4しかないのに、2クラスの潜在クラスモデルのパラメータ数は5である。明らかに識別可能性がないので、JMP Proは推定してくれない。

Rはしれっと、数字を出すが、注意は表示される。

もう一度、推定すると、違う数字が出る。

識別可能性がないから。

潜在クラス分析の例:渡辺先生のデータ (表 3.7)

マーケティングの数理モデルより。

スーパーの店舗イメージに関する顧客の意識調査を、5個の2値型の評価項目に集計した。

A B C D E
変数 品揃え 品物の質 駐車の容易さ サービス 価格
+ 豊富 よい 簡単 よい 安い
- 少ない 悪い 難しい 悪い 高い

回答にはすべてのパターンが現れた。

このデータを潜在クラス分析した結果が掲載されている。

同じ分析をJMP Proで行う。

同じ分析をRでも行う。


こちらはJMPとRとで、似た推定値を得た。

潜在クラス分析の必要性

離散変数の分析の場合、数百人のデータに、次の32パターンしか現れない。

+を1、-を-1と数値で置き換えて、レコード間の距離を計算すると、距離が同じレコードが多数となる。値が一つだけ異なるレコード同士は

2という距離、2つだけ異なるレコード同士は
22
というユークリッド距離を持つ。階層クラスタリングを行う時、距離が
0
のレコードをまとめた次は、距離が
2
だけ異なるクラス間をどうまとめれば良いかを悩むことになる。非階層クラスタリングでも、分散が0の群が32個という状況から出発するので、あまり望ましい結果に至るとは思えない。この時に、クラスごとの観測変数の確率分布が、クラス内で互いに独立という仮定と引き換えに、潜在クラス分析が活躍する。

全てが応答変数

複数の離散変数間の分析は、連続変数間の分析のようにはいかない。連続変数なら

  • 重回帰分析
  • 主成分分析
  • 因子分析
  • パス解析
  • 共分散構造分析(SEM)

など、色々あった。でも、多次元の離散データの場合は、平均も分散もなく、集計すると、巨大な分割表(集計表)しか得られない。

分割表の分析にも、次のような手法がある。

  • 独立性の検定
  • 対数線形モデル
  • ロジスティック回帰(アウトカムを一つ定められれば)
  • 順序尺度であれば、そのまま連続変数として分析してしまう

それでもセグメンテーション(層別、クラス訳、クラスタリング)を行う手法は、水準数の少ない離散変数が多いデータでは上手く機能しない。

名義尺度が多いデータ、順序尺度の水準が少ないデータなどを分析する時は、潜在クラス分析に利がある。ただし、分析のストーリーが次のように探索的であるため、リサーチクエスチョンに対して有効な結論を得ることには、宝探しの側面がある。

  1. 研究したい母集団の特徴を表す変数と調査したい変数を決める。
  2. 調査を実施して、データを集める。
  3. 応答変数のデータに潜在クラス分析を実施する。
  4. クラスごとに調査したい変数の分析を行う。
  5. 結論付ける。

そのため、母集団に潜在蔵あすモデルで表される構造があり、それが興味のある現象に影響を与えている、という仮説を持って挑むことが望まれる。

局所独立

クラスタは本来、それぞれに中心があり、それらの中心を誤差を伴う方法で観測している、という立場に立つ。この時、各変数は対象の様々な側面の報告であり、それぞれの変数に乗る誤差は、互いに独立という仮定に一定の理が生ずる。これから説明する局所独立は、クラスタ間の差異の方がクラスタ内のバラツキよりもずっと大きいので、クラスタ内に相関のあるモデルを考えるメリットが少ない、という状況に向いている。

f(\boldsymboly)=c=1Cwcgc(\boldsymboly)=c=1Cwck=1pgck(yk)

これが潜在クラス分析の一般形である。観測される

p次元の変数をベクトル
\boldsymboly
、その各変数を
y1,,yp
、母集団中のクラス
c
の構成比
wc
、そして各クラスの中の応答分布
gc
が局所独立の仮定から周辺分布
gck
の積で表される。局所独立の仮定は、推定が必要なパラメータの個数の削減に寄与する。

通常の潜在クラス分析では更に、

ykが取る値を
1,,dk
と置き、
yk
をさらにダミー変数で表現して、

f(\boldsymboly)=c=1Cwck=1p(j=1dkpckjyckj)

とする。

pckjはクラス
c
に属する母集団の単位の観測変数
k
のカテゴリー
j
に応答する確率である。この
pck1,,pckdk
を応答確率(ベクトル)と呼び、クラス
c
の変数
k
の特徴を読み解くために用いる。なお
yckj
も観測されないことに注意する。

もちろん男性が若い女性調査員に、路上で対面で尋ねられた時の収入と乗っている自動車の車種のように、一定の割合の回答が多めかつ高めとなる方向に同時にバイアスが生じることもあり得る。潜在クラス分析では、それも正直に回答するクラスと高めに回答するクラスの推定を試みることになる。

局所独立性が成り立っているかどうかは、適合度検定(=独立性の検定)で検討できる。ピアソンのカイ2乗検定と尤度比検定のいずれも、独立の仮定の下で漸近的にカイ2乗分布に従う。

EMアルゴリズム

Dempster, Laird, and Rubin (1977)によって提案された、潜在変数があるときに使える、最尤推定のためのアルゴリズム。観測変数を

X、潜在変数を
Z
と記し、
X
の周辺分布と、
X
を与えた時の
Z
の条件付き分布に分解する。
f(x,z)=f(z|x)f(x)

この
f(x)
が、観測値に関する周辺モデルを表す。

周辺分布には現在の推定値を用い、観測変数は所与として、未知変数に関する対数尤度の条件付き期待値を求める。

Q(θ)=Eθ^[logf(x,z;θ)|x]=zlogf(x,z;θ)f(z|x;θ^)dz
次に、この関数
Q
θ
に関して大きくする。この2段階の計算を繰り返すと、元の対数尤度
logf(x)
を最大にする
θ
が得られる。

最初の対数尤度の条件付き期待値を求める方をEステップ(Expectation step)、関数

Qを大きくする方をMステップ(Maximization step)といい、これらを繰り返すことからEMアルゴリズム(Expectation-Maximization step)と名付けられた。

モデル選択

基準 定義 方向
AIC
2×logL(θ^)+2dimθ
小さいほどいい
BIC
2×logL(θ^)+(dimθ)logen
小さいほどいい

三輪先生の資料では、大きい方がいい定義になっている。

潜在クラス分析の用語

用語 意味
顕在変数(応答変数) 潜在クラス分析に用いる観測変数
潜在変数(潜在クラス) 潜在クラスを表す変数
補助変数 潜在クラス分析には用いない観測変数
各クラスのサイズ(構成比) 母集団における各クラスの比率の推定値
各クラスのプロフィール(反応確率) 各クラスの変数ごとの確率(ベクトル、プロフィール)
各対象のクラス所属確率 データの中の各レコードがクラスに所属する確率(の予測値)

潜在クラス分析とデータと出力







LCA



補助変数1

補助変数1



潜在クラス

潜在クラス



補助変数1->潜在クラス





応答変数1

応答変数1



潜在クラス->応答変数1





応答変数2

応答変数2



潜在クラス->応答変数2





応答変数3

応答変数3



潜在クラス->応答変数3





補助変数2

補助変数2



補助変数2->潜在クラス





出力1:潜在クラスモデル

クラス1 クラス2
サイズ
w1
w2
プロフィール1
\boldsymbolθ11
\boldsymbolθ12
プロフィール2
\boldsymbolθ21
\boldsymbolθ22

出力2:クラス所属確率

# クラス1 クラス2
1
w~11
w~12
2
w~21
w~22

プロフィールは確率ベクトルのことも、平均ベクトルと分散ベクトルのこともある。

潜在クラス分析の手順

  1. クラス数を
    1
    とする。
  2. 潜在クラス分析を実行する。
  3. 適合度を確認する。
  4. 当てはまりが悪ければ、クラス数を
    1
    増やして、2.に戻る。
  5. 適合の良い結果が得られたら、クラスの持つ意味とクラスの大きさの解釈を行う。

潜在クラス分析の当てはめの改善方法

  1. クラス数を増やす
  2. 変数を選択する
    • (寄与率、有意性の検定などを参考に)観測変数への寄与が低い変数は落とす
  3. 局所独立の仮定を緩める
    • 一部の観測変数に、周辺分布ではなく同時分布を用いる (局所従属)
    • 共分散構造分析で、観測変数間に相関(両矢印)を加えるのと同等
    • 潜在クラスでは捉えられない部分的な関連がある場合に用いる
  4. 潜在変数を増やす
    • クラス数を増やす代わりに、潜在変数を増やす
  5. 共変量を含める
    • 潜在クラスモデルに共変量を導入する

データの例

  1. 糖尿病のデータ:"Ten baseline variables, age, sex, body mass index, average blood pressure, and six blood serum measurements were obtained for each of n = 442 diabetes patients, as well as the response of interest, a quantitative measure of disease progression one year after baseline." アウトカム
    Y
    は一年後の糖尿病の進行の測定結果。
  2. 教育用標準データセットA 市区町村:1741の市区町村をクラスタリングする。

データ分析の流れ

  1. 変数を離散化するか、しないかを選ぶ。
    a. 変数をすべて離散化して、潜在クラス分析を行う
    b. 変数がすべて連続なら、潜在プロファイル分析を行う(JMPは正規混合分布)
    c. 離散(名義、順序)と連続の変数が混在するなら、JMPとR以外に頼る
  2. 分析を繰り返す
    1. クラス数を指定して、推定を実行する
    2. クラス数を1増やして、推定を実行する
    3. AICやBICを比較する
    4. 最適なクラス数に至るまで、クラス数を1増やして、推定を繰り返す
  3. 推定された潜在クラスごとの分布、潜在クラスの構成比を解釈する
  4. 潜在クラスか、潜在クラスでクラスタリグした結果を、アウトカムの分析に用いる

変数の離散化とは?

ある変数

xの値が
{x1,,xn}
と観測されている時、その最大値と最小値の差を範囲という。
R=max{x1,,xn}min{x1,,xn}

範囲
R
m
等分する区間を作り、小さい方から順に
1,2,,m
と命名する。この時、
k=1,2,
と順に、次の変換を繰り返すことを、連続変数の等間隔な区間への離散化という。
ximax{x1,,xn}min{x1,,xn}m×kdi=k

例えば3段階の順序尺度への変換では
m=3
、4段階の順序尺度への変換では
m=4
とする。

変数の大きさに意味がなければ、四分位など、順序で等間隔に区切ることも考えられる。ただしその場合、離散化した変数のヒストグラムが一様分布になることに注意する。離散化が等分割とは限らない。

用いるモデルは?

潜在クラス分析は、多項分布の混合分布。

潜在プロファイル分析は、正規分布の混合分布。

推定はいずれもEMアルゴリズムだろうと思い込んでいたが、ニュートン法を併用するソフトウェアもある(Latent GOLD)。

JMP

新しい列を作成して、変数のプロパティを編集する。計算式条件付き関数を用いる。

If(
	:AGE <= ((Col Maximum( :AGE ) - Col Minimum( :AGE )) / 4) * 1
	+Col Minimum( :AGE ),
	1,
	If(
		:AGE <= ((Col Maximum( :AGE ) - Col Minimum( :AGE )) / 4) * 2
		+Col Minimum( :AGE ),
		2,
		If(
			:AGE <= ((Col Maximum( :AGE ) - Col Minimum( :AGE )) / 4) * 3
			 + Col Minimum( :AGE ),
			3,
			4
		)
	)
)

行っている操作は、上の離散化と同じ。

ximax{x1,,xn}min{x1,,xn}m×kdx=k

変数ごとにこのような操作を行う。JMPの上で離散化のレベル数を変更するよりは、予め離散化した列を加えたデータを用意する方が、操作が簡単になる気がする。

Stata

Stataには離散化するコマンドegenがある。

egen agec=cut(age), at(0,10, 30, 40, 50, 60, 99)

またJMPのように条件分岐で代入してもいい。

gen agec=1 if age~=.
replace agec=2 if age>10 & age<=30
replace agec=3 if age>30 & age<=40
replace agec=4 if age>40 & age<=50
replace agec=5 if age>50 & age<=60
replace agec=6 if age>60

Stataは変換を、Stataのプログラムに含めることができる。

SPSS

〔変換〕→〔連続変数のカテゴリ化〕

離散化のレベル数(=分割点の数+1)を入力すると、幅は提案してくれる。SPSSでも変数ごとに設定するため、操作が少し煩雑になる。

データの変換では、シンタックスが生成されないことに注意する。

R

配列に条件を加えて代入していく。

agec = age
agec[age>60] = 6
agec[age<=60] = 5
agec[age<=50] = 4
agec[age<=40] = 3
agec[age<=30] = 2
agec[age<=10] = 1

潜在クラス分析ができるソフトウェア

JMP (Pro)

潜在クラス分析

潜在クラス分析(観測変数が離散、潜在変数が1次元で離散)。毎回、同じ推定値が出力されるように見えている。念のため、数回は再実行して確認すると良い。

潜在クラス1は「年齢が高め、性別は女性が多め、BMIは低め」のクラスである。
潜在クラス2は「年齢が真ん中が多め、性別は男性が多め、BMIは最も低いクラスと最も高いクラスが多め」のクラスである。
潜在クラス3は「年齢が低め、性別は男性が少し多め、BMIは低め」のクラスである。

ここで推定した潜在クラスに分類(クラスタリング)して、アウトカム変数のクラスごとの分析を行ってみる。

平均には差があった。

正規混合分布

潜在プロファイル分析(観測変数がクラスごとに多変量正規分布、潜在変数が1次元で離散)。毎回、推定値が少なくとも微妙には異なる。そのため一回だけ実行するのではなく、同じクラスター数でも必要な回数の再実行を行い、もっとも当てはまりがよいものを採用すると良い。

AgeとBMIだけでクラスター数3の正規混合分布を推定する。

幾つか試したが、AICcとBICではクラスタ数は3か4ぐらいが良さそう。

連続と離散とで、こんなにクラスタは異なる。

どちらがいいかではなく、何をしたいか。潜在プロファイル分析は正規分布を仮定するため、飛び飛びの値を一つにまとめることができない。

SSDSEでも各種人口で潜在クラスを作ってみた。

クラスが8か9が最適なので、とりあえず9にしてクラスタを生成して、飲食店数を分析してみた。

同様に1年前の測定をすべて入れて潜在プロファイル分析を行ってみた。

その結果、3クラスが最適となったので、それぞれのクラスのアウトカム変数

Yを比較してみた。

先ほどよりもっと顕著に差が現れた。赤のクラスは糖尿病の進行が遅め、青は中ぐらい、緑が早めとなった。こうなると改めて、推定した潜在クラスの間の違いを検討してみたくなる。

クラスタごとの平均には統計的に有意な差がある。なぜ・・・?

  • 社会的要因
  • 経済的要因
  • 労働環境
  • ライフスタイル

など、様々な差が生まれそうな変数を要因とした潜在クラス分析や潜在プロファイル分析を行い、そこで得たクラスタ間でアウトカムの変数の分布に差が明らかになったことを、分析の結果とする。その意味では、どのような要因によって構成される潜在クラスモデルを推定するかの検討は、アウトカムの差異に繋がる要因を仮説として抱いた上で行うべきであり、確かに渡辺美智子先生が書かれているように、因果構造を明らかにするための手法と言える。

k-means法

正規混合分布のノンパラメトリック版。

Latent GOLD

開発元はStatistical Innovationsで、日本の代理店はスリーワンシステムズ

Latent GOLD バージョン
日本語対応 5.1
英語 6.0

たぶん直接の購買も可能で、日本から買わなければ、add-onの追加が可能。

Module Functions
Basic LC Cluster, Discrete Factor, LC Regression and Growth, Step3 Module
Choice add-on First choice, Ranking, Ratings-based Conjoint, Allocation models
Adv/Syntax add-on Latent Markov/Transition module, Continuous latent variables, Multilevel models, Survey options for complex sample data, Syntax Module

潜在クラス分析にはLatent GOLD Basicのみでいい気がする。メニュー操作できるGUIのついたソフトウェアだが、Adv/Syntax add-onを購入するとLG-Syntaxというプログラミング言語で記述できる。私にはSyntaxは必須だった。

渡辺先生と山口先生の一押し。

LC Cluster

潜在クラスモデル(観測変数は連続と離散のいずれでも、混ざっていてもよく、潜在変数が1次元で離散)。

指示変数がすべて離散の場合は潜在クラス分析を実行し、指示変数がすべて連続の場合は潜在プロファイル分析(混合正規分布の推定)を実行する。観測変数は離散と連続が混ざっていてもよいらしい。

潜在変数を2次元以上にも拡張できる。

インポートできるデータの種類。

  • 自分で書いたdatファイル
  • SPSSのデータを保存したsavファイル
  • Excelなどで保存したcsvファイル
  • Latent GOLDのlgfファイル

操作は次の2種類。

  1. 〔ファイル〕→〔開く〕:データファイルを探して開く。
  2. 〔Model1〕をクリックする:データとモデルを指定する。
  3. 〔モデル〕→「自分が行う分析のモデル」をクリックする:潜在なんとか分析なら〔クラスタ〕。
  4. 変数がすべて順序尺度か名義尺度なら、潜在クラス分析に用いる変数を指示変数に全て入れ、他のタブの設定も必要に応じて操作して変更する。
  5. クラスタ数(=潜在クラス数)を指定して、〔推定〕
  6. 潜在クラス数を変更して同じ推定を行うには・・・?

変数の種類を「順序-固定」から、「連続」に変更する方法が分からない時はこちら。

  1. 〔ファイル〕→〔開く〕:データファイルを探して開く。
  2. 〔Model1〕をクリックする:データとモデルを指定する。
  3. 〔モデル〕→「自分が行う分析のモデル」をクリックする:潜在なんとか分析なら〔クラスタ〕。
  4. 潜在クラス分析に用いる変数を指示変数に全て入れ、他のタブの設定も必要に応じて操作して変更する。
  5. 〔閉じる〕
  6. 〔モデル〕→〔Syntax作成〕:分析操作と同等のプログラムが生成される。
  7. 生成されたSyntaxを編集する。
  8. 〔モデル〕→〔推定〕

総人口の右に「continuous」と追加すると、連続変量として扱ってもらえるようになる。

options
   maxthreads=8;
   algorithm 
      tolerance=1e-008 emtolerance=0.01 emiterations=250 nriterations=50 ;
   startvalues
      seed=0 sets=16 tolerance=1e-005 iterations=50;
   bayes
      categorical=1 variances=1 latent=1 poisson=1;
   montecarlo
      seed=0 sets=0 replicates=500 tolerance=1e-008;
   quadrature  nodes=10;
   missing  excludeall;
   output      
      parameters=effect  betaopts=wl standarderrors profile probmeans=posterior
      bivariateresiduals estimatedvalues=model;
variables
   dependent 総人口 continuous;
   latent
      クラスタ nominal 1;
equations
   ク****ラスタ <- 1;
   総人口 <- 1 + クラスタ;

離散変量と連続変量が混在していてもそのまま潜在クラス分析(LCクラスタ)を実行してくれる。Latent GOLDの推定は3段階のようで、何かをしてからEMアルゴリズム、その後にニュートン法を用いているように表示される。

LEMと同様に共変量を加えることができる。

R

poLCAパッケージ

潜在クラス分析(観測変数が離散、潜在変数が1次元で離散)。

上の例(表3.2)のデータ作成と潜在クラス分析のプログラム。

A = NULL
B = NULL
A = append(A, rep(1,417))
B = append(B, rep(1,417))
A = append(A, rep(1,93))
B = append(B, rep(-1,93))
A = append(A, rep(-1,93))
B = append(B, rep(1,93))
A = append(A, rep(-1,197))
B = append(B, rep(-1,197))
tab.3.2 = data.frame(A=as.factor(A), B=as.factor(B))
write.csv(tab.3.2, file="tab-3-2.csv")

install.packages("poLCA")
library(poLCA)
poLCA(cbind(A,B)~1, tab.3.2, nclass=2, nrep=1000, graphs = TRUE)
poLCA(cbind(A,B)~1, tab.3.2, nclass=2, graphs = TRUE)

上の例(表3.7)のデータ作成と潜在クラス分析のプログラム。

tab.3.7 = NULL
tab.3.7 = append(tab.3.7, rep(c( 1, 1, 1, 1, 1), 55))
tab.3.7 = append(tab.3.7, rep(c( 1, 1, 1, 1,-1),  8))
tab.3.7 = append(tab.3.7, rep(c( 1, 1, 1,-1, 1), 12))
tab.3.7 = append(tab.3.7, rep(c( 1, 1, 1,-1,-1),  3))
tab.3.7 = append(tab.3.7, rep(c( 1, 1,-1, 1, 1), 62))
tab.3.7 = append(tab.3.7, rep(c( 1, 1,-1, 1,-1),  9))
tab.3.7 = append(tab.3.7, rep(c( 1, 1,-1,-1, 1), 39))
tab.3.7 = append(tab.3.7, rep(c( 1, 1,-1,-1,-1),  6))
tab.3.7 = append(tab.3.7, rep(c( 1,-1, 1, 1, 1), 80))
tab.3.7 = append(tab.3.7, rep(c( 1,-1, 1, 1,-1), 33))
tab.3.7 = append(tab.3.7, rep(c( 1,-1, 1,-1, 1), 16))
tab.3.7 = append(tab.3.7, rep(c( 1,-1, 1,-1,-1), 16))
tab.3.7 = append(tab.3.7, rep(c( 1,-1,-1, 1, 1), 97))
tab.3.7 = append(tab.3.7, rep(c( 1,-1,-1, 1,-1), 46))
tab.3.7 = append(tab.3.7, rep(c( 1,-1,-1,-1, 1), 92))
tab.3.7 = append(tab.3.7, rep(c( 1,-1,-1,-1,-1), 49))
tab.3.7 = append(tab.3.7, rep(c(-1, 1, 1, 1, 1), 26))
tab.3.7 = append(tab.3.7, rep(c(-1, 1, 1, 1,-1), 10))
tab.3.7 = append(tab.3.7, rep(c(-1, 1, 1,-1, 1),  3))
tab.3.7 = append(tab.3.7, rep(c(-1, 1, 1,-1,-1),  3))
tab.3.7 = append(tab.3.7, rep(c(-1, 1,-1, 1, 1), 32))
tab.3.7 = append(tab.3.7, rep(c(-1, 1,-1, 1,-1),  6))
tab.3.7 = append(tab.3.7, rep(c(-1, 1,-1,-1, 1), 19))
tab.3.7 = append(tab.3.7, rep(c(-1, 1,-1,-1,-1),  4))
tab.3.7 = append(tab.3.7, rep(c(-1,-1, 1, 1, 1), 54))
tab.3.7 = append(tab.3.7, rep(c(-1,-1, 1, 1,-1), 48))
tab.3.7 = append(tab.3.7, rep(c(-1,-1, 1,-1, 1), 18))
tab.3.7 = append(tab.3.7, rep(c(-1,-1, 1,-1,-1), 28))
tab.3.7 = append(tab.3.7, rep(c(-1,-1,-1, 1, 1), 44))
tab.3.7 = append(tab.3.7, rep(c(-1,-1,-1, 1,-1), 60))
tab.3.7 = append(tab.3.7, rep(c(-1,-1,-1,-1, 1), 68))
tab.3.7 = append(tab.3.7, rep(c(-1,-1,-1,-1,-1),110))
tab.3.7 = matrix(c(tab.3.7), ncol=5, byrow=TRUE)
tab.3.7 = data.frame(A=as.factor(tab.3.7[,1]), 
                     B=as.factor(tab.3.7[,2]), 
                     C=as.factor(tab.3.7[,3]), 
                     D=as.factor(tab.3.7[,4]), 
                     E=as.factor(tab.3.7[,5]))
write.csv(tab.3.7, file="tab-3-7.csv")

poLCA(cbind(A,B,C,D,E)~1, tab.3.7, nclass=2, nrep=100, graphs = TRUE)

これでいいのではないか、という気がする。

mclustパッケージ

潜在プロファイル分析(観測変数が連続、潜在変数が1次元で離散)。

tidyLPA

mclustとMplusを呼び出す。

Stata

これもLatent GOLD同様、離散変数と連続変数が混在していても潜在クラスを推定してくれる「らしい」。(カタログに書いてあっただけで、試していない)

Mplus

開発元はMuthén & Muthén

Module Functions
Mplus Base Program 回帰分析, パス解析, 探索的因子分析, 確証的因子分析, SEM, 生存時間解析
Mixture Add-On 回帰分析の混合, パス解析の混合, 潜在クラス分析, 複数の潜在変数による潜在クラス分析, 対数線形モデル, 有限混合分布, 潜在クラス成長曲線, 潜在推移分析, 隠れマルコフモデル, 生存時間解析の混合
Multilevel Add-On 混合→階層

日本に代理店がなく、add-onの追記は差額で可能。SEMのためならMplus Base、潜在クラス分析を行うならMplus Base and Mixture Add-Onを選択すればいい。ただしMplusはプログラミング言語なので要注意。

SEMもできるし、ベイズ推定もできるので気になっている。星野先生(経済学部)はこれを使用していそう。

LEM

ここから入手可能。LEMの開発者は現在、Latent GOLDの開発に加わっている。

三輪先生一押し。

IBM SPSS Amos

Amosにとっての潜在クラス分析は、混合正規分布のこと。つまり、潜在プロファイル分析。

こう書いてあるけど、潜在クラス分析(観測変数が離散で、潜在変数が1次元の離散)ができると信じると損する。

終わりに

潜在変数を含むモデルに限らず、データの分析で得られるモデルは、そのデータへの当てはまりの良さを根拠に、実在するかもしれないことを主張するために用いる。それが実証研究である。ただし当てはまりの良いモデルに、対応する理論があるとは限らない。理論の検討とデータの分析は、実証研究の両輪であることを、忘れないようにして欲しい。