2017-07-20 6 views
0

私は、連鎖不平衡に取り組んでいますと、次のようなソフトウェアの出力は次のようになります。 Figure anticipated対応する行列建設

Figure current

は、私が実際にしたいことは、このような対角線上の対応する行列の半分だけでなく、1であります

これはRやPythonで簡単に行うことができますか? ありがとうございます。

+0

ていますか? PythonまたはRでalgorythmを取得し、単純な2次元のリストでこれを行うには、コードはwhisテーブルと相互作用し、次にデータをリストに変換してalgorythmに変換する必要がありますか? – Vladyslav

答えて

0
> library(sem) 
> mat <- matrix(1:64, 8, 8) 
> mat[lower.tri(mat)] <- 0 
> 
> diag(mat) <- 1 
> mat 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] 
[1,] 1 9 17 25 33 41 49 57 
[2,] 0 1 18 26 34 42 50 58 
[3,] 0 0 1 27 35 43 51 59 
[4,] 0 0 0 1 36 44 52 60 
[5,] 0 0 0 0 1 45 53 61 
[6,] 0 0 0 0 0 1 54 62 
[7,] 0 0 0 0 0 0 1 63 
[8,] 0 0 0 0 0 0 0 1 
> mat[lower.tri(mat)] <- t(mat)[lower.tri(mat)] 
> mat 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] 
[1,] 1 9 17 25 33 41 49 57 
[2,] 9 1 18 26 34 42 50 58 
[3,] 17 18 1 27 35 43 51 59 
[4,] 25 26 27 1 36 44 52 60 
[5,] 33 34 35 36 1 45 53 61 
[6,] 41 42 43 44 45 1 54 62 
[7,] 49 50 51 52 53 54 1 63 
[8,] 57 58 59 60 61 62 63 1 
+0

ありがとうGuillaume!これはうまくいった! :) – David

+0

@ダヴィド、あなたはコメントし、私のではなく、他の投稿を受け入れた! –

+0

@Davidまたはあなたは名前と混同しています! ? – RUser

0

あなたは簡単にPythonとnumpyのでそれを行うことができます:あなたが行列を取得する入力

import numpy as np 

# Create the empty matrix 
d = np.zeros((8,8)) 

# Create the upper triangular matrix 
d[0,2:]=1 
d[1,2]=0.839 
d[1,3]=1 
d[1,4:6]=0.736 
d[1,6:]=0.864 
d[2,3:]=1 
d[3,4:]=1 
d[4,5:]=1 
d[5,6:]=1 
d[4:6,7]=0.933 
d[6,7]=0.88 
print(d) 


# Create the full matrix with transpose and identity matrix 
dFUll = d + d.T + np.eye(8) 
print(dFull)