目錄
-
- 目錄
- 社交網絡分析
- 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;
未完待續