天天看點

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;
           

未完待續