elsur.jpn.org >

« 読了: Clark & Muthen (2009) 潜在クラスと他の変数との関係を調べる方法 | メイン | 読了:Royston (1993) 電卓でできる Shapiro-Francia 検定 (電卓でやりたいかどうかは別として) »

2012年3月23日 (金)

Abdi, H. (2007) Partial least square regression. in Salkind, N. (ed.) Encyclopedia of Measurement and Statistics. Thousand Oaks, CA: Sage.
 PLS回帰の理屈についてぼんやり考えごとをしていて、なにがなんだかわけがわからなくなってしまったので、頭を整理するために読んだ。

 著者の説明を抜粋すると...

 個体数を$I$, $K$個の従属変数の行列を $Y$, $J$個の独立変数の行列を$X$とする。まず
 $X = T P'$
と分解する。ここで$T$の列は直交。$T$が得点行列、$P$が負荷行列である。で、
 $\hat{Y} = T B C'$
とする。$B$は対角行列で、この対角成分を回帰ウェイトという。また、$C$を$Y$のウェイト行列という。
 さて、上記を満たす$T$は無数にあるが、PLS回帰では、正規化されたベクトル$w, c$について、$t = X w, u=Y c$としたときの$t' u$が最大になるようにする。ここで$t$と$u$を第1潜在ベクトルという。で、$X, Y$のそれぞれから第1潜在ベクトルを取り除く。これを繰り返して、第2,3,...の潜在ベクトルを求めていく。
 具体的なアルゴリズムは次の通り。
  1. $X, Y$を標準化し$E, F$とする。
  2. 乱数ベクトル$u$を用意し、
    • Step 1. $E' u$を求め、これを分散1に基準化して$w$ とする。これが$X$のウェイト。
    • Step 2. $E w$を求め、これを基準化して$t$とする。これが$X$の得点。
    • Step 3. $F' t$を求め、これを基準化して$c$とする。これが$Y$のウェイト。
    • Step 4. $u = Fc$を求める。これが$Y$の得点。これを$t$が収束するまで反復する。
  3. スカラー$b = t' u$、$X$の負荷$p = E't$を求める。
  4. $E - t p'$を新しい$E$に、$F - b t c'$を新しい$F$にする。
ベクトル$t, p, c$を行列$T, P, C$に格納し、$b$を行列$B$の対角成分に格納する。$X$の平方和のうちこの潜在ベクトルで説明できているのが$p'p$であり、$Y$の平方和のうちこの潜在ベクトルで説明できているのが$b^2$である。以上を$E$が空になるまで繰り返す。

 ここでは反復計算で説明されているけれど(NIPALSアルゴリズムという奴だろう)、ウェイト$w, c$を$X'Y$の特異値分解で説明することもできる。$w$はひとつめの左特異ベクトル、$c$はひとつめの右特異ベクトルのことだと思うのだが... 論文中の説明では左右が逆になっている。なんでだろう。

ちなみに、先日読んだMevik & Wehrens (2007)の説明はこうだ。

  1. $X, Y$を標準化し$E, F$とする(標準化しなくてもよい)。
  2. $X'Y$を特異値分解し、ひとつめの左特異ベクトルを$w$, ひとつめの右特異ベクトルを$q$とする。これで$E$と$F$をそれぞれ重みづける: $t=Ew, u=Fq$。これが$X$と$Y$の得点。ここで$t, u$を分散1に基準化してもよい。
  3. $X$の負荷$p = E't$, $Y$の負荷$q =F't$を求める。
  4. $E - t p'$を新しい$E$に、$F - t q'$を新しい$F$にする。
ベクトル$w, t, p, q$をそれぞれ行列$W, T, P, Q$に格納する。以上を繰り返す。

記号の使い方が微妙に異なる。だいたいなんで$q$が二回出てくるんだ。頭が痛いよう。

 ついでに調べたら、SAS 9.3 User's Guideでの説明はこんな感じ。

 標準化ずみのデータ行列$X_0, Y_0$について、$X_0$の線形結合$t =X_0 w$を考える。ここで$t$を得点ベクトル、$w$をウェイトベクトルという。この$t$で$X_0, Y_0$を説明する回帰モデルを考える:
 $\hat{X_0} = t p'$
 $\hat{Y_0} = t c'$
ここでベクトル $p, c$をそれぞれ$X$の負荷、$Y$の負荷という。
 $p'=(t't)^{-1} t' X_0$
 $c'=(t't)^{-1}t' Y_0$
となる。
 さて、$t$は次のようにして決める。反応のなんらかの線形結合$u = Y_0 q$に対し、共分散$t'u$が最大になるようにする。これは、$X$のウェイト$w$と、$Y$のウェイト$q$を、共分散行列$X'_0 Y_0$のひとつめの左特異ベクトルとひとつめの右特異ベクトルに比例させるということでもある。

SASのマニュアルは時として、素人を殺す気じゃないかというくらいに難しく書いてあるのだが、これは案外わかりやすいなあ。

 自分なりに整理すると...$X, Y$を標準化済みデータ行列とする。$X$をXウェイトで線形結合してX得点, $Y$をXウェイトで線形結合してY得点をつくる。XウェイトとYウェイトは、$X$と$Y$の共分散行列の左特異値ベクトルと右特異値ベクトルで、そうするとX得点とY得点の共分散が最大になる。さて、X得点を説明変数、$X$を目的変数にした回帰式の係数がX負荷。X得点を説明変数、(Y得点をすっ飛ばして)$Y$を目的変数にした回帰式の係数がY負荷

論文:データ解析(-2014) - 読了:Abdi (2007) PLS回帰