gpt4 book ai didi

R SNA : Creating a adjacency matrix containing all actors but only values of a subset

转载 作者:行者123 更新时间:2023-12-05 01:13:25 26 4
gpt4 key购买 nike

我的问题如下:

我正在使用 R SNA 包进行社交网络分析。可以说,我的起点是具有以下特征的边缘列表。每一行都包含一个公司名称、他们所涉及的项目的 ID 以及其他特征,比方说项目年份。一家公司可以在多个项目中,一个项目可以由多个公司的合作组成。示例:

Name   Project   Year
AA 1 2003
AB 1 2003
AB 2 2003
AB 3 2004
AC 2 2003
AC 4 2005

对于网络分析,我需要一个以所有公司作为行和列标题的邻接矩阵,我按如下方式构造它:

grants.edgelist <- read.csv("00-composed.csv", header = TRUE, sep = ";", quote="\"", dec=",", fill = TRUE, comment.char="")

grants.2mode <- table(grants.edgelist) # cross tabulate -> 2-mode sociomatrix

grants.adj <- grants.2mode%*%t(grants.2mode) # Adjacency matrix as product of the 2-mode sociomatrix`

现在我的问题是:我想在邻接矩阵上运行 netlm 回归,我在其中测试给定年份的网络如何解释下一年的网络。但是,因此我想将 grants.edgelist 子集化为(可以说)2003 年和 2005 年的集合。但是,我发现并不是所有的公司每年都在项目中,因此对应的邻接矩阵有不同的行和列。

现在我的问题是:如何获得包含行和列标题中所有公司的邻接矩阵,但它们的交集设置为我想观察的年份的零期望值。我希望我的意思很清楚。

非常感谢您。今天这个问题快把我逼疯了!

祝福

丹尼尔

最佳答案

假设同一家公司有可能在多年内从事同一个项目(否则,肯定有更简单的解决方案)。一种方法是构造一个 networkDynamic 对象,然后提取您想要的年份并将它们输入 netlm

library(networkDynamic)

# construct example dataset
firmProj <- matrix(
c('AA', 1, 2003,
'AB', 1, 2003,
'AB', 2, 2003,
'AB', 3, 2004,
'AC', 2, 2003,
'AC', 4, 2005),
ncol=3,byrow=TRUE)
colnames(firmProj)<-c('Name', 'Project', 'Year')

# make network encompassing all edges
baseNet<-network(firmProj[,1:2])

# get the ids/names of the vertices
ids<-network.vertex.names(baseNet)

# convert original data to a timed edgelist
tel<-cbind(as.numeric(firmProj[,3]), # convert years to numeric start time
as.numeric(firmProj[,3])+1, # convert years to numeric end time
match(firmProj[,1],ids), # match label to network id
match(firmProj[,2],ids)) # match label to network id

# convert to a networkDynamic object
dynFirmProj<-networkDynamic(baseNet, edge.spells = tel)

# bin static networks from the dynamic one, and convert them into list of adjacency matrices
lapply(
get.networks(dynFirmProj,start=2003, end = 2006, time.increment = 1),
as.matrix)

[[1]]
1 2 3 4 AA AB AC
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
AA 1 0 0 0 0 0 0
AB 1 1 0 0 0 0 0
AC 0 1 0 0 0 0 0

[[2]]
1 2 3 4 AA AB AC
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
AA 0 0 0 0 0 0 0
AB 0 0 1 0 0 0 0
AC 0 0 0 0 0 0 0

[[3]]
1 2 3 4 AA AB AC
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
AA 0 0 0 0 0 0 0
AB 0 0 0 0 0 0 0
AC 0 0 0 1 0 0 0

但是,我不确定 netlm 是否是查看此问题的最佳方式,因为因变量的二分数据“.. 由于分析的假设,强烈反对”。但也许我不太理解你的问题。

关于R SNA : Creating a adjacency matrix containing all actors but only values of a subset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13456120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com