library(igraph)
g1<-read.csv("i50.csv",header = TRUE,sep="\t")
g2 = graph.data.frame(d = g1,directed = F)
# g1<-data.frame(g1$ssbm,g1$uid)
# x<-par(bg="white")
V(g2) #查看顶点
E(g2) #查看边
plot(g2,layout=layout.fruchterman.reingold,vertex.label=NA)
plot(g2,layout=layout.fruchterman.reingold,vertex.size=2, vertex.color="red",edge.arrow.size=0.05)
plot(g2,layout=layout.fruchterman.reingold,vertex.size=2, vertex.color="red")
plot(g2)
其中原始数据文件i50.csv是两列,术式组合同时出现一次,则记录一行
--- 只是单纯地套用之前网上查到的,不太理解含义,画出的图如下:
测试方法时使用了组合数较多的四位诊断编码I25.1,原本自然组合有1228种
1. edge.betweenness.community -- (231分类)
2. walktrap.community -- (72个分类)
3. leading.eigenvector.community-- (7个分类)
4. fastgreedy.community--执行时间太长舍弃
5. multilevel.community--(8个分类)
6. label.propagation.community-- 执行时间太长舍弃
上图是一个手术编码分类结果将手术编码划归到不同的组里,并且同一个手术编码只会在一个组里出现,结合到将30万条自由组合对应到72个分类(以方法2,walkgrap.community为例)中的方法是:比较相同的手术编码个数,取72个分类中和一条自由组合下手术编码相同个数最多的作为该自由手术组合的新分类标记,个数相同就随便取一个。
这种新的自由组合压缩方法得到的分类,有个严重的问题就是业务含义不清晰,手术分组结果看不到明显规律
病例数在新分类下的分布也不是很均匀:
还不如层次聚类得到的结果好,CV更低,且例数在各新组内分布也较为均匀。