R 中的基本 SNA? - 如何加载网络数据

2023-11-27

几年前,我使用 UCINET 进行一些社交网络分析。这些天我想再次使用 SNA - 但这次我更喜欢统一的分析框架 - 对我来说就是 R。

我查看了 sna 和 statnet 文档,但有点不知所措。

我想做的:首先:加载直接从例如中提取的二分/关联矩阵网络调查(通常很有价值)。将此矩阵转换为两个邻接矩阵(逐个隶属关系和逐个案例)。它也可以是一个有方向的、有价值的案例矩阵。

第二:加载顶点属性的文件(也来自例如网络调查数据)。

第三:然后用例如绘制图表根据某种中心性度量的顶点大小,由某些顶点属性着色和标记,仅绘制值超过特定阈值的边。

这是一个迷你关联矩阵:

data <- structure(list(this = c(0, 1, 0, 1, 1, 2, 0, 1, 3), 
 that = c(1, 1, 3, 0, 0, 0, 2, 1, 0), 
 phat = c(0, 0, 2, 1, 0, 0, 1, 2, 0)), 
 .Names = c("this", "that", "phat"), 
 row.names = c("a", "b", "c", "d", "e", "f", "g", "h", "i"), 
 class = "data.frame")

带有一些属性数据:

att <-structure(list(sex = structure(c(1L, 1L, 2L, 2L, 1L, 2L, 1L, 
1L, 1L), .Label = c("F", "M"), class = "factor"), agegr = c(1L, 
1L, 3L, 1L, 3L, 1L, 1L, 3L, 1L), place = structure(c(1L, 2L, 
1L, 1L, 1L, 1L, 2L, 2L, 1L), .Label = c("Lower", "Upper"), 
class = "factor")), .Names  = c("sex", 
"agegr", "place"), row.names = c(NA, -9L), class = "data.frame")

附注也许 SNA 适合这篇文章的标签?我只是没有必要的善意:-)


这是一个很好的问题,为进一步探索 R 中的 SNA 提供了一些机会。我更熟悉igraph包,所以我将使用该库中的函数来回答您的问题。

你的问题的第一部分有一个相当简单的解决方案:

# Convert data frame to graph using incidence matrix
G<-graph.incidence(as.matrix(data),weighted=TRUE,directed=FALSE)
summary(G)
# Vertices: 12 
# Edges: 30 
# Directed: TRUE 
# No graph attributes.
# Vertex attributes: type, name.
# Edge attributes: weight.

这将返回一个图形对象,该对象具有来自关联矩阵的无向边和加权边。要从二分图生成从属关系图,您有两种选择。快速而简单的方法是这样的:

proj<-bipartite.projection(G)

这将返回一个列表,其中每个投影索引为 $proj1 和 proj2,不幸的是这些项目不包含执行此操作时通常需要的边权重。要做到这一点,最好的解决方案是自己简单地执行矩阵乘法。

# Create the matrices, and set diagonals to zero
M<-as.matrix(data)
affil.matrix<-M%*%t(M)
diag(affil.matrix)<-0
cases.matrix<-t(M)%*%M
diag(cases.matrix)<-0
# Create graph objects from matrices
affil.graph<-graph.incidence(affil.matrix,weighted=TRUE)
cases.graph<-graph.incidence(cases.matrix,weighted=TRUE)

