2017-07-17 7 views
0

2つの行列old1とgl1があります.2つの行列の値を別の2つの新しい行列に割り当てたいと思います。私は方法を使用しました:1)2つの行列をrbind; 2)サンプル関数を使用して値をランダムに割り当てます。 3)大きなマトリックスを2つの新しいマトリックスに分ける。ここでのコードは次のとおりランダムに2つの行列の値を2つの行列に代入R

library(ms.sev) 

    ### old Global MSSS matrix 
    data(oldMsss) 

    old <- data.matrix(oldMsss) 

    old1 <- old[-1,-1] 

    ## use the global MSSS 
    data(globalMsss) 

    gl <- data.matrix(globalMsss) 

    gl1 <- gl[,-1] 

    ## combine 
    tc <- rbind(gl1,old1) 

    set.seed(1) 

    n.permutations = 5 
    sum.table = rep(1,n.permutations) 

    for(j in 1:n.permutations) { 
     print(j) 

     t1 <- matrix(sample(tc),nrow=60) 
     tf <- t1[1:30,] 
     tf1 <- t1[31:60,] 
     sum.table[j] <- sum(tf1-tf) 

    } 

詳細にマトリックスをチェックすることにより、私はEDSS.0.0からEDSS.9.5に、OLD1とGL1の両方について、値がのために0.91〜10(例えば、増加させるべきであることに気づいgl1)、yと同じですが、値が小さくなるはずです(たとえば、gl1では0.91から0.07)。

ただし、値を割り当てる際に相関を考慮しなかったため、上記の方法は正しくありません。任意のアイデアをどのように新しい行列に値を割り当てるが、同様のパターンに従った?

多くのおかげで...

+0

を行うことができ、私はトラブルあなたが無作為に2つの値を割り当てたいexactly.Ifあなたが望むものを理解しています行列を別の行列に変換するには、なぜ相関関係が重要か? – Florian

+0

こんにちはフロリアン、混乱して申し訳ありません。私は「無作為に」という言葉を削除しました。上記のパターンに従った2つの新しい行列に値を代入するのと同じようになります。 – user2669497

答えて

1

あなたはあなたのデータは、多変量ガウスであると仮定した場合、あなたは

sample_similar_patern <- function(mat) { 
    MASS::mvrnorm(n = nrow(mat), mu = colMeans(mat), Sigma = cov(mat)) 
} 

for(j in 1:n.permutations) { 
    print(j) 

    tf <- sample_similar_patern(gl1) 
    tf1 <- sample_similar_patern(old1) 

    sum.table[j] <- sum(tf1-tf) 
} 
+0

多くのお返事をいただきありがとうございます。 F.Prive – user2669497

+0

新しい行列はgl1とold1の値に基づいていますが、同じパターンに続くこれらの値を2つの新しい行列に再割り当てします。 (例えば、gl1の0.91と0.86、old1の0.67と0.53、新しい行列は0.86,0.33対0.86,0.33、または0.91,0.53対0.86,0.67となります)。どのようにそれを行うにはどのようなアイデアですか? – user2669497

関連する問題