平均相関(対角を除く)が0.3である場合、Rのランダム相関マトリックスを1000 * 1000に生成したいと考えています。平均相関がランダムな相関行列を生成する
私はlibrary clusterGenerationからgenPositiveDefMat
を見ましたが、特定の相関関係を指定する方法を理解できませんでした。
平均相関(対角を除く)が0.3である場合、Rのランダム相関マトリックスを1000 * 1000に生成したいと考えています。平均相関がランダムな相関行列を生成する
私はlibrary clusterGenerationからgenPositiveDefMat
を見ましたが、特定の相関関係を指定する方法を理解できませんでした。
そのようなマトリックスの退屈な例は、私はすべてのものであり、m = 0.3のベクトル恒等行列、Uある
C = (1-m)*I + m*U*U'
あろう。 Cは正定値であり、平均(実際にはすべての)非対角要素はmです。
だから我々は、フォームDは対角と正定値
C = D + alpha*U*U'
の行列を生成しようとすることができ、「ランダム」ベクトル正スケーラーとUをアルファです。このような行列は正定値となる。これはオフ対角要素の正しい平均値を有するようにするために少し代数は
S = Sum{ i | U[i] }
T = Sum{ i | U[i]*U[i]}
限りUのすべての要素が正であるように、我々は
S*S>T
を有するであろう
alpha = dim*(dim-1)*m/(S*S-T)
を示します
ですから、アルファは正の値になります。 Cの対角要素が1.0であるためには
、我々は
D[i] = 1 - alpha*U[i]*U[i] (i=1..dim)
を必要とし、これらのすべてが非負でなければなりません。
私は、これを保証するためにUの要素がどのように選択されるべきかを理論的に見つけることができませんでした。実験的には、Uの要素が1.0〜5.0の一様乱数であれば、D [i]のいずれかが負の場合は見られません。
上記のUの要素の上限は、さまざまな相関がどのように異なるかを制御します。 5.0では、それらは約0.03と0.8の間で変化し、上限は2.0で、それらは約0.13と0.53の間で変化する。 上限をあまりに大きくすると、メソッドが失敗する可能性が高くなります(正の値ではありません)。
ペアワイズ相関が平均0.3であることがわかっている場合は、平均0.3で0と1の間の数値を生成し、このようにして行列を埋めるのはなぜですか? – adaien
相関が-1と1の間にありますが、相関行列を直接埋めると、ランダムが機能しないことがあります。あなたは確かな確かさをチェックする必要があります。 – karakfa
はい、いい点です – adaien