ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

R语言复杂网络分析实战:用贸易数据拆解全球贸易结构

R语言复杂网络分析实战:用贸易数据拆解全球贸易结构 简介基于R语言构建的2018年国际贸易网络分析脚本聚焦国家间主要贸易关系面向社会科学研究者、网络科学爱好者及R语言数据分析师可帮助用户在统一框架内完成从贸易矩阵到复杂网络指标的提取与解读同时兼顾整体贸易活跃度与局部桥梁节点的角色刻画。压缩包内含1个R源文件容量仅7KB适合快速下载与本地运行。脚本完整实现了网络密度、平均路径长度、传递性、互易性、分类性、自旋玻璃社区发现、结构等价性分析以及指数随机图模型ERGM等核心算法能够系统揭示各国家在进出口贸易中的角色、贸易集群的形成机制与整体网络演化规律注释清晰便于二次修改与教学演示。已有233人学习适合用于论文复现、课堂教学或作为扩展自身网络分析技能的起点。 如果你只是想要一份“2018年谁出口最多、谁进口最多”的榜单那用Excel拉个透视表就够了根本用不到网络分析。但贸易关系的真实结构远不止排名那么简单——哪些国家之间形成了紧密的贸易圈贸易流是高度集中还是分散在全球各处国家之间是单向依赖还是双向互惠这些问题在排名表里一个都回答不了。TradeNetworkDistributionsAnalysis就是针对这类结构性问题做的一次完整R语言分析实践以2018年国家间主要贸易关系为网络对象系统计算网络密度、平均路径长度、传递性、互易性、分类性再用自旋玻璃社区检测算法识别贸易板块用结构等效性发现扮演相似角色的国家最后用指数随机图模型解释连接形成的统计规律。适合想深入理解全球贸易格局、复杂网络分析或者正在找真实数据练手社会网络方法的人参考。1. 为什么网络视角比“贸易总额排名”更能说明问题1.1 单看总额你看不到什么2018年是一个很有意思的数据年份。如果只用贸易总额观察你会看到一张几乎每年都差不多的排行榜几个主要经济体排在最前面后面跟着一批制造业和资源型国家。但“谁排第几”这种信息丢失了大量结构细节。举个例子同样是一个出口大国把货卖给周边十个国家与卖给一个超级大国背后反映的供应链关系、风险抵抗力和议价能力是完全不同的。总额相同网络位置可能天差地别。网络分析把贸易关系还原成一张有向加权图节点是国家和地区边是国家之间的进出口流动边的粗细就是贸易额。一旦进入这种表示方式很多问题就能用图论指标来量化——密度衡量网络整体的连接充分程度平均路径长度衡量货物流通需要经过多少“中间人”互易性衡量两国之间是单向依赖还是双向往来同配性衡量“大国更爱和大国交易”还是“大小国错位互补”。这些指标单看任意一个都不全面放在一起就能拼出一张结构画像。1.2 分析链路与阅读路径这篇博文按一条完整的分析链路展开顺序是刻意的不是随意排列。先用数据准备阶段把原始贸易数据处理成干净的igraph网络对象这是所有后续计算的基础然后在第3节把描述性全局指标一口气算完建立对网络整体特征的直觉第4节做社区检测把网络拆成若干贸易板块回答“全球贸易是不是事实上分层分块”的问题第5节的结构等效性是一个容易和社区发现混淆的互补分析它不看“和谁连在一起”而看“扮演的角色是否相同”最后第6节用ERGM做推断把前面所有的描述性发现纳入一个统一的统计模型检验哪些网络机制显著解释连接的存在。如果你只对某一个指标感兴趣可以直接跳到对应章节。但如果你想把整条技术路线跑通并用于自己的数据建议按顺序读一遍尤其是第2节的数据清洗很多坑不在模型里而在你喂给模型的数据里。2. 数据准备从2018年原始贸易数据到igraph网络对象2.1 数据源与“主要贸易关系”的筛选口径贸易网络分析的第一步永远是拿到可靠的国别双边贸易数据。常用的公开数据源有UN Comtrade、世界银行WITS、CEPII的BACI数据库。BACI是很多网络分析论文的首选因为它对Comtrade原始数据做了镜像校准把“A国报告的出口”和“B国报告的进口”之间的不一致统一处理过边权重质量高很多。2018年的数据在BACI里通常以HS6位码或SITC Rev.2分类提供。处理时一般按年份聚合成双边总贸易额不需要保留到具体商品分类除非你想做特定行业的贸易网络。这里一个容易踩坑的地方是原始数据会包含“World”“欧洲区域”“未分类”这类聚合条目必须在聚合前剔除否则它们会成为网络的超级枢纽严重扭曲指标。实操时建议用ISO3三位国家代码作为节点标识而不是用国家名称。原因是不同数据源之间的名称拼写差异非常大代码是稳定的连接键。我见过不少人在合并年份数据时因为名称匹配失败丢掉了几百条记录换用ISO3代码后问题立刻消失。至于“主要贸易关系”的筛选口径通常有两种一是按贸易额保留头部边比如只保留双边贸易额达到当年全球贸易总额0.01%以上的边二是按入度出度阈值筛选比如每个国家只保留前若干大贸易伙伴。第二种更常用因为它能保留网络中的“边缘国家”节点避免把大量小国完全踢出图外。2.2 清洗、对称化与权重处理拿到原始贸易数据后清洗流程我一般是这样的library(dplyr) # 假定原始数据包含 export_country, import_country, year, trade_value 四列 # 剔除聚合条目 trade_clean - trade_raw %% filter( !export_country %in% c(WLD, REG, UNS), !import_country %in% c(WLD, REG, UNS), year 2018, trade_value 0 ) %% select(exporter export_country, importer import_country, trade_value) %% group_by(exporter, importer) %% summarise(trade_value sum(trade_value, na.rm TRUE), .groups drop)这里有几个细节值得说明。关于方向出口国到进口国的有向边如果后面做无向分析需要显式对称化否则igraph在转换时会按默认规则处理可能不是你想要的结果。关于单位BACI的贸易额单位通常是千美元在做阈值筛选前先把单位统一避免数量级差异引发的混乱。关于自环同一个国家向自己出口的数据基本不存在但万一出现必须删掉因为自环会干扰传递性和同配性计算。清洗完成后通常还会做一步对数变换。贸易额的分布是典型的长尾少数巨型贸易流会主导后续很多指标的计算。以权重形式保留原始值的同时构造一个对数权重的副本用于社区检测和可视化是一个很实用的做法。igraph里边的权重直接用原始值、对数变换值会得到不同的社区划分结果这一点在第4节还会提到。2.3 构建igraph对象与第一轮检查从边表到igraph对象非常直接library(igraph) net - graph_from_data_frame( d trade_clean, directed TRUE, vertices country_list ) E(net)$weight - trade_clean$trade_value E(net)$log_weight - log1p(trade_clean$trade_value)构建完之后不要急着算指标先做一轮基础体检。# 网络规模 vcount(net) ecount(net) # 是否有自环 sum(which_loop(net)) # 是否有重边理论上清洗后不会有 sum(which_multiple(net)) # 是否有孤立节点 sum(degree(net) 0)如果孤立节点比例过高说明你的边筛选阈值太严格或者国家列表里混入了没有参与2018年主要贸易关系的经济体。要不要保留孤立节点取决于分析目的算密度时孤立节点会显著拉低指标如果你关注的是“主要贸易关系构成的核心网络”可以只保留至少有一条边的节点但如果你关注“哪些国家被边缘化了”那必须把孤立节点留在图里。两种选择没有对错关键是论文或报告里要讲清楚你的口径否则别人复现时会对不上数字。3. 全局拓扑指标密度、平均路径、传递性、互易性、同配性逐个拆解3.1 密度与平均路径长度贸易网络的“连通度”体检有了igraph对象密度和平均路径长度都是一行代码的事# 网络密度有向网络的分母是 N*(N-1) edge_density(net) # 平均路径长度 mean_distance(net, directed TRUE)密度衡量的是“所有可能存在的贸易连接中有多少实际存在”。2018年全球贸易网络的密度通常很低看起来可能只有百分之几但这是正常的。全球有两百来个国家和地区理论上两两之间都可能产生贸易流但实际上很多小国之间根本没有直接贸易它们通过区域枢纽国或全球枢纽国中转。密度低不代表贸易全球化程度低而是说明贸易网络有明显的稀疏性和层级性。平均路径长度则负责回答“两个任意国家之间贸易流要经过几步才能到达”。如果只看直接贸易关系很多国家对之间是不连通的所以mean_distance在计算时默认只考虑有路径相连的节点对。这里有一个很常见的坑如果网络里有大量与国家主体不连通的孤立子网mean_distance会忽略它们让你误以为网络很“紧凑”。建议先检查最大连通分量的大小和占比同时报告全图的平均路径长度和最大连通分量内部的平均路径长度两个数字后者更有实际意义。3.2 传递性与互易性三角关系与双边对等性传递性或者说聚类系数衡量的是“朋友的朋友是不是也是朋友”。放到贸易语境里就是假设A国同时与B国、C国有贸易连接那么B国和C国之间也产生贸易连接的概率有多大2018年贸易网络如果区域板块清晰板块内部的传递性会显著高于全图平均水平因为区域贸易协定和地理邻近性会催生密集的三角关系。# 全局传递性 transitivity(net, type global) # 局部传递性的分布 local_trans - transitivity(net, type local) summary(local_trans)注意igraph的transitivity函数在处理有向图时默认行为可能是把图当作无向图处理需要仔细阅读参数说明里对directed参数的处理。我更建议的做法是在分析有向贸易网络时单独构建一个无向副本计算传递性然后再对比有向副本的结果这样能更清楚方向性对聚集结构的影响。互易性是有向网络的专属指标它回答的是“如果A国向B国出口那么B国是否也向A国出口”。全球贸易网络通常表现出较高的互易性因为绝大多数国家之间都存在双向的进出口流只是规模不对称。但互易性高不代表关系对等可能只是“你卖我飞机我卖你衬衫”这种互补性贸易。所以在报告互易性的同时我强烈建议额外计算每一对互惠边之间的额差用不对称系数来描述关系的对等程度。# 互易性系数 reciprocity(net)3.3 同配性大国是否倾向和大国连接同配性是一个经常被忽视但非常有信息量的指标。它衡量的是“相似属性的节点是否更容易连在一起”。在贸易网络里最常用的两个属性版本是基于节点度数的同配性比如贸易伙伴多的国家是否更爱和贸易伙伴多的国家连接和基于区域或收入组的混合矩阵比如欧洲国家是否更爱与欧洲国家连接。# 基于度的同配性 assortativity_degree(net, directed TRUE) # 基于属性的同配性假定节点属性列名为 region assortativity_nominal(net, V(net)$region, directed TRUE)如果度同配性接近0或者为负说明网络更接近“核心-边缘”结构高连接度的国家连接了大量低连接度国家而不是彼此强强连接。这种结构在真实贸易网络里很常见因为全球分工使得少数核心经济体与众多资源国、制造国连接核心国之间的直接贸易占比虽然大但它们在总连接数中的占比被大量核心-边缘边稀释了。同配性指标和平均路径长度、密度放在一起看能帮你判断这个网络的“骨架”是扁平的还是层级的。3.4 指标汇总表的读法做完一轮全局指标后我习惯把结果整理成一张汇总表方便对照。指标数值示例解读方向节点数 / 边数180 / 3200网络覆盖范围与连接充分度密度0.10边足够稠密时适合社区检测平均路径长度2.4是否存在短路径效应传递性0.35三角关系是否显著互易性0.52双向关系占比度同配性-0.12偏向核心-边缘结构看这张表的时候不能只看单个数字要几项联合判断。密度低但平均路径短说明网络可能有一个小规模高连通的核心外围节点通过这个核心快速互达传递性高但互易性低说明存在“单向团结”的结构比如多个国家都向同一个区域中心出口但中心并不以同等规模回流。这种交叉解读才是网络分析相对单纯回归分析最大的增量价值。4. 自旋玻璃社区检测从物理模型到贸易“朋友圈”4.1 Potts模型的直觉社区检测的目标是把网络分成若干内部连接紧密、外部连接稀疏的节点集合。在贸易网络里这些集合通常对应区域贸易板块或价值链集群。自旋玻璃算法是一个物理学味道很浓的方法它把每个节点看成一个小磁铁磁铁有不同朝向对应社区编号相邻节点之间通过边产生相互作用如果两个相连节点朝向相同则体系能量降低反之升高。算法寻找的是使整个系统能量最低的朝向组合这个组合就是社区划分。如果觉得物理模型太抽象可以换一个生活化类比想象一群参加晚宴的人每一对认识多年并且关系不错的人会希望被安排在同一个桌上降低能量不认识或者关系疏远的人坐在一起会让彼此不自在升高能量。自旋玻璃算法就是安排桌次的最佳策略让熟人尽量同桌让陌生人尽量分桌最终形成若干“关系圈”。4.2 R语言实现与必须注意的无向化处理igraph里实现自旋玻璃算法的是cluster_spinglass函数。但这个函数有一个非常容易踩的坑它要求输入图必须是无向图。如果你直接拿有向贸易网络去跑要么报错要么在部分版本里悄悄把方向信息忽略掉导致结果和预期不符而且你往往意识不到。# 先构建无向副本边权重取两方向之和 net_und - as.undirected(net, mode collapse, edge.attr.comb list(weight sum, log_weight sum, ignore)) # 运行自旋玻璃社区检测 set.seed(42) spinglass_result - cluster_spinglass( net_und, weights E(net_und)$log_weight, spins 10, start.temp 1, stop.temp 0.01, cool.fact 0.99, update.rule config )需要注意的参数spins是允许的社区数量上限。不要把它理解为“必须分成几个社区”它只是个上限算法会自行决定实际社区数。trade网络通常设8到15比较合理。温度参数控制随机性start.temp太高会让初始划分接近随机太低则容易陷入局部最优cool.fact是降温速率越接近1降温越慢结果越稳定但耗时越长。自旋玻璃算法自带随机性所以务必设置set.seed否则复现不了结果。另一个我常用的改善稳定性的技巧是多次运行取最频繁出现的一致性划分尤其当网络规模较大、社区边界模糊时单次划分可能对一些边缘国家的归属不稳定。关于边权重我强烈建议用log变换后的权重而不是原始贸易额。原始贸易额的分布极度偏斜少数巨型贸易流会把社区划分推向单一方向比如把所有跟某一国贸易量大的节点都吸进同一个社区导致社区结构失去区域辨识度。对数权重压缩了极端值的影响社区划分通常更符合直觉上的区域贸易板块。4.3 2018年贸易社区的解读思路把社区检测结果跑出来之后可以先用table看一下每个社区的规模分布再用V(net)$name配合社区归属画出贸易网络图。对2018年数据我预期会看到明显的区域化特征欧洲国家因为内部贸易联系紧密通常形成一个或几个大社区东亚和东南亚国家也会聚成明显的亚洲生产网络板块北美和拉美国家则可能形成以美国为中心的辐射型社区。更有意思的是那些“跨区域节点”比如某些欧洲国家作为亚洲与欧洲之间的转口枢纽其社区归属可能摇摆不定多次运行算法时会被分到不同社区——这种不确定性本身就是信息它们往往处于价值链的桥接位置。社区检测结果不要直接当成“这就是真相”。它更像是给你一个数据驱动的初始假设帮助你发现哪些国家之间的贸易关系比预期更紧密或更松散。对贸易网络研究者来说社区划分的价值不在于精确切割而在于它提供了一个讨论“全球贸易是不是正在区域化”的量化证据。5. 结构等效性分析找出扮演相同角色的国家5.1 与社区发现的本质区别社区发现和结构等效性经常被放在一起讨论但回答的问题截然不同。社区发现问的是“谁和谁是一伙的”依据的是节点之间的连通模式和连接密度结构等效性问的是“谁和谁扮演类似的角色”依据是节点与所有其他节点的连接模式是否相似哪怕这两个节点之间根本没有直接边。举一个最容易理解的例子韩国和墨西哥在贸易网络里恐怕没有多少直接连接但在2018年的贸易结构里它们可能都扮演着“从区域强国的核心供应链向外辐射同时向全球市场出口制成品”的类似角色。社区检测会把韩国分到亚洲板块把墨西哥分到美洲板块而结构等效性分析却能发现这两个国家在“连接模式的轮廓”上有相似性。这就是为什么两类方法要搭配使用前者看区域从属后者看功能角色。5.2 基于邻接矩阵的欧氏距离聚类流程结构等效性在R里没有单一的“一键函数”但它需要的工具都很基础核心就三步取出邻接矩阵计算国家之间的相似性或距离然后做层次聚类。# 取出邻接矩阵有向网络包含出边和入边信息 adj - as_adjacency_matrix(net, attr log_weight, sparse FALSE) # 将出边和入边拼成一个向量构成每个节点的结构特征 # 更严谨的做法是标准化后拼接 adj_scaled - scale(adj) node_features - cbind(adj_scaled, t(adj_scaled)) # 计算国家之间的欧氏距离 d - dist(node_features, method euclidean) # 层次聚类 hc - hclust(d, method ward.D2) plot(hc, labels V(net)$name, cex 0.7)为什么要把出边矩阵和转置入边矩阵拼接在一起因为对于有向贸易网络“谁向谁出口”和“谁从谁进口”是两套不同的结构信息。A国和B国如果都向同一批国家出口、同时从同一批国家进口即使它们之间没有直接边它们的网络角色也是高度相似的。只取出边矩阵或只取入边矩阵都会丢失一半的信息。标准化也是必要的因为不同国家的贸易绝对额差异巨大不标准化的话距离矩阵会被几个贸易大国的绝对数值主导。距离度量除了欧氏距离也可以尝试相关系数距离或余弦距离。贸易网络里更常见的选择是余弦相似度因为它对绝对值不敏感更关注连接模式的“方向”是否一致。我没有标准答案建议三种都算一遍观察层次聚类结果的结构稳定性优先选择那些聚类结果可解释性最强、跨方法重复出现的分组。5.3 结果应用中转国、枢纽国与边缘国层次聚类得到的分组往往比社区检测更加“反直觉”但解释起来很有价值。比如说某些小型开放经济体可能与大国分到同一类因为它们都具备高度多元化的贸易伙伴结构虽然体量差别很大但在网络中的“角色”相似。另一些国家可能贸易体量不小但因为贸易伙伴集中度高结构特征上反而更接近资源型小国——这提醒你有时国家体量并不能决定网络角色连接多元化程度才是关键。结构等效性结果还可以辅助识别特定功能的节点如果一个国家在出边特征上接近某些制造型经济体、在入边特征上又接近某些消费型经济体它很可能扮演着贸易中转或者中间品加工的角色。把这些国家单独标记出来再回到社区检测结果里看它们的社区归属是否稳定能够形成跨方法的相互印证。这部分分析不需要在方法上做什么复杂创新它的价值在于“拆结构”把两百多个国家压缩成若干个职能角色组再分析这些角色组之间的连接关系比逐个分析国家容易出结论得多。我写报告时通常把社区检测结果和结构等效性聚类结果放到同一张图中用不同颜色分别标识“属于哪个板块”和“属于哪个角色类型”就能一眼看出哪些板块内部存在相似角色哪些角色横跨多个板块。6. 指数随机图模型从“网络是什么样”到“连接为什么存在”6.1 ERGM解决的问题前面所有指标都在回答“网络长什么样”的问题。密度低、互易性高、社区结构区域化这些都是网络层面的描述。但一个更尖锐的问题是这些模式是否是统计上可信的规律还是说只是某种随机过程碰巧生成的举例来说互易性高到底是因为“国家之间确实有互惠贸易的强烈倾向”还是因为贸易连接本身很普遍到处都有连接时双边连接自然容易出现这两种解释在观测数据上可能看起来差不多但背后的含义完全不同。指数随机图模型ERGM就是为了在控制其它网络机制的同时检验特定机制是否显著。它是一个生成式统计模型以观测到的网络为结果把边的形成概率表达成一组网络统计项的函数比如两边互惠倾向、三角闭合倾向、同区域连接倾向等。每个统计项对应一个参数参数显著为正说明该机制在观测网络里出现的次数比随机期望更多这是“在控制其它因素之后”得到的判断。6.2 模型设定与核心统计项用ERGM分析贸易网络之前先做一个决定把加权网络转成二值网络。经典ERGM处理的是二元关系也就是边的存在与否而不是边权重。贸易网络因此要先设定一个阈值把贸易关系定义为“超过某个贸易额阈值的双边连接”。阈值的选择没有统一标准我习惯使用“双边贸易额占当年全球贸易总额的比例”来设定比如0.01%这样不同年份之间可比。library(statnet) # 构建二值邻接矩阵1 表示超过阈值的贸易关系 adj_binary - as_adjacency_matrix(net, attr weight, sparse FALSE) threshold - quantile(adj_binary[adj_binary 0], probs 0.7) adj_binary[adj_binary threshold] - 1 adj_binary[adj_binary threshold] - 0 net_binary - network(adj_binary, directed TRUE) set.vertex.attribute(net_binary, region, V(net)$region)模型公式的设定是ERGM分析里最核心、也最需要想清楚的一步。以2018年贸易网络为例我建议从这样一个基础模型开始fit - ergm( net_binary ~ edges mutual gwidegree(1) gwodegree(1) gwesp(1) nodematch(region), control control.ergm(MCMC.samplesize 10000, MCMC.burnin 20000) )逐个解释这些项的含义edges相当于回归里的截距控制网络整体的边密度。mutual捕捉互惠倾向。如果系数显著为正说明“A到B有边则B到A也有边”的模式显著超出随机水平。gwidegree / gwodegree几何加权的入度/出度分布项用来捕捉网络中的核心-边缘结构权重低时比单纯使用degree项更不容易退化。gwesp几何加权边共享伙伴项衡量三角形闭合倾向相当于控制传递性。nodematch(region)区域同质性项如果系数显著为正说明同一区域内的国家之间更有可能建立贸易连接。这些项不是随便堆上去的。它们对应的是第3、4节里观察到的网络特征——互易性高、传递性强、社区区域化、核心-边缘结构。ERGM的作用就是把“我观察到这些特征”升级成“在统计意义上这些特征确实显著地驱动了连接的形成”。6.3 模型拟合、解释与诊断模型跑完后不要急着看系数就把结论写出来。先看模型是否收敛再看诊断图最后才解释结果。summary(fit) mcmc.diagnostics(fit) gof(fit)系数解释遵循标准的log-odds逻辑。假定mutual系数是0.8exp(0.8)约等于2.23意思是在控制其它项的条件下如果B国已经向A国出口那么A国向B国建立贸易关系的优势比是B国没有向A国出口时的2.23倍。2018年贸易数据跑出来mutual项几乎必然是显著为正的这不过是用统计模型确认了全球贸易的互惠基础。更有价值的是区域同质性项。如果nodematch(region)的系数显著为正说明即使考虑了互惠性、传递性和度数分布之后国家仍有一种“在同一区域内建立连接”的额外倾向这是区域贸易协定和地缘邻近性的统计证据。gwesp项的显著性则能说明三角闭合效应是否在互惠效应之外仍然独立存在。gof()的图要重点看两个模型模拟网络与观测网络在度分布、边数等关键统计量上的接近程度。如果模拟数据与观测数据偏差很大说明你的模型设定遗漏了重要机制比如可能缺少对某个具体地理区域或某个特殊贸易集团的显式控制项。ERGM拟合不好不代表贸易数据有问题很多时候只是你没把“区域集团效应”放进模型。6.4 实际操作的几个提醒ERGM在贸易数据上有一些必须注意的坑我在第一次跑的时候几乎都踩过一遍。第一个坑是MCMC样本量设置。贸易网络通常有上百个节点几千条边参数空间很大默认的MCMC设置经常不够用。如果你看到系数不收敛、MCMC诊断图乱得像噪声先提高MCMC.samplesize和MCMC.burnin同时增加MCMC.interval。这个过程在直觉上是“让马尔可夫链跑得足够久充分探索可能的网络空间”。跑一次不够加样本再跑直到诊断图稳定为止。第二个坑是模型退化。如果你的模型里用了过强的三角结构相关项或者稀疏网络里硬塞进复杂的交互项拟合会经常失败。遇到退化问题优先简化模型去掉不显著的项再把gwidegree、gwesp的衰减参数从1调整到0.5或者2重新拟合。ERGM模型的稳健拟合需要一定的调试耐心这不是数据的问题而是模型表达力与网络复杂度之间的常见摩擦。第三个坑是解释时要把“显著”和“效应大”分开。贸易网络样本量大很多效应很容易显著但系数大小可能并不大实际意义有限。我写结论时会同时报告系数和模拟网络与观测网络的差异程度让读者自己判断效应量。最后想分享一个个人习惯做ERGM之前先对网络做几次随机置换比如把边的存在位置随机打乱计算此时各网络统计量的分布。把观测值与随机分布对比能帮你判断模型里哪些效应是“真实存在”而不仅仅是网络规模的副产品。这一步不用额外安装包只需要一些简单的循环和抽样代码但对理解后面ERGM系数的贡献非常有帮助。在贸易网络这类关联结构极强的数据上这种前置的敏感性检查值得成为固定流程。本文还有配套的精品资源点击获取
返回列表