目录
-
- 目录
- 社交网络分析
- PROC OPTGRAPH 简介
- shortest path————-optgraph之shortpath示例
- Centrality metrics ———– optgraph之centrality 示例
社交网络分析
社交网络分析(Social Network Analysis) 是指基于信息学、数学、社会学、管理学、心理学等多学科的融合理论和方法,为理解人类各种社交关系的形成、行为特点分析以及信息传播的规律提供的一种可计算的分析方法。 —— [ 百度百科 ]
在金融行业中,社交网络分析常应用于保险,金融等行业侦测欺诈交易,本文旨在学习应用SAS进行社交网络分析.
软件版本:SAS EG 7.1 or SAS BASE 9.4 .
PROC OPTGRAPH 简介
OPTGRAPH过程包括许多图形理论、组合优化和网络分析算法。算法种类见下表
SAS OPTGRAPH 概要
算法 | 价格 | 含义 |
---|---|---|
Biconnected components | BICONCOMP | |
Centrality metrics | CENTRALITY | |
Maximal cliques | CLIQUE | |
Community detection | COMMUNITY | |
Connected components | CONCOMP | |
Core decomposition | CORE | |
Cycle detection | CYCLE | |
Eigenvector problem | EIGENVECTOR | |
Weighted matching | LINEAR_ASSIGNMENT | |
Minimum-cost network flow | MINCOSTFLOW | |
Minimum cut | MINCUT | |
Minimum spanning tree | MINSPANTREE | |
Reach networks | REACH | |
Shortest path | SHORTPATH | 最短路径算法 |
Graph summary | UMMARY | |
Transitive closure | TRANSITIVE_CLOSURE | |
Traveling salesman | TSP |
shortest path————-optgraph之shortpath示例
案例背景:你想要找到一条路线,在家里找到最短的路径(614CapitalBlvd)和SAS总部(SASCampusDrive)。这可以如下最短路径语句来完成如下:
data LinkSetInRoadNC10am ; /*data步读入示例数据*/
input start_inter $1- end_inter $20- miles miles_per_hour ;
datalines;
CapitalBlvd Capital/WadeAve
CapitalBlvd Capital/US70W
CapitalBlvd Capital/US440W
Capital/WadeAve WadeAve/RaleighExpy
Capital/US70W US70W/US440W
US70W/US440W US440W/RaleighExpy
Capital/US440W US440W/RaleighExpy
US440W/RaleighExpy RaleighExpy/US40W
WadeAve/RaleighExpy RaleighExpy/US40W
RaleighExpy/US40W US40W/HarrisonAve
US40W/HarrisonAve SASCampusDrive
;
data LinkSetInRoadNC10am;
set LinkSetInRoadNC10am;
time_to_travel = miles * /miles_per_hour * ;
run;
/*data步结束*/
proc optgraph
data_links = LinkSetInRoadNC10am;/*指定数据来源*/
data_links_var /*声明进行参数设置*/
from = start_inter /*指定开始节点字段*/
to = end_inter/*指定结束节点字段*/
weight = time_to_travel;/*指定作为依据的测度的变量,这里选择了时间*/
shortpath/*指定应用的函数类型*/
out_paths = ShortPath/*指定输出数据集*/
source = "614CapitalBlvd"/*指定开始节点*/
sink = "SASCampusDrive";/*指定结束节点*/
run;
结果如下:
order | start_inter | end_inter | time_to_travel |
---|---|---|---|
1 | 614CapitalBlvd | Capital/WadeAve | 1.4400 |
2 | Capital/WadeAve | WadeAve/RaleighExpy | 4.5000 |
3 | WadeAve/RaleighExpy | RaleighExpy/US40W | 3.0000 |
4 | RaleighExpy/US40W | US40W/HarrisonAve | 1.4182 |
5 | US40W/HarrisonAve | SASCampusDrive | 1.2000 |
TOTAL | 11.5582 |
Centrality metrics ———– optgraph之centrality 示例
案例背景:众所周知,在法院判决的时候可能会参考曾经出现过的类似案件量刑,某些经典案件可能会被反复引用,那么那个案件是最“重要”的呢?也就是说哪个案件是最典型,被引用次数最多的呢?Centrality metrics算法就可以找出最“重要”的那个案件!
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVP9EkT0UleOBTVU90MRRVZ0A3MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TMzcDO0kzM1EjMwgDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
上图为一些美国最高法院案件的引文网络示意图;直观的来看,25347被引次数最多,那么通过算法得出的结论是否如此呢?
data Cases;
length case_id case_name $;
input case_id - case_name $ -;
datalines;
Jacobson v. Massachusetts, U.S. ()
Roe vs. Wade, U.S. ()
Akron vs. Akron Cntr for Repro-Health, U.S. ()
Thornburgh vs. American College, U.S. ()
Webster vs. Repro-Health Services, U.S. ()
Cruzan v. Director, MO Dept of Health, U.S. ()
Georgia v. South Carolina, U.S. ()
Hodgson v. Minnesota, U.S. ()
Planned Parenthood of SE PA vs. Casey, U.S. ()
Madsen v. Women's Health Ctr., U.S. ()
Wash. v. Glucksberg, U.S. ()
;
run;
/*数据集Cases存储案例名和案例标识符之间的映射:*/
data LinkSetInCourt;
input from_case to_case @@;
datalines;
;
run;
/*数据集LinkSetInCourt案例标识符之间的引用路径映射:*/
proc optgraph
direction = directed/*指定路径为有向线段,反之则输入undirected*/
data_links = LinkSetInCourt/*指定路径数据集*/
out_nodes = NodeSetOut;/*指定输出数据集*/
data_links_var
from = from_case/*指定开始节点字段*/
to = to_case;/*指定结束节点字段*/
centrality/*指定算法类型*/
auth = unweight;/*指定权重计算方式 */
run;
data NodeSetOut(drop=rc case_id);
if _n_= then do;
declare hash h(dataset:'cases');/*定义哈希表*/
h.definekey('case_id');/*定义主键*/
h.definedata('case_name');/*定义值*/
h.definedone();/*定义完成*/
end;
set NodeSetOut;
length case_id case_name $;
rc=h.find(key:node);/*返回查询值*/
end;
run;
proc sort data=NodeSetOut;
by descending centr_auth_unwt;/*排序*/
run;
未完待续