与えられた標準偏差で、ほぼ正規分布の非対角要素を持つランダム相関行列を生成する方法


11

非対角要素の分布がほぼ通常のように見えるように、ランダム相関行列を生成したいと思います。どうすればできますか?

動機はこれです。時系列データのセットの、相関分布は通常、非常によく似ています。多くの「通常の」相関行列を生成して、一般的な状況を表し、それらを使用してリスク数を計算したいと思います。n


私は1つの方法を知っていますが、結果として得られる(非対角要素の分布の)標準偏差が小さすぎます。行列均一または通常のランダムな行を生成し、行を標準化します(平均を減算します。標準偏差で除算)、サンプル相関行列は通常、対角線上にないエントリを配布します[ コメントの後に更新:標準偏差は ]。X 1nXN-1/21n1XXn1/2

標準偏差を制御できるより良い方法を誰かが提案できますか?


1
@リチャード、質問ありがとう。残念ながら、上記の方法では、通常は配布されるエントリ作成されません。対角線は確率1で1であり、非対角線はからです。これで、再スケーリングされたエントリは、ゼロを中心とする正規分布に漸近的に収束します。実際に解決しようとしている問題について詳しく教えていただけますか?そして、なぜ対角線から「正規分布」したいのですか?+ 11+1
枢機卿

1
@Richard、つまり、とが2つの独立したベクトルで、それぞれのエントリがiid標準法線であるとします。計算。つまり、と間のサンプル相関です。次に、は、標準正規確率変数に分布で収束します。「再スケーリング」とは、非縮退制限分布を取得するために必要なによる乗算を意味しました。Y = Y 1Y 2... Y Nρ N = S XのY /S X 、S YX Y N 1 / 2 ρ N 、N 1 / 2X=(X1,X2,,Xn)Y=(Y1,Y2,,Yn)ρ^n=sxy/(sxsy)XYn1/2ρ^nn1/2
枢機卿

