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

対数線形分析

機械学習 には、手法の分類する時に、 教師ありと教師なしの学習 という2つに分けることがあります。

対数線形分析は、この分け方だと「教師なし」になるのですが、実行する時には、 一般化線形モデル という、「教師あり」の方法を計算の中に含むことになります。 こういった点もあり、対数線形分析は特殊な手法ですが、この特徴があるので、他の手法ではできない分析ができます。

対数線形分析とは

実験データの解析 を知っているのなら、 対数線形分析は、 回帰分析 のように理解するよりも、 分散分析 として理解する方が、わかりやすいように思っています。 いわゆる分散分析との違いは、頻度(計数値、カウントデータ)に当てはまりを良くするために、対数を使う点と、ポアソン分布を使う点です。

ロジスティック回帰分析 は、計算の中で対数を使う 回帰分析 です。 筆者は、対数線形分析を初めて聞いた時に、名前から、「 ロジスティック回帰分析 と同じか、似たようなもの」と思ったのですが、この理解は間違いでした。 たしかに対数も回帰分析も使いますが、使い方が違います。

下記に対数線形分析の2つの使い道がありますが、この2つの使い道という点では、対数線形分析は、 独立性の検定 と仲間になります。 独立性の検定 との違いは、3つ以上の変数の分析でもスマートにできるところになります。

対数線形分析の使い道

対数線形分析の使い道は、大きく2つに分かれます。 分割表 のデータのモデル化の使い方としての使い方と、 変数の仲間分けの分析 になります。

分割表のデータのモデル化

分割表 のデータは、棒グラフにしたりして、分析することが多いと思います。

分割表の値の決まり方の背後に数式があれば、対数線形分析でこの数式を導ける場合があります。

変数の仲間分けの分析

相関係数を使って、 多変量データの相関分析 をする方法は、量的変数だけのデータに使いますが、 質的変数だけの時の方法として、対数線形分析が使えます。

変数の仲間分けの分析として使う時は、 質的変数が並んでいるデータセットを 分割表 のデータセットに集計する作業が前処理になります。

個々のカテゴリの仲間分けの分析としての使い道

対数線形分析の結果を見ると、個々のカテゴリの関係について有意かどうかの結果も出ているので、 個々のカテゴリの仲間分けの分析 としても使えそうな気がします。

しかし、 多重共線性 を避けるためにダミー変数の組み合わせで計算の中に使われないものがあるので、 個々のカテゴリの関係を見る方法としてこの結果を使うと、見逃しが起きる可能性があります。

個々のカテゴリの関係を見る方法としての使い道は、うまい方法があるかもしれませんが、まだ、筆者にはわからないでいます。

対数線形分析のデータ

分割表 は、 クロス集計 のようにして作られることが多いと思います。 行と列に、カテゴリの名前が入っています。

クロス集計 では、行側と列側にどの変数を配置するかで、様々なパターンで集計ができます。 対数線形分析では、下記の実施例にあるように、頻度の数字が縦一列に並ぶようなパターンの集計を使います。 つまり、行側だけにすべての変数を配置します。

どのような形のデータでも、前処理をして、このパターンに変換する必要があります。

対数線形分析の数式

対数線形分析の学問的に正確な定義と数式について、筆者はよくわかっていないのですが、 ネットで見る限りでは、頻度の数字が縦一列に並んでいる分割表に対して、 一般化線形モデル を使う方法が紹介されていることが一般的なようです。 そのため、このページでも、筆者の作ったソフトでも、この方法を対数線形分析(Log linear model)としています。

分割表で、頻度の数字が並んでいる列が目的変数になり、それ以外の列が説明変数になります。 説明変数は質的変数ですが、 ダミー変換 して量的変数に変換することで、一般化線形モデルが使えるようになります。 なお、Rの一般化線形モデルでは、説明変数に質的変数が含まれていると、ダミー変換は自動的に行われます。

よく知られた 重回帰分析 ではなく、 一般化線形モデル を使うのは、誤差関数にポアソン分布仮定するのと、リンク関数に対数を使うためです。

また、一般的な 重回帰分析 は、各変数の線形和を使う1次モデルが使われることが多いですが、 対数線形析では、交互作用を見るため、各変数の積の項も含む二次モデルを使います。 「交互作用項が有意になる変数の組み合わせが、相関の高い変数の組み合わせ」と考えて、 変数の組み合わせを調べます。

交互作用項が有意にならない場合は、変数の組合せの効果は、数値の大きさに関係していないことになります。 単独の変数の効果だけか、変数のカテゴリとは関係なく数値の大きさが決まっている、という意味になってきます。

冒頭の話に戻ると、このような方法を使うため、「教師なし」なのに、「教師あり」の方法を使っています。

Rの実施例

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値は小さく、交互作用項の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列になっている形式の分割表にする必要があります。

「0」をちゃんと含むことができて、頻度のデータが1列になる分割表をRで作って、対数線形分析に使う方法は、 Rによる変数の類似度の分析 のページにあります。

R-EDA1の場合

R-EDA1 では、 行と列に項目名が配置されている 分割表 データのモデル化と、 変数の仲間分けの分析 の2つの使い道が、両方ともできるようになっています。

分割表のデータのモデル化

分割表のデータのモデル化は、 「Two_way_GLM」で、 「poisson_log」を選ぶとできます。 ちなみに、「gaussian_identity」を選ぶと、頻度のデータではない場合のモデル化で、数量化T類になります。
Log linear data Log linear model in R-EDA1

変数の仲間分けの分析

分割表に集計されていない質的変数のデータを使う場合は、やり方が2つあります。 「Method」で「Log_Linear」を選ぶと、データセットの全部の変数をスタートにして、モデルの探索が始まります。 「Stratifeid_graph」を選んで、「Graph type」を「bar」にすると、グラフの作成に選んだ変数をスタートにして、モデルの探索が始まります。

この機能の場合、量的変数が混ざっていると、 量的変数は 1次元クラスタリング をして質的変数として扱われます。 また、この例は、2変数ですが、3変数以上でもできます。
Log linear data Log linear model in R-EDA1 Log linear model in R-EDA1

縦一列に数値が入っている分割表のデータのモデル化

縦一列に数値が入っている分割表からスタートする場合は、一般化線形混合モデル(GLMM)の機能を選ぶとできます。 例の場合は、3列目に数値が入っているので、「3」を指定する必要があります。 この形の分割表になっていると、3変数以上でもできます。
Log linear data Log linear model in R-EDA1



参考文献

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


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


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


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


順路 次は 因子分析

Tweet データサイエンス教室