共変量を伴った潜在クラス分析[R]

Rで共変量を伴った潜在クラス分析を行ってみたい。
パッケージはpoLCAを使う。

poLCAパッケージを利用した潜在クラス分析は以前にエントリしている。
RのpoLCAパッケージで潜在クラス分析を行う

共変量とは何かというのは、以前にMplusでの方法をエントリしているのでそちらを参照のこと。
Mplus 共変量を伴った潜在クラス分析

パッケージを読み込む。

library("poLCA")

データはpoLCAパッケージに含まれるelectionデータを利用する。 2000年のアメリカ大統領選挙アル・ゴアジョージ・W・ブッシュの評価のデータである。

下記の6点について4段階で評価している。

  1. 道徳性 moral
  2. 思いやり caring
  3. 知識が豊富 knowledgeable
  4. 良いリーダー good leader
  5. 正直ではない dishonest、
  6. 知的 intelligent

他の変数としては以下のものが含まれる。

  • 投票 VOTE3:(1) ゴア (2) ブッシュ (3) その他
  • 年齢 AGE: 連続変数
  • 教育 EDUC (1)第8学年以下 (2)9-11年生(3)高校卒業または同等(4)12年以上の学校教育(5)ジュニアまたはコミュニティカレッジレベルの学位 (6)学士レベルの学位 (7)高度な学位
  • 性別 GENDER:(1)男性 (2)女性
  • 政党 PARTY:(1)強い民主党員(2)弱い民主党員 (3)所属の無い民主党員 (4)支持政党なし(5)所属の無い共和党員 (6)弱い共和党員 (7)強い共和党

VOTE3を用いれば、抹消結果Distal Outcomesを伴った潜在クラス分析もできるデータのようだ。

少しデータが多いので、分析するデータを編集。

data("election",package="poLCA") # electionデータ読み込み
election$GENDER <- factor(election$GENDER) # 因子型にする
## 道徳性・思いやり・知識が豊富のゴア、ブッシュの値、年齢、教育、性別、政党を抜き出し
d1 <- election[,c(1:3,7:12,14:17)]
d1 <- na.omit(d1) # 欠損値除去

共変量を伴った潜在クラス分析

共変量は式の最後のチルダの後につける。
ノーマルな潜在クラス分析だとここに~1と表記するが、そこに共変量を設定することになる。 クラス数は3で走らせる。

fm1 <- cbind(MORALG,CARESG,KNOWG,MORALB,CARESB,KNOWB)~PARTY # 式formulaの作成
res1 <- poLCA(formula=fm1,data=d1,nclass=3,nrep=10) # 潜在クラス分析の実行

僕の環境ではRStudioのR Markdownからは出力ができず、コンソールからのみ共変量の結果は出力できた。
それにしても、よく起こるバグである。

共変量のところのみ結果を表示する。

========================================================= 
Fit for 3 latent classes: 
========================================================= 
2 / 1 
            Coefficient  Std. error  t value  Pr(>|t|)
(Intercept)     2.44815     0.21781   11.240         0
PARTY          -0.74290     0.06139  -12.101         0
========================================================= 
3 / 1 
            Coefficient  Std. error  t value  Pr(>|t|)
(Intercept)    -3.88769     0.47323   -8.215         0
PARTY           0.66537     0.08135    8.179         0
========================================================= 

p値は0である。ゴアとブッシュへの評価が潜在クラスの中身なので、政党支持が関連を持っているのは明らかだろう。
参照カテゴリは1である。参照カテゴリを変更させるコマンドは探してみたがなかった。変更できないと少し不便だ。

2つ以上の共変量を伴った潜在クラス分析

2つ以上の共変量を設定するときは単純に+をいれるとよい。

fm2 <- cbind(MORALG,CARESG,KNOWG,MORALB,CARESB,KNOWB)~PARTY+AGE+EDUC # 式の作成
res2 <- poLCA(formula=fm2,data=d1,nclass=3,nrep=10) # 潜在クラス分析の実行

今回も共変量のところのみ結果を表示する。

========================================================= 
Fit for 3 latent classes: 
========================================================= 
2 / 1 
            Coefficient  Std. error  t value  Pr(>|t|)
(Intercept)     4.38411     0.65075    6.737     0.000
PARTY          -1.59906     0.10977  -14.567     0.000
AGE             0.00910     0.00825    1.102     0.270
EDUC            0.27591     0.08981    3.072     0.002
========================================================= 
3 / 1 
            Coefficient  Std. error  t value  Pr(>|t|)
(Intercept)     5.02711     0.58119    8.650     0.000
PARTY          -0.99110     0.09064  -10.935     0.000
AGE            -0.02268     0.00714   -3.179     0.002
EDUC            0.16649     0.07637    2.180     0.029
=========================================================