R语言 社会网络分析

R语言 社会网络分析

社会网络分析(SNA)是通过使用图论来探索或检查社会结构的过程。它用于测量和分析网络的结构属性。它有助于测量团体、组织和其他连接实体之间的关系和流动。

在我们开始之前,让我们看看一些网络分析的术语

  • 网络被表示为一个图形,它显示了每个顶点(或节点)和其邻居之间的链接(如果有的话)。
  • 表示顶点之间联系的线被称为边。
  • 一组顶点,如果通过图上的边可以相互到达,则称为一个组件。
  • 从一个顶点到另一个顶点的沿线被称为路径。

为了进行网络分析,需要使用以下软件

  • R软件
  • 软件包。
    • igraph
    • sna (社会网络分析)

社会网络分析中使用的函数

  • library() function

    library()函数加载和附加附加包。

语法:

library(package, help, logical.return = FALSE....)
R
  • make_full_graph() function

    该函数用于创建一个完整的图形。

语法:

make_full_graph(n, loops = FALSE, directed = FALSE)
R
  • make_ring() function

    环是一个一维的格子,它可以创建任意维度的格子,周期性或非周期性的格子。

语法:

make_ring(n, directed = FALSE, circular = TRUE, mutual = FALSE)
R
  • make_star() function

    这个函数创建了一个星形图,其中每个顶点都与中心顶点相连,而没有其他顶点。

语法:

make_star(n, center = 1, mode = c("in", "out", "mutual", "undirected"))
R
  • sample_gnp() function

    这是一个简单的模型,每个可能的边都是以相同的恒定概率创建的。

语法:

sample_gnp(n, p, loops = FALSE, directed = FALSE)
R
  • plot() function

    该函数用于在活动图形窗口中绘制给定的图形。

语法:

plot(defined_graph_name)
R

创建图表样本

完整的图表

语法

make_full_graph ()
R

参数

  • 顶点的数量。
  • directed = TRUE/FALSE 是否创建一个有向图。
  • loops = TRUE/FALSE 是否在图中添加自循环。

例子

library(igraph)
Full_Graph <- make_full_graph(8, directed = FALSE)
plot(Full_Graph)
R

输出:

使用R编程的社会网络分析

环形图

环形图是一个一维网格,是make_lattice函数的一个特例。

语法

make_ring ()
R

参数

  • 顶点的数量。
  • directed =TRUE/FALSE 是否创建一个有向图。
  • mutual =TRUE/FALSE 有向的边是否是相互的。在无向图中,它被忽略。
  • circular =TRUE/FALSE 是否创建圆形环。

例子

library(igraph)
Ring_Graph <- make_ring(12, directed = FALSE, mutual = FALSE, circular = TRUE)
plot(Ring_Graph)
R

输出:

使用R编程的社会网络分析

使用R编程的社会网络分析

星形图

星形图是指每一个顶点都与中心顶点相连,而没有其他顶点。

语法

make_star()
R

参数

  • 顶点的数量
  • center = 中心顶点的标识
  • 模式 = 它定义了边的方向,即进/出/互换/不定向。
    • in – 边缘指向中心。
    • out – 边缘从中心指向。
    • mutual – 用相互的边创建一个有向星形图。
    • undirected – 边缘是不定向的。

例子

library(igraph)
Star_Graph <- make_star(10, center = 1)
plot(Star_Graph)
R

输出:

使用R编程的社会网络分析

生成随机图(gnp)

下面的图形是以给定的常数概率随机生成的,可以创建一条边。

语法

sample_gnp()
R

参数

  • 图中顶点的数量
  • 在随机顶点之间画一条边的概率
  • 有向 = FALSE/TRUE
  • 循环 = FALSE/TRUE

例子

library(igraph)
gnp_Graph <- sample_gnp(20, 0.3, directed = FALSE, loops = FALSE)
plot(gnp_Graph)
R

同样地,你可以通过改变参数来尝试不同的图形,如下所示。

输出:

使用R编程的社会网络分析

使用R编程的社会网络分析

使用R编程的社会网络分析

使用R编程的社会网络分析

分析图形

