Tương quan biến định tín hnhị phân
library(tidyverse)
library(chorddiag)
set.seed(2009)
dat=data_frame(A=sample(c("Y","N"),500, replace=T,prob=c(0.3,0.7))%>%as.factor(),
B=sample(c("Y","N"),500, replace=T,prob=c(0.55,0.45))%>%as.factor(),
C=sample(c("Y","N"),500, replace=T,prob=c(0.2,0.8))%>%as.factor(),
D=sample(c("Y","N"),500, replace=T,prob=c(0.6,0.4))%>%as.factor(),
E=sample(c("Y","N"),500, replace=T,prob=c(0.7,0.3))%>%as.factor(),
X=sample(c("Y","N"),500, replace=T,prob=c(0.8,0.2))%>%as.factor(),
Y=sample(c("Y","N"),500, replace=T,prob=c(0.4,0.6))%>%as.factor(),
Z=sample(c("Y","N"),500, replace=T,prob=c(0.35,0.65))%>%as.factor())
head(dat)%>%knitr::kable()
N |
Y |
Y |
Y |
N |
Y |
Y |
N |
N |
Y |
Y |
N |
Y |
Y |
N |
N |
N |
Y |
N |
Y |
Y |
Y |
N |
N |
N |
N |
Y |
Y |
Y |
N |
N |
N |
N |
Y |
N |
Y |
N |
Y |
N |
Y |
N |
N |
Y |
Y |
Y |
Y |
N |
N |
Chuẩn bị hàm vẽ chord_diagram
draw_chord_diagram = function(dat = dat, categoric = T) {
if (categoric == T) {
cat_list = colnames(dat)
cor_mat = matrix(nrow = dim(dat)[2], ncol = dim(dat)[2])
for (i in c(1:dim(dat)[2])){
long_dat = dat %>% gather(cat_list[-i], key = "fact", value = "status")
cond = long_dat[1]=="Y" & long_dat[3] == "Y"
filt_long_dat = long_dat[cond,]
xtb_vect = filt_long_dat %>%group_by(cat_list[1],fact)%>%tally()%>%t()
cor_mat[i,-i] = xtb_vect[3,]%>%as.integer()
cor_mat[i,i] = sum(dat[i]=="Y")%>%as.integer()
}
dimnames(cor_mat) <- list(r = colnames(dat),
c = colnames(dat))
chorddiag(cor_mat,
groupColors = pals::brewer.spectral(dim(dat)[2]),
groupnamePadding = 10,
showTicks = F)
}
else{
cm = cor(dat)
diag(cm) = NA
chorddiag(abs(cm),showTicks = F,
groupColors = pals::brewer.spectral(dim(dat2)[2]))
}
}
Kết quả
draw_chord_diagram(dat,categoric = T)
Chord diagram áp dụng được cả cho biến định lượng
dat2 = data_frame(A= rnorm(500),
B= rnorm(500),
C= rnorm(500),
D= rnorm(500),
E= rnorm(500),
X= rnorm(500),
Y= rnorm(500),
Z= rnorm(500))
head(dat2)%>%knitr::kable()
0.5967539 |
1.0212297 |
0.1362541 |
-0.0969490 |
-0.8733515 |
-1.0551382 |
-0.8908629 |
-1.6135771 |
0.4787556 |
-1.0990761 |
1.4098798 |
1.3027122 |
1.0541796 |
0.3604073 |
-1.2343853 |
1.2976629 |
0.6860399 |
1.1180576 |
0.5233555 |
-0.0043952 |
1.1081349 |
0.0964058 |
-0.0432363 |
-0.0059015 |
-0.0895731 |
0.0577317 |
-1.2212518 |
0.2915248 |
0.3563021 |
-0.1785445 |
0.2564587 |
-0.4844600 |
-0.3527248 |
0.6881995 |
-1.3911750 |
0.0317707 |
0.9862375 |
-2.2138065 |
0.2614178 |
1.0838553 |
-0.2084523 |
1.8137606 |
0.7932908 |
-0.8125831 |
0.0065936 |
-0.2444381 |
-0.2144368 |
-0.9408870 |
draw_chord_diagram(dat2,categoric = F)
LS0tDQp0aXRsZTogIkNob3JkIGRpYWdyYW0iIA0KYXV0aG9yOiAiTMOqIE5n4buNYyBLaOG6oyBOaGkiDQpkYXRlOiAiMjAgVGjDoW5nIDkgbsSDbSAyMDE5Ig0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogImRlZmF1bHQiDQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgZGV2OiAnc3ZnJw0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KIVtdKGNob3JkLnBuZykNCg0KIyBUxrDGoW5nIHF1YW4gYmnhur9uIMSR4buLbmggdMOtbiBobmjhu4sgcGjDom4NCg0KYGBge3IsbWVzc2FnZSA9IEZBTFNFLHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoY2hvcmRkaWFnKQ0KYGBgDQoNCg0KYGBge3IsbWVzc2FnZSA9IEZBTFNFLHdhcm5pbmc9RkFMU0V9DQpzZXQuc2VlZCgyMDA5KQ0KDQpkYXQ9ZGF0YV9mcmFtZShBPXNhbXBsZShjKCJZIiwiTiIpLDUwMCwgcmVwbGFjZT1ULHByb2I9YygwLjMsMC43KSklPiVhcy5mYWN0b3IoKSwNCiAgICAgICAgICAgICAgIEI9c2FtcGxlKGMoIlkiLCJOIiksNTAwLCByZXBsYWNlPVQscHJvYj1jKDAuNTUsMC40NSkpJT4lYXMuZmFjdG9yKCksDQogICAgICAgICAgICAgICBDPXNhbXBsZShjKCJZIiwiTiIpLDUwMCwgcmVwbGFjZT1ULHByb2I9YygwLjIsMC44KSklPiVhcy5mYWN0b3IoKSwNCiAgICAgICAgICAgICAgIEQ9c2FtcGxlKGMoIlkiLCJOIiksNTAwLCByZXBsYWNlPVQscHJvYj1jKDAuNiwwLjQpKSU+JWFzLmZhY3RvcigpLA0KICAgICAgICAgICAgICAgRT1zYW1wbGUoYygiWSIsIk4iKSw1MDAsIHJlcGxhY2U9VCxwcm9iPWMoMC43LDAuMykpJT4lYXMuZmFjdG9yKCksDQogICAgICAgICAgICAgICBYPXNhbXBsZShjKCJZIiwiTiIpLDUwMCwgcmVwbGFjZT1ULHByb2I9YygwLjgsMC4yKSklPiVhcy5mYWN0b3IoKSwNCiAgICAgICAgICAgICAgIFk9c2FtcGxlKGMoIlkiLCJOIiksNTAwLCByZXBsYWNlPVQscHJvYj1jKDAuNCwwLjYpKSU+JWFzLmZhY3RvcigpLA0KICAgICAgICAgICAgICAgWj1zYW1wbGUoYygiWSIsIk4iKSw1MDAsIHJlcGxhY2U9VCxwcm9iPWMoMC4zNSwwLjY1KSklPiVhcy5mYWN0b3IoKSkNCg0KaGVhZChkYXQpJT4la25pdHI6OmthYmxlKCkNCmBgYA0KDQojIENodeG6qW4gYuG7iyBow6BtIHbhur0gY2hvcmRfZGlhZ3JhbQ0KDQpgYGB7cixtZXNzYWdlID0gRkFMU0Usd2FybmluZz1GQUxTRX0NCmRyYXdfY2hvcmRfZGlhZ3JhbSA9IGZ1bmN0aW9uKGRhdCA9IGRhdCwgY2F0ZWdvcmljID0gVCkgew0KICBpZiAoY2F0ZWdvcmljID09IFQpIHsNCiAgY2F0X2xpc3QgPSBjb2xuYW1lcyhkYXQpDQogIGNvcl9tYXQgPSBtYXRyaXgobnJvdyA9IGRpbShkYXQpWzJdLCBuY29sID0gZGltKGRhdClbMl0pDQogIA0KICBmb3IgKGkgaW4gYygxOmRpbShkYXQpWzJdKSl7DQogICAgbG9uZ19kYXQgPSBkYXQgJT4lIGdhdGhlcihjYXRfbGlzdFstaV0sIGtleSA9ICJmYWN0IiwgdmFsdWUgPSAic3RhdHVzIikNCiAgICBjb25kID0gbG9uZ19kYXRbMV09PSJZIiAmIGxvbmdfZGF0WzNdID09ICJZIg0KICAgIGZpbHRfbG9uZ19kYXQgPSBsb25nX2RhdFtjb25kLF0NCiAgICB4dGJfdmVjdCA9IGZpbHRfbG9uZ19kYXQgJT4lZ3JvdXBfYnkoY2F0X2xpc3RbMV0sZmFjdCklPiV0YWxseSgpJT4ldCgpDQogICAgY29yX21hdFtpLC1pXSA9IHh0Yl92ZWN0WzMsXSU+JWFzLmludGVnZXIoKQ0KICAgIGNvcl9tYXRbaSxpXSA9IHN1bShkYXRbaV09PSJZIiklPiVhcy5pbnRlZ2VyKCkNCiAgfQ0KICANCiAgZGltbmFtZXMoY29yX21hdCkgPC0gbGlzdChyID0gY29sbmFtZXMoZGF0KSwNCiAgICAgICAgICAgICAgICAgICAgYyA9IGNvbG5hbWVzKGRhdCkpDQogIA0KICBjaG9yZGRpYWcoY29yX21hdCwgDQogICAgICAgICAgZ3JvdXBDb2xvcnMgPSBwYWxzOjpicmV3ZXIuc3BlY3RyYWwoZGltKGRhdClbMl0pLCANCiAgICAgICAgICBncm91cG5hbWVQYWRkaW5nID0gMTAsDQogICAgICAgICAgc2hvd1RpY2tzID0gRikNCiAgfQ0KICBlbHNlew0KICAgIGNtID0gY29yKGRhdCkNCiAgZGlhZyhjbSkgPSBOQQ0KICANCiAgY2hvcmRkaWFnKGFicyhjbSksc2hvd1RpY2tzID0gRiwNCiAgICAgICAgICAgIGdyb3VwQ29sb3JzID0gcGFsczo6YnJld2VyLnNwZWN0cmFsKGRpbShkYXQyKVsyXSkpDQogIH0NCiAgfQ0KYGBgDQoNCiMgS+G6v3QgcXXhuqMNCg0KYGBge3IsbWVzc2FnZSA9IEZBTFNFLHdhcm5pbmc9RkFMU0V9DQpkcmF3X2Nob3JkX2RpYWdyYW0oZGF0LGNhdGVnb3JpYyA9IFQpDQpgYGANCg0KIyBDaG9yZCBkaWFncmFtIMOhcCBk4bulbmcgxJHGsOG7o2MgY+G6oyBjaG8gYmnhur9uIMSR4buLbmggbMaw4bujbmcNCg0KYGBge3IsbWVzc2FnZSA9IEZBTFNFLHdhcm5pbmc9RkFMU0V9DQpkYXQyID0gZGF0YV9mcmFtZShBPSBybm9ybSg1MDApLA0KICAgICAgICAgICAgICAgICAgQj0gcm5vcm0oNTAwKSwNCiAgICAgICAgICAgICAgICAgIEM9IHJub3JtKDUwMCksDQogICAgICAgICAgICAgICAgICBEPSBybm9ybSg1MDApLA0KICAgICAgICAgICAgICAgICAgRT0gcm5vcm0oNTAwKSwNCiAgICAgICAgICAgICAgICAgIFg9IHJub3JtKDUwMCksDQogICAgICAgICAgICAgICAgICBZPSBybm9ybSg1MDApLA0KICAgICAgICAgICAgICAgICAgWj0gcm5vcm0oNTAwKSkNCg0KaGVhZChkYXQyKSU+JWtuaXRyOjprYWJsZSgpDQoNCmBgYA0KDQoNCmBgYHtyLG1lc3NhZ2UgPSBGQUxTRSx3YXJuaW5nPUZBTFNFfQ0KZHJhd19jaG9yZF9kaWFncmFtKGRhdDIsY2F0ZWdvcmljID0gRikNCmBgYA0KDQo=