knitr::opts_chunk$set( echo = TRUE, eval = TRUE, message = FALSE, comment = "#>" )
Rで潜在クラスをするときにはいろいろ選択肢があるが、個人的にはpoLCA
パッケージを使うことが多い。
ここでは、poLCA
をより簡単に使えるようにした自作関数などを用いながら、潜在クラス分析のやり方を簡単に解説する。
kamaken
パッケージをロードするpoLCA
パッケージのcarcinoma
データを使用するlibrary(tidyverse) library(kamaken) data('carcinoma', package = 'poLCA') carcinoma |> count(A, B, C, D, E, F, G)
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()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.