使用属性数据生成图有点棘手,需要更多编码,但我建议查看一些igraph 示例, 甚至我自己的一些因为有很多东西可以帮助您入门。祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中的基本 SNA? - 如何加载网络数据 的相关文章

  • R 中二维核密度估计的混乱

    核密度估计器用于估计特定的概率密度函数 参见mvstat net http www mvstat net tduong research seminars seminar 2001 05 and scikit learn 文档 http s
  • dplyr 通过评估查找单元格值来改变特定列

    我已经使用定额 符号和求值探索了各种选项 但我似乎无法获得正确的语法 这是一个示例数据框 data frame A letters 1 4 B letters 26 23 C letters c 1 3 5 7 D letters c 2
  • R 中的离散化

    有谁知道有一个包可以实现连续变量离散化的监督学习算法 dprep 包包含类似的功能 但该包已被弃用 有任何想法吗 感谢您的帮助 您仍然可以使用dprep包 但你必须从源代码安装它 我刚刚测试过 它运行良好 不过 您或许可以看看离散化 htt
  • 我想将两个变量合并为一个具有日期格式的变量

    我有一个包含几个月的字符列的数据集 MONTH 和指示年份的数字列 YEAR 为了将其用作面板数据 我需要将这些结合起来YEAR and MONTH转换为日期格式的变量 我尝试过改变变量MONTH转换为数字格式 然后合并MONTH与柱YEA
  • 从谷歌街道地址中提取城市和州信息

    我有一个数据集 其中包含不同点位置的纬度 经度信息 我想知道与每个点关联的城市和州 按照此example https stackoverflow com questions 22911642 applying revgeocode to a
  • 在ggplot2中设置base_size时重叠轴标签

    我正在改变base size via theme set 当我在屏幕上查看结果图时 它看起来很棒 但是 当我将其另存为 pdf 时 x 轴标签有点太接近轴编号 一件小事 theme set theme bw base size 9 不会造成
  • 使用同一变量的多个子集创建新数据框

    我想创建一个新的数据框 其中的列是由不同变量分割的同一变量的子集 例如 我想创建一个新的变量子集 b 其中列由不同变量 year 的子集分割 set seed 88 df lt data frame year rep 1996 1998 3
  • R 中带有自定义字段类的参考类?

    我想在另一个引用类中使用自定义引用类 但此代码失败 nameClass lt setRefClass nameClass fields list first character last character methods list ini
  • 在 R 中提取栅格的最快方法(提高我的可重现代码的时间)

    我想知道我是否已最大化提取栅格中某个点周围缓冲区域平均值的速度 本地的性能可以进一步提高吗 I use parallel mclapply已经 我知道我可以通过在集群上设置和运行它来获得进一步的收益 使用集群或获得更多的CPU不是我正在寻找
  • 如何使 quarto html 文档使用全屏宽度?

    我正在使用 R 创建一个四开 html 文档并将其发布到 rpubs com 上的网络上 该文档仅使用窗口的中间三分之一 而将左侧和右侧的三分之一留为空白 我怎样才能告诉四开使用整个窗口 这是一个非常简单的可重现示例 由于某种原因 它确实使
  • 是否有一个 R 函数可以获取 n 个对象取 k P(n,k) 的排列数?

    或者我必须给予 P nk lt factorial n factorial n k or P nk lt choose n k factorial k 谢谢 我不知道任何现有的功能 如果 n 较大 您的第一个建议将会失败 当编写为函数时 你
  • 在 RStudio 中自动格式化 R 代码

    RStudio 中是否有自动格式化代码的可能性 I found this https stackoverflow com questions 3017877 tool to auto format r code 但未与RStudio连接 还
  • 将嵌套 for 循环转换为 R 中的并行循环

    下面您可以在 R 中找到一段代码 我想将其转换为使用多个 CPU 作为并行进程运行 我尝试使用foreach包 但并没有走得太远 考虑到我有 3 级嵌套循环 我找不到一个很好的例子如何让它工作 我们将非常感谢您的帮助 下面的代码示例 我做了
  • R - 数据框列中唯一值的数量

    对于数据框df 我需要找到的唯一值some col 尝试了以下方法 length unique df some col 但这并没有给出预期的结果 然而length unique some vector 对向量进行处理并给出预期结果 创建 d
  • 使用 R 的 qdap 包估计文档极性,无需使用 sendSplit

    我想申请qdap s polarity函数对文档向量进行处理 每个文档可以包含多个句子 并获得每个文档相应的极性 例如 library qdap polarity DATA state all polarity Results 1 0 81
  • 使用自定义指标的标准差选择带插入符号的调整参数

    我将插入符号与自定义拟合指标一起使用 但我不仅需要最大化该指标 还需要最大化其置信区间的下限 所以我想最大化类似的东西mean metric k stddev metric 我知道如何手动执行此操作 但是有没有办法告诉插入符使用此函数自动选
  • 如何设置对“句首字母大写”的引用?

    虽然我的条目在bibliography bib都是句子大小写 我的参考文献变成标题大小写 红色下划线 我该如何解决这个问题 Edit user2554330 的回答表明 csl文件必须被编辑 由于 rmarkdown 使用芝加哥引文和参考文
  • 在 R 中将数组转换为矩阵

    我有一个数组 其中包括名为 comp 的项目 是 否 的两个熟练度变量 theta0 theta1 这需要转换为一个矩阵 有什么方法可以转换像底部那样的矩阵吗 我的数组如下所示 gt priCPT i6 comp Yes theta1 th
  • GGplot为点添加数据标签

    如何使用 ggplot 将数据标签添加到点 我有一个名为 stacked 的堆叠数据框 gt head stacked time value variable 1 100 152 2211 gg 2 110 146 3304 gg 3 11
  • 将多个ggplot2图保存为列表中的R对象并在网格中重新显示

    我想在大型 for 循环期间将多个绘图 使用 ggplot2 保存到列表中 然后随后在网格中显示图像 使用 grid arrange 我已经尝试了两种解决方案 1 将其存储在列表中 如下所示 pltlist qplot lt qplot 然

随机推荐