偏相関係数の計算 メモ




> corMatlist<-c(1,0.014612303,0.026175719,0.002868667,0.023045778,0.020655505,0.037613427,0.000453764,0.014612303,1,0.01409592,0.005233379,0.009091452,0.041388819,0.027510335,0.011144861,0.026175719,0.01409592,1,0.007931962,0.016696877,0.014678208,0.039952232,0.012958001,0.002868667,0.005233379,0.007931962,1,0.000877355,0.013571382,0.015549562,0.017434603,0.023045778,0.009091452,0.016696877,0.000877355,1,0.017068716,-0.000833253,0.009725257,0.020655505,0.041388819,0.014678208,0.013571382,0.017068716,1,0.022002644,0.020845039,0.037613427,0.027510335,0.039952232,0.015549562,-0.000833253,0.022002644,1,0.021542834,0.000453764,0.011144861,0.012958001,0.017434603,0.009725257,0.020845039,0.021542834,1)
> corMatlist
[1] 1.000000000 0.014612303 0.026175719 0.002868667 0.023045778 0.020655505 0.037613427 0.000453764 0.014612303
[10] 1.000000000 0.014095920 0.005233379 0.009091452 0.041388819 0.027510335 0.011144861 0.026175719 0.014095920
[19] 1.000000000 0.007931962 0.016696877 0.014678208 0.039952232 0.012958001 0.002868667 0.005233379 0.007931962
[28] 1.000000000 0.000877355 0.013571382 0.015549562 0.017434603 0.023045778 0.009091452 0.016696877 0.000877355
[37] 1.000000000 0.017068716 -0.000833253 0.009725257 0.020655505 0.041388819 0.014678208 0.013571382 0.017068716
[46] 1.000000000 0.022002644 0.020845039 0.037613427 0.027510335 0.039952232 0.015549562 -0.000833253 0.022002644
[55] 1.000000000 0.021542834 0.000453764 0.011144861 0.012958001 0.017434603 0.009725257 0.020845039 0.021542834
[64] 1.000000000
> corMat<-matrix(corMatlist,ncol=8)
> corMat
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1.000000000 0.014612303 0.026175719 0.002868667 0.023045778 0.02065551 0.037613427 0.000453764
[2,] 0.014612303 1.000000000 0.014095920 0.005233379 0.009091452 0.04138882 0.027510335 0.011144861
[3,] 0.026175719 0.014095920 1.000000000 0.007931962 0.016696877 0.01467821 0.039952232 0.012958001
[4,] 0.002868667 0.005233379 0.007931962 1.000000000 0.000877355 0.01357138 0.015549562 0.017434603
[5,] 0.023045778 0.009091452 0.016696877 0.000877355 1.000000000 0.01706872 -0.000833253 0.009725257
[6,] 0.020655505 0.041388819 0.014678208 0.013571382 0.017068716 1.00000000 0.022002644 0.020845039
[7,] 0.037613427 0.027510335 0.039952232 0.015549562 -0.000833253 0.02200264 1.000000000 0.021542834
[8,] 0.000453764 0.011144861 0.012958001 0.017434603 0.009725257 0.02084504 0.021542834 1.000000000
> corMatInv<-solve(corMat)
> corMatInv
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1.003069396 -0.012357239 -0.023998811 -0.001813412 -0.022326654 -0.01868588 -0.036039723 0.001408194
[2,] -0.012357239 1.002909516 -0.011919227 -0.004005091 -0.007874614 -0.04013136 -0.025506337 -0.009484802
[3,] -0.023998811 -0.011919227 1.002970888 -0.006848725 -0.015789286 -0.01228948 -0.038228863 -0.011500077
[4,] -0.001813412 -0.004005091 -0.006848725 1.000768658 -0.000319612 -0.01260532 -0.014471874 -0.016736167
[5,] -0.022326654 -0.007874614 -0.015789286 -0.000319612 1.001213837 -0.01594290 0.003074648 -0.009162906
[6,] -0.018685881 -0.040131360 -0.012289480 -0.012605323 -0.015942899 1.00349931 -0.019178647 -0.019515018
[7,] -0.036039723 -0.025506337 -0.038228863 -0.014471874 0.003074648 -0.01917865 1.004669877 -0.020225259
[8,] 0.001408194 -0.009484802 -0.011500077 -0.016736167 -0.009162906 -0.01951502 -0.020225259 1.001477487
> D<-diag(1/sqrt(diag(corMatInv)))
> D
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0.9984688 0.0000000 0.0000000 0.0000000 0.0000000 0.000000 0.0000000 0.000000
[2,] 0.0000000 0.9985484 0.0000000 0.0000000 0.0000000 0.000000 0.0000000 0.000000
[3,] 0.0000000 0.0000000 0.9985179 0.0000000 0.0000000 0.000000 0.0000000 0.000000
[4,] 0.0000000 0.0000000 0.0000000 0.9996159 0.0000000 0.000000 0.0000000 0.000000
[5,] 0.0000000 0.0000000 0.0000000 0.0000000 0.9993936 0.000000 0.0000000 0.000000
[6,] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.998255 0.0000000 0.000000
[7,] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.000000 0.9976732 0.000000
[8,] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.000000 0.0000000 0.999262
> P<--D%*%corMatInv %*% D
> P
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] -1.00000000 0.012320408 0.023926550 0.0018099399 0.0222789510 0.01862471 0.035900812 -0.001405000
[2,] 0.01232041 -1.000000000 0.011884285 0.0039977410 0.0078584154 0.04000318 0.025410051 0.009464045
[3,] 0.02392655 0.011884285 -1.000000000 0.0068359476 0.0157563240 0.01224985 0.038083383 0.011474559
[4,] 0.00180994 0.003997741 0.006835948 -1.0000000000 0.0003192955 0.01257849 0.014432655 0.016717394
[5,] 0.02227895 0.007858415 0.015756324 0.0003192955 -1.0000000000 0.01590543 -0.003065634 0.009150592
[6,] 0.01862471 0.040003175 0.012249851 0.0125784923 0.0159054266 -1.00000000 0.019100632 0.019466587
[7,] 0.03590081 0.025410051 0.038083383 0.0144326549 -0.0030656335 0.01910063 -1.000000000 0.020163309
[8,] -0.00140500 0.009464045 0.011474559 0.0167173937 0.0091505922 0.01946659 0.020163309 -1.000000000
>

