Network analysis

In a recent class of Network Analytics, we were asked to visualise correlations between symtoms. As an investor, you’re interested in diversifying risk by selecting different types of them. You might therefore want visualise which sytoms behave similarly (positive correlations) or very differently (negative correlations).

1 Loading packages & Data

library("readxl")
library(huge)
library(qgraph)
## Registered S3 methods overwritten by 'BDgraph':
##   method    from
##   plot.sim  huge
##   print.sim huge
#Raw data
BS <- read_excel("D:/Research/REFERENCES/Statistic/Network analysis/PROJECT/Data/Raw data.xlsx",sheet = "BS")
## New names:
## * PANSS.P.TO...16 -> PANSS.P.TO
## * PANSS.N.TO...24 -> PANSS.N.TO
## * PANSS.G.TO...41 -> PANSS.G.TO
## * BCSS.NS...111 -> BCSS.NS
## * BCSS.PS...112 -> BCSS.PS
## * ... and 4 more problems
TM <- read_excel("D:/Research/REFERENCES/Statistic/Network analysis/PROJECT/Data/Raw data.xlsx",sheet = "TM")
## New names:
## * PANSS.P.TO...171 -> PANSS.P.TO
## * PANSS.N.TO...179 -> PANSS.N.TO
## * PANSS.G.TO...196 -> PANSS.G.TO
## * BCSS.NS...234 -> BCSS.NS
## * BCSS.PS...235 -> BCSS.PS
## * ... and 4 more problems
BHR <- read_excel("D:/Research/REFERENCES/Statistic/Network analysis/PROJECT/Data/Raw data.xlsx",sheet = "BHR")
## New names:
## * PANSS.P.TO...16 -> PANSS.P.TO
## * PANSS.N.TO...24 -> PANSS.N.TO
## * PANSS.G.TO...41 -> PANSS.G.TO
## * BCSS.NS...111 -> BCSS.NS
## * BCSS.PS...112 -> BCSS.PS
## * ... and 4 more problems
THR <- read_excel("D:/Research/REFERENCES/Statistic/Network analysis/PROJECT/Data/Raw data.xlsx",sheet = "THR")
## New names:
## * PANSS.P.TO...171 -> PANSS.P.TO
## * PANSS.N.TO...179 -> PANSS.N.TO
## * PANSS.G.TO...196 -> PANSS.G.TO
## * BCSS.NS...234 -> BCSS.NS
## * BCSS.PS...235 -> BCSS.PS
## * ... and 4 more problems
BLR <- read_excel("D:/Research/REFERENCES/Statistic/Network analysis/PROJECT/Data/Raw data.xlsx",sheet = "BLR")
## New names:
## * PANSS.P.TO...16 -> PANSS.P.TO
## * PANSS.N.TO...24 -> PANSS.N.TO
## * PANSS.G.TO...41 -> PANSS.G.TO
## * BCSS.NS...111 -> BCSS.NS
## * BCSS.PS...112 -> BCSS.PS
## * ... and 4 more problems
TLR <- read_excel("D:/Research/REFERENCES/Statistic/Network analysis/PROJECT/Data/Raw data.xlsx",sheet = "TLR")
## New names:
## * PANSS.P.TO...171 -> PANSS.P.TO
## * PANSS.N.TO...179 -> PANSS.N.TO
## * PANSS.G.TO...196 -> PANSS.G.TO
## * BCSS.NS...234 -> BCSS.NS
## * BCSS.PS...235 -> BCSS.PS
## * ... and 4 more problems
BS=sapply(BS,as.numeric)
TM=sapply(TM,as.numeric)
BLR=sapply(BLR,as.numeric)
BHR=sapply(BHR,as.numeric)
THR=sapply(THR,as.numeric)
TLR=sapply(TLR,as.numeric)

#Delete MV

BS <- na.omit(BS)
TM <- na.omit(TM)
BHR <- na.omit(BHR)
BLR <- na.omit(BLR)
THR <- na.omit(THR)
TLR <- na.omit(TLR)

#Transformation
BS1  <- huge.npn(BS )
## Conducting the nonparanormal (npn) transformation via shrunkun ECDF....done.
TM1<- huge.npn(TM)
## Conducting the nonparanormal (npn) transformation via shrunkun ECDF....done.
BLR1 <- huge.npn(BLR )
## Conducting the nonparanormal (npn) transformation via shrunkun ECDF....done.
BHR1<- huge.npn(BHR)
## Conducting the nonparanormal (npn) transformation via shrunkun ECDF....done.
THR1 <- huge.npn(THR )
## Conducting the nonparanormal (npn) transformation via shrunkun ECDF....done.
TLR1<- huge.npn(TLR)
## Conducting the nonparanormal (npn) transformation via shrunkun ECDF....done.
# Compute correlations:
BS2 <- cor_auto(BS1)
TM2 <- cor_auto(TM1)
BLR2 <- cor_auto(BLR1)
BHR2 <- cor_auto(BHR1)
TLR2 <- cor_auto(TLR1)
THR2 <- cor_auto(THR1)

