ほくそ笑む

R言語と統計解析について

統計解析でよく使われる言葉「Qモード」「Rモード」とは何を指すのか

主成分分析のQモードとRモードの違いについて調べていたんですが、ネット上にほとんど情報を見つけられませんでした。
クラスター分析とか相関係数にもQモードとRモードがあるみたいで、統計では結構一般的に使われている言葉みたいなのですが、これだけ日本語情報が少ないとなるとちょっと困りますね。
統計言語Rのメーリングリストにちょうど次のような質問が寄せられていたので、一部翻訳してみました。

こんにちは。
どなたか主成分分析のQモードとRモードの違いについて教えていただけないでしょうか。
それぞれ prcomp() と princomp() 関数に対応しているようなのですが。
by Lívio Cipriano

こんにちは Livio、
prcomp のヘルプファイルにはこんなことが載ってるよ:

この計算はデータ行列の特異値分解によって行われます。共分散行列の固有値は使用されません。これは一般的に、結果の計算誤差を減らすのに好ましい方法と言えます。

princomp のヘルプファイルにはこう書いてる:

princomp は、変数の特徴を抽出する、いわゆるRモードPCAにのみ対応しています。
データ行列が与えられたとき、少なくとも変数と同じ数のサンプルが必要です。


この R と Q という用語はレイモンド・キャッテルという心理学者が彼の「データボックス」の議論の中で導入したものなんだ。
データボックスというのは、データを3つの次元(サンプル、変数、時間)から考えるもので、それによってデータを6つの違った方向から分析できるようになる。*1
典型的なデータ行列というのは、観測値(サンプル)が行で、変数が列だよね。
そしてさらに典型的には列数よりは行数のほうが多い(行数>>列数)。
もし変数の複雑さを軽減した構造を見つけたい*2んだったら普通に変数の解析をすればいい。これがRモードだ。
一方、データ行列の転置行列を解析にかけることもできる。これがQモードだ。
この場合、データ行列の行方向の複雑さを軽減することになるよね。


もし、特異値分解を使って主成分分析を行う場合(prcomp)、RモードかQモードかは特には問題にならない。
だけど、共分散行列に基づく princomp で行う場合にはそれが問題になる。


いま、データ行列の次元が  n\time v だったとする( v 個の変数について、n 個の観測値がある)
Rモード解析に princomp を使った場合、共分散行列  C の次元は  v\times v、ランクは  nv の小さいほうになるよね。
一方、Qモード解析に princomp を使った場合、共分散行列  C* の次元は  n\times n、ランクはRモードのときと同じく  n v の小さいほうになる。


つまり、行数が列数より大きいとき( n > v)*3、転置行列の共分散行列  C* の次元は  n\times n になるのに、ランクは列数 v のままなんだ。*4 *5


まとめると、Qモード解析は変数に対するサンプルの類似パターンを見つける手法、Rモード解析はサンプルに対する変数の類似性を見つける手法ってことだよ。
さらに一般的には時間方向に拡張されて・・・。(略)まあ、これは君が知りたいことを超えているよね。
by Bill

今日のわかった

  • Rモード、Qモードという用語は、イギリスの心理学者レイモンド・キャッテルが導入した。*6
  • 通常、多変量解析をする場合、サンプルに対する変数の解析を行う。これがRモード解析。
  • 一方、変数に対してサンプルの解析を行うことをQモード解析という。普通はデータ行列を転置して入力することで、Rモード解析の手法がそのまま使える。
  • 統計言語 R で主成分分析をやりたいときは、とりあえず prcomp() 関数使っとけばOK。

*1:サンプルvs変数、サンプルvs時間、変数vsサンプル、変数vs時間、時間vsサンプル、時間vs変数の6つ

*2:変数の次元を削減したいとか

*3:すなわち、典型的なデータ行列のとき

*4:したがって、固有値および固有ベクトルが v 個しか求まらない

*5:princomp はこの場合、エラーを出して停止する

*6:レイモンド・キャッテルさんについてもっと知りたい人は http://www.personality-project.org/revelle/publications/revelle.bjp.pdf 参照