グラフィカルラッソ(Graphical Lasso)は、 スパースモデリング の考えを取り入れた 多変量データの相関分析 の一種です。 GGM(グラフィカル・ガウシアン・モデル)とも呼ばれます。 相関係数 のような変数間の関係の強さを表す尺度で、 ネットワーク分析 をする方法です。
尺度を計算する時に、「関係ない」と考える変数間は、この尺度を0にしてしまいます。 こうすると、シンプルな形で考察を進めることができます。
グラフィカルラッソのアイディアは、比較的古い文献でも出てきます。
その中では、「グラフィカルモデリング」という名前になっています。
古い文献の中での、グラフィカルモデリングでは
「変数間の偏相関係数を計算 --> 値が比較的小さい変数間は、その値を0とみなす --> 他の変数間について、再び偏相関係数を計算」
という作業を繰り返すことで、モデリングします。
このアルゴリズムには、 偏相関行列 を計算するには、相関係数行列の逆行列が計算できる必要があったので、 根本的な弱点がありました。
グラフィカルラッソは、別の尺度や別のアルゴリズムで、古い文献のグラフィカルモデリングでやろうとしていたことを実現しています。
グラフィカルラッソでわかることは、相関係数ではなく偏相関係数でわかることにもなっています。
例えば、SとTという変数があって、これらは独立しているとします。 さらに、X1とX2という変数があって、いずれも「S+T」という式で近似できるとします。
この時、X1とX2の相関係数はとても高くなります。 一方、偏相関係数を計算すると、X1とS、X1とT、X2とS、X2とTに比べて、X1とX2の偏相関係数は低くなります。
相関係数だけで因果関係の分析をしていると、真っ先に、X1とX2の因果関係に注目したくなりますが、 偏相関係数で分析すると、因果関係として注目した方が良いのは、X1とX2の関係ではなく、X1とS、X1とT、X2とS、X2とTであることがわかります。
データをグラフ(散布図)にしただけだと、相関係数の高いものに注目しがちですが、 偏相関係数を使うと、変数に 線形和 の関係がある時に、これを見つけられるようになります。
なお、線形和以外の関係がある時には、偏相関係数では見つけられません。 この点には注意が必要です。 複数の要因が関係しているとしても、線形和が成り立っていないことは、あり得ます。
一番簡単にグラフィカルラッソを試せるソフトは、 R-EDA1 と思います。
Rによる変数の類似度の分析 のページには、R-EDA1で使われているコードと、ほぼ同じコードがあります。
グラフィカルラッソのプログラムでは、RHOの値の大きさで、 スパース性が変わります。 つまり、どのくらいのパスが0になるのかが決まります。
R-EDA1 では、自分で目盛りを調整して、分析できるようにしてあります。
RHOとパスの数を調べるためのプログラムを作ってみたのが、下記になります。
サンプルデータ
の場合は、下のようなグラフができます。
横軸は常用対数にしています。
log10(1)が0以上、つまり、RHOが1以上だと、パスが0になることがわかります。
library(glasso) #事前にパッケージ「glasso」をインストールしないと、エラーになる
setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.table("Data.csv", header=T, sep=",") # データを読み込み
DataM <- as.matrix(Data) # テーブルデータを行列にする
COR <- cor(DataM) # 相関係数行列(標準化した共分散行列)を計算
x <- matrix(1:600, nrow=200, ncol=3) # 出力結果の入れ物を作る
for(i in 1:200){ # 200回繰り返す
RHO <- 1.1^(i-100) # iを使って段階的にRHOの値を作る
GM1 <- glasso(COR,RHO)$wi # GMを実施
diag(GM1) <- 0 # 対角成分は0にする
GM2 <- abs(GM1) # 絶対値にする
GM2max <- max(GM2) # 要素の最大値を求める
GM2max[GM2max==0] <- 1 # 最大値が0の場合、1にする(この値を分母に使うため)
GM3 <- log10(GM2/GM2max*1000)*3 # 一番大きな値が9になるように修正(パスの太さを指定するため)
GM3[GM3==-Inf] <- 0 # 0の要素は、-Inf に変換されているので0にする
GM3[GM3<0] <- 0 # 対数がマイナスになった値は0にする
GM3[GM3>0] <- 1 # 値が0よりも大きければ1にする(この後で数えるため)
x[i,1] <- RHO # RHO
x[i,2] <- log10(RHO) # RHOを常用対数にする(グラフのX軸に使う)
x[i,3] <- ceiling(sum(GM3)/2) # 値の入っている要素は1なので、この数の和がパスの数になる。2つの方向があるので2で割る
} # ここまでを繰り返す
write.csv(x, file = "RHO.csv") # 結果をファイルに出力
plot(x[,2],x[,3],xlab="log10(RHO)",ylab="パスの数",type="o",panel.first=grid()) # グラフを作成
「岩波データサイエンス Vol.5 スパースモデリングと多変量データ解析」 岩波データサイエンス刊行委員会 編 岩波書店 2017
スパースモデリング
の歴史的な位置付けの話が詳しいです。
GGM(グラフィカル・ガウシアン・モデル)という名前で、グラフィカルラッソが紹介されています。
変数の関係を表す方法はいくつかあるが、Rのグラフィカルラッソは偏相関係数を使うそうです。
「ProVision No.78」 日本アイ・ビー・エム 2010
「スパース構造学習によるセンサー・データの変化点検出と異常解析」という題名で井手剛氏の記事があります。
時間軸上で、範囲を区切って、相関関係の
ネットワーク
構造の変化を見ていき、相関関係の変化の仕方から
異常状態を予測する方法
が紹介されています。
データ全体の相関関係を見るのではなく、範囲の相関関係の違いを見るのが、この方法のポイントです。
「グラフィカルモデリング」 宮川雅巳 著 朝倉書店 1997
上記のグラフィカルモデリングの説明は、この本でいうところの量的データのグラフィカルモデリングです。
変数の群に順序が付く場合の計算もあります。
偏相関
の考え方による条件付き独立の解析は、「
層別
して
相関
を解析する」という形で説明されています。
この議論からグラフィカルモデリングにつながっています。
3変数以上の「絡み」を探る手段は、量的データには偏相関行列、
質的データには対数線形モデル(生起確率の対数をYにした、交互作用項を含む線形モデル)。
量的・質的が混在の場合は、量的変数をカテゴライズするのが一案。
「Excelで学ぶ共分散構造分析とグラフィカルモデリング Excel2013/2010/2007対応版」 小島隆矢・山本将史 著 オーム社 2013
この本では、従来のパス解析を「古典的パス解析」と呼んでいます。
共分散構造分析とグラフィカルモデリングを一冊の中で解説し、
入門書レベルでそれらの連携の試みまで述べ、
ソフトまで用意してあるという点で、すごさを感じます。
ソフトは、ネットからダウンロードできるようにしていました。
「多変量解析法入門」 永田靖・棟近雅彦 共著 サイエンス社
パス解析とグラフィカルモデリングについて、
数ページでコンパクトにまとまっています。
「環境と健康データ」 柳川堯 著 共立出版 2002
汚染が複合している時の、
化学物質リスク
の評価方法として、グラフィカルモデリングが紹介されています。
順路
次は
LiNGAM