多変量のデータの関係性を見たくて,相関係数を見てみたい.ということで,視覚化してみる.corrplotパッケージを使用.
まずはデータ.
> dat
participants EMG1 EMG2 EMG3 EMG4 time force fatigue comfort
1 1 0.020 0.007 0.015 0.020 1.70 361.132 68.6 60.6
2 2 0.039 0.008 0.010 0.012 1.36 293.362 65.0 48.2
3 3 0.079 0.007 0.015 0.017 2.48 349.753 97.4 28.0
4 4 0.041 0.007 0.012 0.007 1.53 251.173 80.4 46.0
5 5 0.093 0.015 0.014 0.020 2.04 207.457 85.6 30.6
6 6 0.036 0.019 0.012 0.021 3.26 433.677 89.2 33.2
7 7 0.049 0.012 0.009 0.013 2.09 261.236 57.8 55.8
8 8 0.074 0.009 0.010 0.016 2.00 248.466 67.6 49.2
9 9 0.096 0.008 0.015 0.019 2.18 269.364 90.8 41.4
10 10 0.040 0.008 0.010 0.020 3.69 260.286 87.0 45.2
11 11 0.040 0.008 0.010 0.020 1.58 244.470 40.2 30.6
12 12 0.040 0.008 0.010 0.020 1.29 295.207 72.4 58.4
中略
32 32 0.043 0.007 0.009 0.011 1.60 268.695 23.8 77.2
33 33 0.092 0.007 0.012 0.018 1.05 274.317 27.0 93.4
34 34 0.051 0.007 0.008 0.014 1.21 243.626 49.8 86.0
35 35 0.051 0.007 0.008 0.014 0.84 241.260 21.4 79.0
36 36 0.051 0.007 0.008 0.014 1.10 292.484 20.6 80.2
>
中略
32 32 0.043 0.007 0.009 0.011 1.60 268.695 23.8 77.2
こんなデータがエクセル上にあったとして…をれを読み込んだもの.
> dat<-read .delim="" clipboard="" comment--read--="">-read>
さらに無相関検定の結果も入れてみる.
そのために以下の関数を組む.詳しくは,
cor.mtest <- conf.level="0.95)" function="" mat="" p=""> mat <- as.matrix="" mat="" p=""> n <- mat="" ncol="" p=""> p.mat <- lowci.mat="" matrix="" n="" p="" uppci.mat=""> diag(p.mat) <- 0="" p=""> diag(lowCI.mat) <- 1="" diag="" p="" uppci.mat=""> for (i in 1:(n - 1)) {
for (j in (i + 1):n) {
tmp <- conf.level="conf.level)</p" cor.test="" i="" j="" mat=""> p.mat[i, j] <- i="" j="" p.mat="" p.value="" p="" tmp=""> lowCI.mat[i, j] <- conf.int="" i="" j="" lowci.mat="" p="" tmp=""> uppCI.mat[i, j] <- conf.int="" i="" j="" p="" tmp="" uppci.mat=""> }
}
return(list(p.mat, lowCI.mat, uppCI.mat))
}
}
このcor.mtestを使ってp値の計算.
> pval<-cor .mtest="" dat="" p="">
で,このpvalをcorrplotに組み込む.p値が0.05未満の結果だけを表示した図にするには下記の通り.
> corrplot(cor, type="upper", tl.col="black",tl.cex=1.0,tl.srt=45,p.mat=pval[[1]],insig="blank")
insigを何も指定しないと,☓がついて表示される.
p値を重ねて表示するには以下のようにする.
> corrplot(cor, type="upper", tl.col="black",tl.cex=1.0,tl.srt=45,p.mat=pval[[1]],insig="p-value",sig.level=-1)
-cor>->->->->->->->->->->
次にこの行列について,総当りで相関係数を計算.
> cor<-cor dat="" method="pearson">-cor>
> cor
EMG1 EMG2 EMG3 EMG4 time force
EMG1 1.00000000 0.07462655 0.32963682 0.3262487 0.08174901 -0.32272853
EMG2 0.07462655 1.00000000 0.13179792 0.2839100 0.51848464 0.23425635
EMG3 0.32963682 0.13179792 1.00000000 0.1975159 0.18125284 0.08786192
EMG4 0.32624869 0.28391001 0.19751588 1.0000000 0.43220184 0.19650860
time 0.08174901 0.51848464 0.18125284 0.4322018 1.00000000 0.16036375
force -0.32272853 0.23425635 0.08786192 0.1965086 0.16036375 1.00000000
fatigue -0.05285888 0.39281360 0.43567818 0.2424177 0.56961176 0.35223914
comfort -0.23434551 -0.47336696 -0.41126381 -0.4303206 -0.62746670 -0.17677707
fatigue comfort
EMG1 -0.05285888 -0.2343455
EMG2 0.39281360 -0.4733670
EMG3 0.43567818 -0.4112638
EMG4 0.24241771 -0.4303206
time 0.56961176 -0.6274667
force 0.35223914 -0.1767771
fatigue 1.00000000 -0.6594524
comfort -0.65945241 1.0000000
>
corrplotパッケージの読み込み.(もちろんインストールされていることが前提)
> library(corrplot)
視覚化してみる.
> corrplot(cor, type="upper", tl.col="black",tl.cex=1.0, tl.srt=45)
type で"full", "lower", "upper"を選択.今回は上半分だけを出力してみたので,upperとした.
tl.colで文字の色,cexでサイズを指定できる.
この他にもorderで並び順を指定でき,"original", "AOE", "FPC", "hclust", "alphabet"から選ぶことができ,medthodで,"circle", "square", "ellipse","number", "pie", "shade", "color"がある.
type で"full", "lower", "upper"を選択.今回は上半分だけを出力してみたので,upperとした.
tl.colで文字の色,cexでサイズを指定できる.
この他にもorderで並び順を指定でき,"original", "AOE", "FPC", "hclust", "alphabet"から選ぶことができ,medthodで,"circle", "square", "ellipse","number", "pie", "shade", "color"がある.
さらに無相関検定の結果も入れてみる.
そのために以下の関数を組む.詳しくは,
cor.mtest <- conf.level="0.95)" function="" mat="" p=""> mat <- as.matrix="" mat="" p=""> n <- mat="" ncol="" p=""> p.mat <- lowci.mat="" matrix="" n="" p="" uppci.mat=""> diag(p.mat) <- 0="" p=""> diag(lowCI.mat) <- 1="" diag="" p="" uppci.mat=""> for (i in 1:(n - 1)) {
for (j in (i + 1):n) {
tmp <- conf.level="conf.level)</p" cor.test="" i="" j="" mat=""> p.mat[i, j] <- i="" j="" p.mat="" p.value="" p="" tmp=""> lowCI.mat[i, j] <- conf.int="" i="" j="" lowci.mat="" p="" tmp=""> uppCI.mat[i, j] <- conf.int="" i="" j="" p="" tmp="" uppci.mat=""> }
}
return(list(p.mat, lowCI.mat, uppCI.mat))
}
}
このcor.mtestを使ってp値の計算.
> pval<-cor .mtest="" dat="" p="">
> corrplot(cor, type="upper", tl.col="black",tl.cex=1.0,tl.srt=45,p.mat=pval[[1]],insig="blank")
insigを何も指定しないと,☓がついて表示される.
p値を重ねて表示するには以下のようにする.
> corrplot(cor, type="upper", tl.col="black",tl.cex=1.0,tl.srt=45,p.mat=pval[[1]],insig="p-value",sig.level=-1)
-cor>->->->->->->->->->->
コメント