1
@リチャード、「問題」の本質は、(a)各行のノルムが1であること、および(b)エントリがランダムなサンプルから生成されることの2つの制限を行うことにより、必然的に相関を強制することです。小さな(の順に理由は、あなたが行の間の任意の大きさの相関関係を有し、依然として多くの独立のでの存在下で1となるように各列のノルムを得ることができないということである。。n1/2
カーディナル

1
...今、あなたは、によって大きさが大きな相関を得ることができます最初の再正規化の前に自分たちの中で行を関連付けます。ただし、使用するパラメーターは基本的に1つだけなので、漸近平均と分散の両方がそのパラメーターに関連付けられます。だから、おそらくそれはあなたが望むように見える柔軟性も与えないでしょう。
枢機卿

1
もちろん、簡単なケースを取り上げましょう。生成行列呼び出します。これは、一般性を失うことなくと仮定します。ここで、のをiid ベクトルとして生成し、各ベクトルの要素が相関と等相関の標準正規確率変数になるようにします。今、あなたがしてきた手順を使用してください。がの番目と番目の*行*の間のサンプル相関を示すとしましょう。次に、固定されたに対して、、Xm×nXρρ^ijijXmnn1/2(ρ^ijρ)確率変数に分布で収束します。N(0,(1ρ2)2)
枢機卿

回答:


5

私はまず次善の答えであると私が信じるものを提供しました。したがって、私はより良い提案から始めるために私の回答を編集しました。


つる法を使用して

このスレッドでは:ランダムな正定値相関行列を効率的に生成する方法は?-ランダム相関行列を生成する2つの効率的なアルゴリズムのコードを説明して提供しました。どちらもLewandowski、Kurowicka、およびJoe(2009)による論文からのものです。

多くの図とmatlabコードについては、私の回答をご覧ください。ここでは、vineメソッドは、部分相関(「partial」という単語に注意)の分布を持つランダム相関行列を生成でき、非対角値が大きい相関行列を生成するために使用できると言いたいだけです。そのスレッドからの関連する図は次のとおりです。

つる法

サブプロット間で変化する唯一のものは、偏相関の分布が周りに集中する度合いを制御する1つのパラメーターです。OPが対角線外のほぼ正規分布を求めていたため、非対角線要素のヒストグラムを使用したプロットは次のとおりです(上記と同じ行列の場合)。±1

非対角要素

この分布は合理的に「正規」であり、標準偏差が次第に増加していることがわかります。アルゴリズムが非常に速いことを付け加えておきます。詳細はリンク先のスレッドをご覧ください。


私の元の答え

メソッドを直接変更することでうまくいく場合あります(ディストリビューションを正規にどれだけ近づけるかに応じて)。この回答は、上記の@cardinalのコメントと、自分の質問に対する@psarkaの回答に触発されました。強い相関が存在する大きなフルランクのランダム相関行列を生成する方法は?

トリックは、サンプルを相関させることです(機能ではなくサンプル)。ここでの例を示します。私は、ランダムマトリックスを生成するのサイズ(標準正規からすべての要素)、およびその後の乱数を追加各行に、のために。ため、相関行列(機能を標準化した後)は、約通常、標準偏差、分散、非対角要素を有することになる。以下のためのX 1000年× 100 [ - / 2 / 2 ] 、A = 0 1 2 5 、A = 0 XX 1 / XX1000×100[a/2,a/2]a=0,1,2,5a=0XX、A>0、A=01251/1000a>0、変数をせずに相関行列を計算し(これにより、挿入された相関が保持されます)、非対角要素の標準偏差は、この図に示すようにとともに増加します(行は対応し)。aa=0,1,2,5

ランダム相関行列

これらすべての行列はもちろん正定です。これがMATLABコードです:

offsets = [0 1 2 5];
n = 1000;
p = 100;

rng(42) %// random seed

figure
for offset = 1:length(offsets)
    X = randn(n,p);
    for i=1:p
        X(:,i) = X(:,i) + (rand-0.5) * offsets(offset);
    end
    C = 1/(n-1)*transpose(X)*X; %// covariance matrix (non-centred!)

    %// convert to correlation
    d = diag(C);
    C = diag(1./sqrt(d))*C*diag(1./sqrt(d));

    %// displaying C
    subplot(length(offsets),3,(offset-1)*3+1)
    imagesc(C, [-1 1])

    %// histogram of the off-diagonal elements
    subplot(length(offsets),3,(offset-1)*3+2)
    offd = C(logical(ones(size(C))-eye(size(C))));
    hist(offd)
    xlim([-1 1])

    %// QQ-plot to check the normality
    subplot(length(offsets),3,(offset-1)*3+3)
    qqplot(offd)

    %// eigenvalues
    eigv = eig(C);
    display([num2str(min(eigv),2) ' ... ' num2str(max(eigv),2)])
end

このコードの出力(最小および最大の固有値)は次のとおりです。

0.51 ... 1.7
0.44 ... 8.6
0.32 ... 22
0.1 ... 48

プロットと一緒にこのメソッドを使用して取得した最小の固有値の値をプロットできますか?
user603 2014年

1
図を変更せずに、最小の固有値がそれぞれ0.5、0.4、0.3、0.1であることをここに書くことができます(図の各行)。最大のものは1.7〜48から成長
アメーバが復活モニカ言う

しかし、これらは相関行列の固有値ですか、それともX'Xの固有値ですか?
user603 2014年

これらは対角線上に1を持つように正規化された私の行列の固有値であり、相関行列の固有値です。コードで確認できるように回答を更新しました。これが可能であるとあなたが疑う理由は何ですか?大きな相関行列に非常に小さな非対角要素が必要であると考える理由はありますか?C
アメーバは、モニカを

私はそれを不可能だとは思いません。コードからそれを見ることができなかっただけです(この時点で何年もMATLABを使用していませんでした)
user603


1

ランダム相関行列を生成しようとしている場合は、Wishart分布からのサンプリングを検討してください。この次の質問は、Wishart分布に関する情報と、サンプリング方法に関するアドバイスを提供します。 ランダムな正定相関行列を効率的に生成する方法


しかし、ウィシャート分布のパラメーターを使用して、結果の非対角要素の標準偏差を制御できますか?もしそうなら、どうですか?
アメーバはモニカを復活させる

1

これはあまり洗練された答えではありませんが、それでも良い答えだとは思わずにはいられません...

時系列データによって生成された相関パラメーターが正常に見える傾向があるという動機がある場合、時系列データを単にシミュレートし、相関パラメーターを計算してそれらを使用しないのはなぜですか?

これを行わないことには十分な理由があるかもしれませんが、あなたの質問からははっきりしません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.