1

異なる変数が異なる相関を持つ 50 個の変数の相関行列を作成したいと思います。

各変数が同じ相関を持つ完璧なケースでは、次のように使用します。

cor.table <- matrix(rep(0.8,2500),50,50)
diag(cor.table) <- 1

.6ただし、今では、たとえば 40 個の変数をcorrelationで、残りの 10 個をcorrelation で使用したいと考えています-.2

matrix()コマンドを使用してそのようなテーブルを設定するにはどうすればよいですか?

例えば:

      1     2     3     4     5

1     1   -0.2   0.6   0.6   0.6

2   -0.2    1    0.6  -0.2   0.6

3    0.6   0.6    1    0.6  -0.2

4    0.6  -0.2   0.6    1    0.6

5    0.6   0.6  -0.2   0.6    1
4

1 に答える 1

1

こんな感じですか?[100 分の 1 の例で!]...

cor.table <- matrix( c( rep(0.8,20) , rep( -0.8 , 5) ) , 5 , 5 )
diag(cor.table) <- 1

#  Make matrix symmetric - the 't()' is necessary for this
cor.table[ lower.tri(cor.table) ] <- t( cor.table )[ lower.tri( cor.table ) ]
cor.table
     [,1] [,2] [,3] [,4] [,5]
[1,]  1.0  0.8  0.8  0.8 -0.8
[2,]  0.8  1.0  0.8  0.8 -0.8
[3,]  0.8  0.8  1.0  0.8 -0.8
[4,]  0.8  0.8  0.8  1.0 -0.8
[5,] -0.8 -0.8 -0.8 -0.8  1.0

負の相関がある場所をシャッフルするには、ランダムサンプリングを使用します。最初の行を次のように置き換えます。

cor.table <- matrix( sample( c(0.6,-0.2) , 25 , prob = c( 0.8 , 0.2 ) , repl = TRUE ) , 5 , 5 )

へのprob引数は、時間と負の相関関係 (時間のみ)sampleが得られることを期待していることを示しています。必要に応じてこれらを調整できます。残りのコードに従って取得します...0.6 80%-0.220%

#     [,1] [,2] [,3] [,4] [,5]
#[1,]  1.0  0.6 -0.2 -0.2  0.6
#[2,]  0.6  1.0  0.6  0.6 -0.2
#[3,] -0.2  0.6  1.0 -0.2  0.6
#[4,] -0.2  0.6 -0.2  1.0  0.6
#[5,]  0.6 -0.2  0.6  0.6  1.0
于 2013-09-16T09:12:14.593 に答える