SSブログ

【R】e1071を使った潜在クラス分析(LCA)~ハードクラスタリング [データサイエンス、統計モデル]

Rを使って潜在クラス分析(Latent Class Analysis)をしました。
潜在クラス分析は、ハードクラスタリングと言われているものとソフトクラスタリングと言われているものがあります。

ハードクラスタリングとソフトクラスタリングの違いですが、
ハードクラスタリング:各レコードが属しているクラスタは1つ。
ソフトクラスタリング:1,0で割り当てられるのではなく、確率で割り当てられる。

潜在クラス分析をする上でRでは色々なパッケージが用意されていますが、e1071を使った潜在クラス分析を行いたいと思います。

【オプション】
lca(x, k, niter=100, matchdata=FALSE, verbose=FALSE)
x:データ
k:LCAに使用されるクラスの数
niter:イテレーションの回数
matchdata:predict関数を使う場合はFALSE
verbose:イテレーションごとのアウトプットを出力

k(クラス数)はあらかじめ与える必要があるので注意が必要です。
潜在クラス分析のクラス数を決定する上でAICやBICが用いられますが、e1071ではBICしか計算されません。

【使い方の例】
# データの作成
# レコードの前半(1~500)は、type1に属しており、後半(501~1000)は、type2に属しています
type1 <- c(0.8, 0.8, 0.2, 0.2)
type2 <- c(0.2, 0.2, 0.8, 0.8)
x <- matrix(runif(4000), nr=1000)
x[1:500,] <- t(t(x[1:500,]) < type1) * 1
x[501:1000,] <- t(t(x[501:1000,]) < type2) * 1

# 潜在クラスの計算
l <- lca(x, 2, niter=5)
print(l)
summary(l)
p <- predict(l, x)
table(p, c(rep(1,500),rep(2,500)))

新しいデータに対する予測ですが、predict関数を使って予測することができます。
predict(l, x)
predict(作成した潜在クラスモデル, 予測したいデータ)

nice!(3)  コメント(0) 
共通テーマ:学問