Rによるデータ分析

Rによる対数線形分析

対数線形分析 のRによる実施例です。 ここでの対数線形分析は、対数線形分析のライブラリがあって、それを使っているのではなく、 一般化線形モデル のライブラリのglmを使っています。

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による変数の類似度の分析 のページにあります。





Tweet データサイエンス教室