1.R语⾔⽹络数据分析概述
R语⾔的⽹络数据分析⽤途多样⽽且实⽤。R语⾔提供了多个图形类型软件包实现分析,因此获得⼴泛应⽤。在⼤数据分析中,R语⾔有优势。R语⾔⽹络分析的特点是(1)编程简单。不想c、C++,java等难学。(2)⽹络分析灵活。例如
Cytoscape(http///)⽣物学⽹络软件,尽管能输出许多分析的报表,但是只能做常规的、固定的⽹络分析。不能接受多种的⽹络数据格式,⽽且不能适⽤不同的算法,例如修改图的⼴度优先算法,因此适应性差。
1.R语⾔创建⽹路分析图的软件包
network软件包
2.igraph和graph软件包
3.应⽤
⽹络社区⽤户分析(注意不是居住社区)、⽣物⽹络数据分析。
4.⽣物⽹络数据分析
R语⾔做⽣物学⽹络分析是不错的选择,R体系的Bioconductor项⽬为⽤户提供了⽹络分析的整体解决⽅案。然⽽R的⽹络分析优势却被许多⼈忽视,认为“R就是⽤来做统计的,Bioconductor就是⽤做芯⽚处理”,实际上Bioconductor是基因芯⽚。若把R当作C&C++或java类型的⾼级语⾔,⽽把Bioconductor当成开源的⽹络分析解决项⽬时,则R强⼤的⽹络分析功就能显⽰。
(1)Bioconductor⼈类基因组分析项⽬
此项⽬是R语⾔实现的、⾯向⼈类基因组信息分析的应⽤软件集合。Bioconductor项⽬中的软件包功能强⼤,提供各种⽅式的基因组数据分析和注释⼯具,其中⼤多数⼯具是针对DNA微阵列或基因芯⽚数据的处理、分析、注释及可视化的。同时,Bioconductor还提供许多与DNA微阵列相关的数据包。当然,bioconductor⽹络分析功能也很强⼤,它包括graph、RBGL、Rgraphviz等软件包来实现⽹络分析。graph包主要⽤于构建⽹络和简单的对⽹络属性的操作;RBGL包⽤于对⽹络分析算法的实现,包括求最短路径,求⼦⽹络等。Rgraphviz⽤于可视化⽹络。 R语⾔⽹络数据分析程序设计
R⽹络数据分析的两个关键问题是数据分析和建⽴图数据结构。在R语⾔中的⽹络数据分析中,两个流⾏的数据类型是UCinet和ERGM 模型。
R语⾔⽹络数据分析的标准过程是:
1.建⽴图结构
熊猫猪R语⾔将图结构称为⽹络格式数据,但是R语⾔增加了节点属性。创建图的主要内容是建⽴图的节点和边。图的数据结构有很多包括:
邻接矩阵、邻接表。R语⾔称为⽹络邻接矩阵(adjacency)等。R语⾔的软件包是network,在⽹络分析项⽬中另外有软件包,需要到⽹址下载,应⼩⼼慎重。函数network()建⽴图的邻接矩阵,例如,mtr是数据框
>library(network)
>net1<-network(mtr) #建⽴邻接矩阵
>summary(net1) #汇总统计邻接矩阵net1的数据特征,并且显⽰Network edgelist matrix
>plot(net1)
2.⽹络节点属性(vertice attibute)的导⼊
节点属性的原始⽂件建议保存在csv格式⽂件。
>node_attri<-read.csv(file.choose(),header=T)
小区自动售水机注意函数read.csv()的参数“header=T”表⽰源⽂件中的⾸⾏“senority | project | office”在导⼊时作为节点属性的名称,不可忽略。
3.建⽴完善的⽹络数据图
>net2<-network(mtr,vertex.attr = node_attri) #建⽴⽹络数据图,有节点属性
>net2 #⽹络数据图
... ...
Vertex attribute names: #注意节点属性vertex.names 建⽴
office projects seniority vertex.names #包括mtr的三项属性office、projects、seniority No edge attributes #没有建⽴边的属性
⽹络数据net2项⽬属性值project,
>net2 %v% 'projects'
发光棒2.R语⾔制作⽹络数据分析图
library<igraph>
igraph软件包画⽹络图,可以求⽹络的拓扑属性等,详细见igraph的帮助⽂档。
igraph软件包建⽴的数据结构有邻接矩阵或边列表等。微波烘箱
最新igraph软件包的节点是从1开始,
若原始数据中有0,则应将数据+1。
layout=layout.circle是环形布局。不能太稠密了,以致分不清线条。 [/backcolor]
其他布局,ingold,[/backcolor]
layout=layout.kamada.kawai[/backcolor]。 [/backcolor]
两个实例,⼀个是对多个数据制作⽹络分析图,⼀个是对社交⽹络数据建⽴⽹路数据图。
eg1.多个数据建⽴⽹络分析图
>net.data <- read.table("d:/")
>graph.data.frame(net.data[1:2]) %>%
set.edge.attribute("weight",value=net.data[[3]]) %>%
>plot(vertex.size=5,vertex.label=NA,edge.arrow.size=0.3)
eg2.社交⽹络数据图
igraph包的作图功能绘制相应的⽹络图。(社交⽹络)
library(igraph)
people = data.frame(id = tmp1[, 4], name = tmp1[, 3])
gg = graph.data.frame(d = tmp2, directed = F, vertices = people)
is.simple(gg)
gg = simplify(gg)## 去掉重复的连接
is.simple(gg)
dg = degree(gg)
gg = subgraph(gg, which(dg > 0) - 1)## 去掉孤⽴点##
png("net_simple.png", width = 500, height = 500)
par(mar = c(0, 0, 0, 0))
set.seed(14)
plot(gg, layout = ingold, vertex.size = 5, vertex.label = NA, lor=grey(0.5), de = "-")
##dev.off()
3.R语⾔实现⽣物学⽹络分析
在R语⾔编程环境中安装graph、RBGL、Rgraphviz软件包。
ttx2基板eg1.构建4个蛋⽩质构成的蛋⽩质⽹络图
蛋⽩质1与2、3有物理作⽤,因此⽹络图中存在边。实际是建⽴数据结构的图。
library(graph)
#character类型的变量存储蛋⽩质⽹络的结点集,nodes={蛋⽩质1,蛋⽩质2,蛋⽩质3}。建⽴图数据结构g1。nodes<-c("protein1","protein2","protein3","protein4")
g1<-new("graphNEL",nodes=nodes, edgemode="undirected")
#plot图检验
library(Rgraphviz)
plot(g1)
#建⽴边⽤函数addEdge()
#建⽴protein1和protein2节点间的边
g2 <- addEdge("protein1","protein2", g1)
plot(g2)
#建⽴protein1和protein3节点间的边
g3 <- addEdge("protein1","protein3", g2)
plot(g3)
#增加结点⽤函数addNode()
#增加蛋⽩质(protein5),它和protein1有⼀条边。
g4<-addNode("protein5",g3)
g5<-addEdge("protein1","protein5",g4)#增加蛋⽩质节点,也应增加它和其他节点间的边
plot(g5)
eg2.⽤边集合的⽅式建⽴蛋⽩质⽹络图数据结构
nodes<-c("protein1","protein2","protein3","protein4")
#构建⼀个空的长度为4的list变量edges。edges中将存储边的信息。它的长度为4,表⽰⽹络有4个结点。
edges<-vector("list",length=4)
#把这4个结点的名称赋给edges的名称属性。
names(edges)<-nodes
#构建边protein1-protein2,protein1-protein3
edges[[1]]<-list(edges=c("protein2","protein3"))
#构建边protein2-protein1
edges[[2]]<-list(edges=c("protein1"))
#构建边protein3-protein1
edges[[3]]<-list(edges=c("protein1"))
#构建蛋⽩质⽹络图
gR<- new("graphNEL", nodes=nodes, edgeL=edges,edgemode="undirected")
蛋⽩质⽹络图的边集合edges是⼀个两层的list结构。
参考资料
1. 社会⽹络分析:探索⼈⼈⽹好友推荐系统
gpu虚拟化/thread-3166191-1-1.html
2. ⽤R语⾔实现⽣物学⽹络分析
/zhoulili1987619@126/blog/static/3530820120148178125084
3. 美国宾⼣法尼亚州⽴⼤学教学资源⽹址
sites.stat.psu.edu/~dhunter/Rnetworks/
4. ⽤R语⾔建⽴⽹络格式的数据
/s/blog_3d4f90bb0102wd94.html
链接地址:rsoftware./article-1975189.html