トップページ | ひとつ上のページ | 目次ページ | このサイトについて | ENGLISH

対数線形分析

対数線形分析は、質的変数について、 変数の仲間分けの分析 をするための方法です。 用途は 独立性の検定 と似ていますが、こちらは、3つ以上の変数の分析でもスマートにできるところが魅力です。

名前の中に「対数」と「回帰分析」とあり、これだけだと ロジスティック回帰分析 に近いもののように見えますが、 ロジスティック回帰分析 の用途は パターン認識 なので、対数線形分析とは違っています。

対数線形分析のデータ

対数線形分析が対象とするのは、 分割表 のデータです。

対数線形分析は、分割表にある度数(発生数)のデータのモデル式を作るために使われます。

見た目は、 重回帰分析数量化T類 の式ですが、目的変数は、度数の対数をとったものになります。 対数にする理由ですが、結果的にデータの当てはまりが良いからではなく、 期待度数の計算式に積があることから、これを和の式にするために対数が使われています。

分割表の縦の項目、横の項目の他に、それらの交互作用も考慮したモデルを仮定します。 交互作用の大きさも評価する点が特徴です。

対数線形分析とは

実験データの解析 を知っているのなら、 対数線形分析は、 重回帰分析 のように理解するよりも、度数の対数についての 分散分析 として理解する方が、わかりやすいように思っています。

対数線形分析の使い道

対数線形分析の使い道ですが、「2次の交互作用項が有意になる変数の組み合わせが、相関の高い変数の組み合わせ」と考えて、 変数の組み合わせを調べます。

グラフィカルモデリング の理論とする話が下記の文献にありました。

Rの実施例

一般化線形モデル のglmは、質的変数は自動的に ダミー変換 してモデルに組み入れますし、 Yを対数にすることもできるので、対数線形分析に使えます。

2元分割表の飽和モデル

この例では、Cドライブの「Rtest」というフォルダに、 「Data.csv」という名前で分割表になっているデータが入っている事を想定しています。

質的変数が2つある場合です。

library(MASS) # 作業用ディレクトリを変更
setwd("C:/Rtest")
# 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
gm <- glm(Y~X1*X2, data=Data,family=poisson)
# 対数線形分析
summary(gm)
# 結果の出力

4通りのデータとsummaryの中の結果を並べると、どのような分析がされたのかがわかりやすいようです。 まず、1番ですが、値に差があまりない場合は、どの変数もP値が大きいです。
2番は、X1には無関係に値が決まっているのでX1のP値が大きく、X2のP値が小さくなっています。。
3番は、交互作用が強い場合で、交互作用項X1:X2のP値が小さくなっています。この場合が、2つの変数の相関が強い場合です。
4番は、交互作用がまったくない場合で、X1とX2のP値は小さく、交互作用項は大きくなっています。
1loglm, 2loglm, 3loglm, 4loglm,

3元分割表の飽和モデル

質的変数が3つある場合です。

library(MASS) # 作業用ディレクトリを変更
setwd("C:/Rtest")
# 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
gm <- glm(Y~X1*X2*X3, data=Data,family=poisson)
# 対数線形分析
summary(gm)
# 結果の出力

飽和モデルを仮定したので、すべての変数の組み合わせが評価されましたが、P値が大きい変数がかなりあります。 この場合は、「相関が高い変数の組み合わせはない」、と言えます。
loglm

3元分割表の変数を選択したモデル

gm <- glm(Y~X1+X2, data=Data,family=poisson) # 対数線形分析
summary(gm)
# 結果の出力

モデルがすっきりしました。AICも小さくなったので、この方が良いモデルと言えます。
loglm

glmに限ったことではないですが、「*」を使うと交互作用項が入ったモデルが作れます。 例えば、「X3+X1*X2」、各変数の単体の項と、X1とX2の交互作用項が入ったモデルになります。

3元分割表の変数の自動選択

3変数で、各変数のカテゴリが2つずつくらいなら、飽和モデルを作ってから、変数の選択をすることもできますが、 それ以上になってくると、かなり大変です。 「step」を付けると、飽和モデルからの選択が自動的に進みます。

gm <- step(glm(Y~X1*X2*X3, data=Data,family=poisson)) # 対数線形分析
summary(gm)
# 結果の出力

この場合は、上記で変数を選択したモデルと同じ結果に行き着きます。

入力データの注意

入力データの分割表が、すべてのカテゴリの組み合わせを含んでいないと思ったような結果になりません。 該当しない組み合わせについては「0」という頻度になっている分割表にする必要があります。

また、一般的な分割表は、行と列に変数を振り分けますが、上記のようにglmを使って対数線形分析をする時は、 頻度のデータが1列になっている形式の分割表にする必要があります。 筆者はこのような分割表をRでスマートに作る方法がわからないので、 Excelのピボットテーブルで作ったものを入力データにしてこのページの実施例の実験をしています。

広義の数量化V類との比較

下のようなデータがあります。 変数はAからFまでの6列です。 それぞれの変数は、2つのカテゴリがあります。 A、B、Cの3つは似ています。 D、Eの2つも似ています。 Fはどれとも似ていません。
loglm

このデータについて、分割表を作ってから、「3元分割表の変数の自動選択」の
Y~X1*X2*X3

Y~A*B*C*D*E*F
に変えて計算した結果が下記になります。
AとB、AとC、DとEの交互作用項がありますので、思っていたような結果になりました。
loglm

同じデータについて、 広義の数量化V類 で分析した結果が下の図になります。 A、B、Cのカテゴリのグループが左右に2つあり、 D、Eのカテゴリのグループが上下に2つあり、 Fのカテゴリが中央付近にあります。
loglm

変数の仲間分けの分析 として考えると、対数線形分析では直接的にその結果が出ています。 広義の数量化V類 も図を見れば、この例なら同じ考察ができます。 しかし、グループが3つ以上になると、ひとつの散布図でこういった考察をするのは難しくなると思いますので、 変数の仲間分けの分析 としては、 広義の数量化V類 は限界があります。

逆に 個々のカテゴリの仲間分けの分析 としては、対数線形分析には限界があります。 多重共線性 を避けるためにダミー変数の組み合わせで計算の中に使われないものがあるので、計算結果を見ても、 個々のカテゴリの仲間分けの情報としては不足があるためです。



参考文献

質的情報の多変量解析」 松田紀之 著 朝倉書店 1988
対数線形モデルの本です。 1次元から始まり、最後は潜在クラス分析になっています。


グラフィカルモデリング」 宮川雅巳 著 朝倉書店 1997
数量化V類 では、複数の質的変数の絡みが考慮できないとして、それが考慮できる方法として対数線形モデルを挙げています。 そして、質的変数の グラフィカルモデリング の理論にしています。


分割表の統計解析 二元表から多元表まで」 宮川雅巳・青木敏 著 朝倉書店 2018
同著者の上記の本から、さらに多元分割表からの相関分析の方法を研究した内容になっています。


同志社大学 金明哲先生のページ
Rと対応分析 https://www1.doshisha.ac.jp/~mjin/R/49/49.html


順路 次は 因子分析

Tweet データサイエンス教室