2 Compute correlations:

BS2 <- cor_auto(BS1)
TM2 <- cor_auto(TM1)
BLR2 <- cor_auto(BLR1)
BHR2 <- cor_auto(BHR1)
TLR2 <- cor_auto(TLR1)
THR2 <- cor_auto(THR1)

3 Network estimation

Names1a<-c("PANSS-Pos", "PANSS-Neg", "PANSS-Gen", "CDSS","BCSS-NS", 
           "BCSS-PS", "BCSS-NO", "BCSS-PO", "BSE", "BSC", "PAR")
Labels1a<-c("A1","A2","A3", "B1","C1","C2","C3","C4","D1", "D2","E1")
group.item <- list("PANSS" = 1:3,"CDSS" = 4,"BCSS" = 5:8,"BS " = 9:10,"PAR" = 11)

#No fit
layout(t(1:2))

network1 <- qgraph(BS2, layout = "spring", groups=group.item,  graph = "pcor", 
                   tuning = 0.5, sampleSize = 257, legend.cex = 0.3,groups = group.item,
                   nodeNames=Names1a,labels = Labels1a,title = "Baseline",
                   color=c("olivedrab2", "darkseagreen1", "wheat3", "goldenrod2", "darkorange1", 
                           "darkslategray2", "mediumpurple"),cut = 0.03, maximum = 1,details = TRUE,
                   borders=FALSE, theme="colorblind", usePCH=TRUE)

network2 <- qgraph(TM2, layout = "spring", groups=group.item,  graph = "pcor", 
                   tuning = 0.5, sampleSize = 257, legend.cex = 0.3,groups = group.item,
                   nodeNames=Names1a,labels = Labels1a,title = "6M follow up",
                   color=c("olivedrab2", "darkseagreen1", "wheat3", "goldenrod2", "darkorange1", 
                           "darkslategray2", "mediumpurple"),cut = 0.03, maximum = 1,details = TRUE,
                   borders=FALSE, theme="colorblind", usePCH=TRUE)

