knitr::opts_chunk$set(
  echo = TRUE, 
  eval = TRUE,
  message = FALSE,
  comment = "#>"
)

はじめに

Rで潜在クラスをするときにはいろいろ選択肢があるが、個人的にはpoLCAパッケージを使うことが多い。

ここでは、poLCAをより簡単に使えるようにした自作関数などを用いながら、潜在クラス分析のやり方を簡単に解説する。

前準備

library(tidyverse)
library(kamaken)

data('carcinoma', package = 'poLCA')

carcinoma |> 
  count(A, B, C, D, E, F, G) 

潜在クラス分析の実行

formulaの書き方

poLCA関数に渡すformulaは書き方に慣れが必要

基本的にはモデルに投入する変数を選択→ matrixに変換→ ~ 1と最後に書く

また,~ 1の1の代わりに,共変量(例えばデータセット内に存在する年齢とかの変数)を書けば,多項ロジット潜在クラス分析になる

formula <- as.matrix(carcinoma) ~ 1

推定

クラス数を2から4まで変化させながら潜在クラスを推定

kamaken::poLCA_resultを使用する

result <- poLCA_result(
  formula = formula,
  data = carcinoma,
  nclass = 2:4,
  maxiter = 6000,
  nrep = 5,
  verbose = FALSE
)

結果の確認

モデル選択

kamaken::poLCA_BLRTを使用する

poLCA_BLRT(result)

クラスの特徴の把握

kamaken::poLCA_check_classを使用する

3クラスの場合の結果を確認

だいたい冒頭の読み通りな気がする。

poLCA_check_class(result, nclass = 3) |> 
  # 表示桁数を3桁にする
  mutate(across(`1`:`3`, \(x) sprintf('%.3f', x)))
poLCA_check_class(result, nclass = 3) |> 
  # 2:陽性の応答確率のみを抽出
  filter(outcome == 2) |> 
  # 縦持ちにする
  pivot_longer(
    cols = !c(variable, outcome),
    names_to = 'class',
    values_to = 'prob'
  ) |> 
  ggplot(aes(variable, prob, color = class, group = class))+
  geom_line()+
  geom_point()+
  theme_bw()

参考文献



Sickle-Sword/kamaken documentation built on Feb. 2, 2025, 2:56 a.m.