Rで潜在クラスモデル poLCA (1)
潜在クラスモデル(Latent class model)は,統計モデルの一種であり,アンケート調査の分析などに使われます.
本モデルでは,回答者が異なる傾向を持つ複数の集団(クラス)によって構成されると想定します.
つまり,回答者は,単一の母集団のサンプルではなく,複数の部分母集団からのサンプルであると考えるのです.
そして,類似した回答パターンを持つ人をクラスに縮約することで,回答者のセグメンテーションをおこなうのです.
これを,潜在クラス分析(Latent class analysis)といいます.
さらに,得られたクラスと,回答者の個人属性(年齢,性別など)を用いて回帰分析をおこなうことで,「どのような特徴を持った人が,どのクラスに属し,どのような回答をしやすいのか」を分析することが可能です.
(クラスの共変量として,個人属性を導入すること)
この場合,単なる潜在クラスモデルではなく,潜在クラス回帰モデル(Latent class regression model)を用いることになります.
それでは,Rを使って潜在クラス分析をしていきたいと思います.
今回は,最初の分析に使うデータの中身を見ていきます.
環境・条件
OS | Windows 10 Home |
実装メモリ | 8 GB |
CPU | Intel core i5-3470 |
R | 3.6.0 |
潜在クラス分析パッケージ | poLCA 1.4.1 (Polytomous Variable Latent Class Analysis) |
使用データ
poLCAの中に最初から入っているサンプルデータ,「election」を使います.
これは,2000年のアメリカ合衆国大統領選挙における世論調査への回答データです.
当時の大統領選は,「ブッシュ vs ゴア」の一騎打ちで,最終的にブッシュが勝ちました.
ちなみに,選挙結果をめぐり「ブッシュ対ゴア事件」という法廷闘争にまで発展した激しい戦いだったらしいです.
まあ,私は非常に小さかったので,なにも覚えてませんが(笑)
さて,データの詳細に入りましょう.
とりあえず,poLCAとelectionデータを読みこみます.
library(poLCA)
data("election")
本データには,ブッシュとゴア両者に対する投票者の評価と,投票者の個人属性が含まれています.
フォーマットは,以下の通りです.
str(election)
'data.frame': 1785 obs. of 17 variables:
$ MORALG : Factor w/ 4 levels "1 Extremely well",..: 3 4 1 2 2 2 2 2 2 1
$ CARESG : Factor w/ 4 levels "1 Extremely well",..: 1 3 2 2 4 3 NA 2 2 1
$ KNOWG : Factor w/ 4 levels "1 Extremely well",..: 2 4 2 2 2 3 2 2 2 1
$ LEADG : Factor w/ 4 levels "1 Extremely well",..: 2 3 1 2 3 2 2 2 3 1
$ DISHONG: Factor w/ 4 levels "1 Extremely well",..: 3 2 3 2 2 2 4 3 4 4
$ INTELG : Factor w/ 4 levels "1 Extremely well",..: 2 2 2 2 2 2 2 2 2 1
$ MORALB : Factor w/ 4 levels "1 Extremely well",..: 1 NA 2 2 1 2 NA 3 2 2
$ CARESB : Factor w/ 4 levels "1 Extremely well",..: 1 NA 2 3 1 NA 3 4 3 4
$ KNOWB : Factor w/ 4 levels "1 Extremely well",..: 2 2 2 2 2 3 2 4 2 2
$ LEADB : Factor w/ 4 levels "1 Extremely well",..: 2 3 3 2 2 2 2 4 2 3
$ DISHONB: Factor w/ 4 levels "1 Extremely well",..: 4 NA 3 3 3 2 4 3 3 3
$ INTELB : Factor w/ 4 levels "1 Extremely well",..: 2 1 2 1 2 2 NA 4 2 2
$ VOTE3 : num 2 NA 1 1 2 1 NA 1 1 1 ...
$ AGE : num 49 35 57 63 40 77 43 47 26 48 ...
$ EDUC : num 5 4 3 4 5 2 4 7 6 3 ...
$ GENDER : num 1 2 2 1 2 1 1 2 2 2 ...
$ PARTY : num 5 3 1 3 7 1 6 1 1 1 ...
12個の質的変数(評価値)と5個の量的変数(投票者属性)が含まれています.
観測数は1785です.ただし,評価値に関する完全データは1311です.
変数の内容を以下にまとめました.
項目名 | 対象 | 意味 | 値 |
MORALG | ゴア | 道徳性 | 1 extremely well 2 quite well 3 not too well 4 not well at all |
CARESG | ゴア | 思いやりの有無 | 上に同じ |
KNOWG | ゴア | 知識の豊富さ | 上に同じ |
LEADG | ゴア | リーダーシップの強さ | 上に同じ |
DISHONG | ゴア | 不誠実さ | 上に同じ |
INTELG | ゴア | 賢明さ | 上に同じ |
MORALB | ブッシュ | 道徳性 | 上に同じ |
CARESB | ブッシュ | 思いやりの有無 | 上に同じ |
KNOWB | ブッシュ | 知識の豊富さ | 上に同じ |
LEADB | ブッシュ | リーダーシップの強さ | 上に同じ |
DISHONB | ブッシュ | 不誠実さ | 上に同じ |
INTELB | ブッシュ | 賢明さ | 上に同じ |
VOTE3 | 投票者 | 投票結果 | 1 (ゴア) 2 (ブッシュ) 3 (その他) |
AGE | 投票者 | 年齢 | 18 ~ 97 |
EDUC | 投票者 | 教育水準 | 1 (8 grades or less) 2 (9-11 grades, no further schooling) 3 (High school diploma or equivalency) 4 (More than 12 years of schooling, no higher degree) 5 (junior or community college level degree) 6 (BA level degrees, no advanced degree) 7 (Advanced degree) |
GENDER | 投票者 | 性別 | 1 (Male) 2 (Female) |
PARTY | 投票者 | 党派の自己認識 | 1 (Strong Democrat) 2 (Weak Democrat) 3 (Independent-Democrat) 4 (Independent-Independent) 5 (Independent-Republican) 6 (Weak Republican) 7 (Strong Republican) |
補足として,ゴアは民主党(Democrat)で,ブッシュは共和党(Republican)です.
道徳性とか思いやりとか不誠実さとか,普通に連関がありそうな項目が並んでるんですね…
どうでもいいですが,教育水準は区分がめちゃめちゃ細かいですね(笑)
簡単な要約統計量
せっかくですし,記述統計してみましょう!
要約統計量はsummary()で出せます.
summary(election)
MORALG CARESG
1 Extremely well :423 1 Extremely well :277
2 Quite well :820 2 Quite well :713
3 Not too well :287 3 Not too well :464
4 Not well at all:133 4 Not well at all:232
NA's :122 NA's : 99
KNOWG LEADG
1 Extremely well :461 1 Extremely well :258
2 Quite well :997 2 Quite well :728
3 Not too well :212 3 Not too well :522
4 Not well at all: 59 4 Not well at all:185
NA's : 56 NA's : 92
DISHONG INTELG
1 Extremely well :133 1 Extremely well :494
2 Quite well :312 2 Quite well :995
3 Not too well :629 3 Not too well :182
4 Not well at all:557 4 Not well at all: 65
NA's :154 NA's : 49
MORALB CARESB
1 Extremely well :340 1 Extremely well :155
2 Quite well :841 2 Quite well :625
3 Not too well :330 3 Not too well :562
4 Not well at all: 98 4 Not well at all:342
NA's :176 NA's :101
KNOWB LEADB
1 Extremely well :274 1 Extremely well :266
2 Quite well :933 2 Quite well :842
3 Not too well :379 3 Not too well :407
4 Not well at all:133 4 Not well at all:166
NA's : 66 NA's :104
DISHONB INTELB VOTE3
1 Extremely well : 70 1 Extremely well :329 Min. :1.000
2 Quite well :288 2 Quite well :967 1st Qu.:1.000
3 Not too well :653 3 Not too well :306 Median :1.000
4 Not well at all:574 4 Not well at all:110 Mean :1.534
NA's :200 NA's : 73 3rd Qu.:2.000
Max. :3.000
NA's :625
AGE EDUC GENDER PARTY
Min. :18.00 Min. :1.000 Min. :1.00 Min. :1.000
1st Qu.:34.00 1st Qu.:3.000 1st Qu.:1.00 1st Qu.:2.000
Median :45.00 Median :4.000 Median :2.00 Median :3.000
Mean :47.12 Mean :4.305 Mean :1.56 Mean :3.726
3rd Qu.:58.00 3rd Qu.:6.000 3rd Qu.:2.00 3rd Qu.:6.000
Max. :97.00 Max. :7.000 Max. :2.00 Max. :7.000
NA's :9 NA's :6 NA's :25
グラフ化しましょ
同じ評価項目について,ゴアとブッシュで比較してみましょう.
ソースコードの見苦しさは異常w
par(mfcol=c(6,2))
barplot(table(election$MORALG), main="MORALG", ylab = "count", ylim = c(0,1000))
barplot(table(election$CARESG), main="CARESG", ylab = "count", ylim = c(0,1000))
barplot(table(election$KNOWG), main="KNOWG", ylab = "count", ylim = c(0,1000))
barplot(table(election$LEADG), main="LEADG", ylab = "count", ylim = c(0,1000))
barplot(table(election$DISHONG), main="DISHONG", ylab = "count", ylim = c(0,1000))
barplot(table(election$INTELG), main="INTELG", ylab = "count", ylim = c(0,1000))
barplot(table(election$MORALB), main="MORALB", ylab = "count", ylim = c(0,1000))
barplot(table(election$CARESB), main="CARESB", ylab = "count", ylim = c(0,1000))
barplot(table(election$KNOWB), main="KNOWB", ylab = "count", ylim = c(0,1000))
barplot(table(election$LEADB), main="LEADB", ylab = "count", ylim = c(0,1000))
barplot(table(election$DISHONB), main="DISHONB", ylab = "count", ylim = c(0,1000))
barplot(table(election$INTELB), main="INTELB", ylab = "count", ylim = c(0,1000))
この図1をみると,どの項目も両者で大差ないように見えますね.
しかし,その解釈で終えては,潜在クラス分析になりません!
ここで考えるのです.
このデータは,複数の派閥(クラス)の回答データが混合しているのだと.
例えば,ゴア派とブッシュ派の2つの派閥とか,中立な人も含めた3つの派閥とかです.
すると,ゴア派の人はゴアに肯定的な評価を与え,ブッシュに否定的な評価を与えると予想できます.
逆もまたしかりです.
では次回から,実際に潜在クラス分析をしていきます.
ディスカッション
コメント一覧
まだ、コメントがありません