LS0tDQp0aXRsZTogIlN5bXRvbXMgTmV0d29yayBhbmFseXNpcyINCmF1dGhvcjogIlRob25nIE5ndXllbiINCmRhdGU6ICIyLTEtMjAyMCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDogDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgdGhlbWU6ICJkZWZhdWx0Ig0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGRldjogJ3N2ZycNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQpOZXR3b3JrIGFuYWx5c2lzDQoNCkluIGEgcmVjZW50IGNsYXNzIG9mIE5ldHdvcmsgQW5hbHl0aWNzLCB3ZSB3ZXJlIGFza2VkIHRvIHZpc3VhbGlzZSBjb3JyZWxhdGlvbnMgYmV0d2VlbiBzeW10b21zLiBBcyBhbiBpbnZlc3RvciwgeW91oa9yZSBpbnRlcmVzdGVkIGluIGRpdmVyc2lmeWluZyByaXNrIGJ5IHNlbGVjdGluZyBkaWZmZXJlbnQgdHlwZXMgb2YgdGhlbS4gWW91IG1pZ2h0IHRoZXJlZm9yZSB3YW50IHZpc3VhbGlzZSB3aGljaCBzeXRvbXMgYmVoYXZlIHNpbWlsYXJseSAocG9zaXRpdmUgY29ycmVsYXRpb25zKSBvciB2ZXJ5IGRpZmZlcmVudGx5IChuZWdhdGl2ZSBjb3JyZWxhdGlvbnMpLg0KDQojIExvYWRpbmcgcGFja2FnZXMgJiBEYXRhDQoNCg0KYGBge3IgY2Fyc30NCg0KbGlicmFyeSgicmVhZHhsIikNCmxpYnJhcnkoaHVnZSkNCmxpYnJhcnkocWdyYXBoKQ0KDQojUmF3IGRhdGENCkJTIDwtIHJlYWRfZXhjZWwoIkQ6L1Jlc2VhcmNoL1JFRkVSRU5DRVMvU3RhdGlzdGljL05ldHdvcmsgYW5hbHlzaXMvUFJPSkVDVC9EYXRhL1JhdyBkYXRhLnhsc3giLHNoZWV0ID0gIkJTIikNClRNIDwtIHJlYWRfZXhjZWwoIkQ6L1Jlc2VhcmNoL1JFRkVSRU5DRVMvU3RhdGlzdGljL05ldHdvcmsgYW5hbHlzaXMvUFJPSkVDVC9EYXRhL1JhdyBkYXRhLnhsc3giLHNoZWV0ID0gIlRNIikNCkJIUiA8LSByZWFkX2V4Y2VsKCJEOi9SZXNlYXJjaC9SRUZFUkVOQ0VTL1N0YXRpc3RpYy9OZXR3b3JrIGFuYWx5c2lzL1BST0pFQ1QvRGF0YS9SYXcgZGF0YS54bHN4IixzaGVldCA9ICJCSFIiKQ0KVEhSIDwtIHJlYWRfZXhjZWwoIkQ6L1Jlc2VhcmNoL1JFRkVSRU5DRVMvU3RhdGlzdGljL05ldHdvcmsgYW5hbHlzaXMvUFJPSkVDVC9EYXRhL1JhdyBkYXRhLnhsc3giLHNoZWV0ID0gIlRIUiIpDQpCTFIgPC0gcmVhZF9leGNlbCgiRDovUmVzZWFyY2gvUkVGRVJFTkNFUy9TdGF0aXN0aWMvTmV0d29yayBhbmFseXNpcy9QUk9KRUNUL0RhdGEvUmF3IGRhdGEueGxzeCIsc2hlZXQgPSAiQkxSIikNClRMUiA8LSByZWFkX2V4Y2VsKCJEOi9SZXNlYXJjaC9SRUZFUkVOQ0VTL1N0YXRpc3RpYy9OZXR3b3JrIGFuYWx5c2lzL1BST0pFQ1QvRGF0YS9SYXcgZGF0YS54bHN4IixzaGVldCA9ICJUTFIiKQ0KDQpCUz1zYXBwbHkoQlMsYXMubnVtZXJpYykNClRNPXNhcHBseShUTSxhcy5udW1lcmljKQ0KQkxSPXNhcHBseShCTFIsYXMubnVtZXJpYykNCkJIUj1zYXBwbHkoQkhSLGFzLm51bWVyaWMpDQpUSFI9c2FwcGx5KFRIUixhcy5udW1lcmljKQ0KVExSPXNhcHBseShUTFIsYXMubnVtZXJpYykNCg0KI0RlbGV0ZSBNVg0KDQpCUyA8LSBuYS5vbWl0KEJTKQ0KVE0gPC0gbmEub21pdChUTSkNCkJIUiA8LSBuYS5vbWl0KEJIUikNCkJMUiA8LSBuYS5vbWl0KEJMUikNClRIUiA8LSBuYS5vbWl0KFRIUikNClRMUiA8LSBuYS5vbWl0KFRMUikNCg0KI1RyYW5zZm9ybWF0aW9uDQpCUzEgIDwtIGh1Z2UubnBuKEJTICkNClRNMTwtIGh1Z2UubnBuKFRNKQ0KQkxSMSA8LSBodWdlLm5wbihCTFIgKQ0KQkhSMTwtIGh1Z2UubnBuKEJIUikNClRIUjEgPC0gaHVnZS5ucG4oVEhSICkNClRMUjE8LSBodWdlLm5wbihUTFIpDQoNCiMgQ29tcHV0ZSBjb3JyZWxhdGlvbnM6DQpCUzIgPC0gY29yX2F1dG8oQlMxKQ0KVE0yIDwtIGNvcl9hdXRvKFRNMSkNCkJMUjIgPC0gY29yX2F1dG8oQkxSMSkNCkJIUjIgPC0gY29yX2F1dG8oQkhSMSkNClRMUjIgPC0gY29yX2F1dG8oVExSMSkNClRIUjIgPC0gY29yX2F1dG8oVEhSMSkNCmBgYA0KIyBDb21wdXRlIGNvcnJlbGF0aW9uczoNCg0KDQpgYGB7ciAsbWVzc2FnZSA9IEZBTFNFLHdhcm5pbmc9RkFMU0V9DQpCUzIgPC0gY29yX2F1dG8oQlMxKQ0KVE0yIDwtIGNvcl9hdXRvKFRNMSkNCkJMUjIgPC0gY29yX2F1dG8oQkxSMSkNCkJIUjIgPC0gY29yX2F1dG8oQkhSMSkNClRMUjIgPC0gY29yX2F1dG8oVExSMSkNClRIUjIgPC0gY29yX2F1dG8oVEhSMSkNCmBgYA0KDQojIE5ldHdvcmsgZXN0aW1hdGlvbg0KDQpgYGB7ciAsbWVzc2FnZSA9IEZBTFNFLHdhcm5pbmc9RkFMU0V9DQoNCk5hbWVzMWE8LWMoIlBBTlNTLVBvcyIsICJQQU5TUy1OZWciLCAiUEFOU1MtR2VuIiwgIkNEU1MiLCJCQ1NTLU5TIiwgDQogICAgICAgICAgICJCQ1NTLVBTIiwgIkJDU1MtTk8iLCAiQkNTUy1QTyIsICJCU0UiLCAiQlNDIiwgIlBBUiIpDQpMYWJlbHMxYTwtYygiQTEiLCJBMiIsIkEzIiwgIkIxIiwiQzEiLCJDMiIsIkMzIiwiQzQiLCJEMSIsICJEMiIsIkUxIikNCmdyb3VwLml0ZW0gPC0gbGlzdCgiUEFOU1MiID0gMTozLCJDRFNTIiA9IDQsIkJDU1MiID0gNTo4LCJCUyAiID0gOToxMCwiUEFSIiA9IDExKQ0KDQojTm8gZml0DQpsYXlvdXQodCgxOjIpKQ0KDQpuZXR3b3JrMSA8LSBxZ3JhcGgoQlMyLCBsYXlvdXQgPSAic3ByaW5nIiwgZ3JvdXBzPWdyb3VwLml0ZW0sICBncmFwaCA9ICJwY29yIiwgDQogICAgICAgICAgICAgICAgICAgdHVuaW5nID0gMC41LCBzYW1wbGVTaXplID0gMjU3LCBsZWdlbmQuY2V4ID0gMC4zLGdyb3VwcyA9IGdyb3VwLml0ZW0sDQogICAgICAgICAgICAgICAgICAgbm9kZU5hbWVzPU5hbWVzMWEsbGFiZWxzID0gTGFiZWxzMWEsdGl0bGUgPSAiQmFzZWxpbmUiLA0KICAgICAgICAgICAgICAgICAgIGNvbG9yPWMoIm9saXZlZHJhYjIiLCAiZGFya3NlYWdyZWVuMSIsICJ3aGVhdDMiLCAiZ29sZGVucm9kMiIsICJkYXJrb3JhbmdlMSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhcmtzbGF0ZWdyYXkyIiwgIm1lZGl1bXB1cnBsZSIpLGN1dCA9IDAuMDMsIG1heGltdW0gPSAxLGRldGFpbHMgPSBUUlVFLA0KICAgICAgICAgICAgICAgICAgIGJvcmRlcnM9RkFMU0UsIHRoZW1lPSJjb2xvcmJsaW5kIiwgdXNlUENIPVRSVUUpDQoNCm5ldHdvcmsyIDwtIHFncmFwaChUTTIsIGxheW91dCA9ICJzcHJpbmciLCBncm91cHM9Z3JvdXAuaXRlbSwgIGdyYXBoID0gInBjb3IiLCANCiAgICAgICAgICAgICAgICAgICB0dW5pbmcgPSAwLjUsIHNhbXBsZVNpemUgPSAyNTcsIGxlZ2VuZC5jZXggPSAwLjMsZ3JvdXBzID0gZ3JvdXAuaXRlbSwNCiAgICAgICAgICAgICAgICAgICBub2RlTmFtZXM9TmFtZXMxYSxsYWJlbHMgPSBMYWJlbHMxYSx0aXRsZSA9ICI2TSBmb2xsb3cgdXAiLA0KICAgICAgICAgICAgICAgICAgIGNvbG9yPWMoIm9saXZlZHJhYjIiLCAiZGFya3NlYWdyZWVuMSIsICJ3aGVhdDMiLCAiZ29sZGVucm9kMiIsICJkYXJrb3JhbmdlMSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhcmtzbGF0ZWdyYXkyIiwgIm1lZGl1bXB1cnBsZSIpLGN1dCA9IDAuMDMsIG1heGltdW0gPSAxLGRldGFpbHMgPSBUUlVFLA0KICAgICAgICAgICAgICAgICAgIGJvcmRlcnM9RkFMU0UsIHRoZW1lPSJjb2xvcmJsaW5kIiwgdXNlUENIPVRSVUUpDQpgYGA=