実行時メモ2


test<-c(1,0.212767459,0.074744382,1,0.049474205,0.106790499,0.024807304,0.049474205,1)
> testmat<-matrix(test,ncol=4)
> invtestmat<-solve(testmat)
> d<-diag(1/sqrt(diag(invtestmat)))
> p<--d%*%invtestmat %*% d
> p
[,1] [,2] [,3] [,4]
[1,] -1.00000000 0.2044552519 0.19827171 0.0963629789
[2,] 0.20445525 -1.0000000000 0.03010591 0.0009483711
[3,] 0.19827171 0.0301059143 -1.00000000 0.0274959990
[4,] 0.09636298 0.0009483711 0.02749600 -1.0000000000


test<-c(1,0.164278492,0.004948015,0.343518239,0.164278492,1,-0.005663442,0.256314366,0.004948015,-0.005663442,1,-0.001280119,0.343518239,0.256314366,-0.001280119,1)
testmat<-matrix(test,ncol=4)
invtestmat<-solve(testmat)
d<-diag(1/sqrt(diag(invtestmat)))
p<--d%*%invtestmat %*% d
p

p
[,1] [,2] [,3] [,4]
[1,] -1.000000000 0.084008937 0.006222465 0.316127817
[2,] 0.084008937 -1.000000000 -0.006022852 0.215749760
[3,] 0.006222465 -0.006022852 -1.000000000 -0.001798764
[4,] 0.316127817 0.215749760 -0.001798764 -1.000000000
>