天天看点

SAS OPTGRAPH 学习笔记1

目录

    • 目录
    • 社交网络分析
      • 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算法就可以找出最“重要”的那个案件!

SAS OPTGRAPH 学习笔记1

上图为一些美国最高法院案件的引文网络示意图;直观的来看,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;
           

未完待续