图的连接性

图中顶点的基本衡量标准之一是它们与其他顶点有多少联系。这个衡量标准可以是连接数占总的可能连接数的比例,也叫密度。
现在让我们来找出随机图中每个节点/顶点的程度。

语法

degree(graph)
R

程度函数是用来找出每个顶点所连接的顶点数量。

例子

library(igraph)
gnp_Graph <- sample_gnp(7, 0.4, directed = FALSE, loops = FALSE)
plot(gnp_Graph)
degree(gnp_Graph)
R

输出

使用R编程的社会网络分析

图的间隙度

在社会网络中,interness被定义为网络成员群体之间的桥梁。计算间性的一种方法是计算每个顶点的间性。一般来说,与一个顶点相关的间性得分越高,对网络的控制就越强。

语法

betweenness(graph)
R

betweenness()函数的定义是经过一个顶点或一条边的最短路径的数量。

例子

library(igraph)
gnp_Graph <- sample_gnp(7, 0.4, directed = FALSE, loops = FALSE)
plot(gnp_Graph)
betweenness(gnp_Graph)
R

输出

使用R编程的社会网络分析

网络密度

网络的密度被定义为连接数与可能连接数的总和。一个完整的图的密度=1,而其他网络可以有一个十进制的值。

语法

edge_density(graph)
R

它是边的数量与可能的边的总数的比率。

例子

library(igraph)
sample_graph <- sample_gnp(10, 0.3, directed = FALSE)
plot(sample_graph)
sample_density <- edge_density(sample_graph, loops = FALSE)
sample_density
R

输出

使用R编程的社会网络分析

识别网络中的悬崖

悬崖可以被定义为一组顶点,其中所有可能的链接都存在。

语法

cliques(graph, min=NULL,max=NULL)
R

这个函数可以找到无定向图中所有最大或最大的悬崖。

例子

library(igraph)
sample_graph <- sample_gnp(20, 0.3, directed = FALSE, loops = FALSE)
plot(sample_graph)
clique_num(sample_graph, min=4)
R

输出

使用R编程的社会网络分析

寻找图的组成部分

一组相连的网络顶点被称为一个组件。因此,一个有可能有多个不相互连接的组件。

语法

components(graph)
R

这将计算出一个图的强连接或弱连接部分。

例子

library(igraph)
sample_graph <- sample_gnp(30, 0.07, directed = FALSE, loops = FALSE)
plot(sample_graph)
components(sample_graph)
R

输出

使用R编程的社会网络分析

图上的随机行走

现在让我们使用random_walk函数生成一个随机图并在其中行走。

语法

random_walk(
  graph,
  start_node,
  Number_of_steps,
  stuck = "return"/"error"
)
R

这个函数允许我们从start_node开始做随机行走,直到Number_of_steps,如果卡住或不能前进,则返回或给出错误。

例子

library(igraph)
sample_graph <- sample_gnp(30, 0.07, directed = FALSE, loops = FALSE)
plot(sample_graph)
random_walk(sample_graph, 8, 10, stuck = "return")
R

输出

使用R编程的社会网络分析

网络的可视化

改变边和顶的颜色

现在我们将尝试学习如何修改顶点和边的颜色,使图形更加丰富多彩。

使用R编程的社会网络分析

使用R编程的社会网络分析

set_vertex_attr(graph, name_attr, value)
R

我们将尝试用这个函数来设置顶点的一个特定属性值。

set_edge_attr(graph, name, value)
R

这将是一个类似的函数,但不同的是它设置了边缘的属性。

写出一个图形

使用下面的函数,你可以将图形的边缘列表保存到你的计算机上,并指定路径。

write.graphs()
R

使用R编程的社会网络分析

使用R编程的社会网络分析

setwd(dir)
R

设置工作目录功能允许你设置你想要的工作目录。

注意: 在设置路径时,所有的反斜线应改为正斜线。

getwd()
R

这个函数返回你当前使用的dir路径。

write_graph(graph, format)
R

这个功能允许你以特定的格式导出图形,如 edgelist/pajek/ncol/lgl/graphml/dimacs/gml 等。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册