摘 要:基于多指標面板數據聚類的理論,以全國31個省市的城市化水平為例,介紹利用SAS編程實現此聚類方法的過程,結果表明,該SAS程序顯示了良好的應用性,為多指標面板數據聚類的實現提供了參考和依據。
關鍵詞:面板數據;聚類;SAS程序
中圖分類號:F832 文獻標志碼:A 文章編號:1673-291X(2013)26-0255-04
引言
面板數據作為時間序列數據和截面數據的結合,能夠提供更多信息,因而受到學者的廣泛關注。國內對面板數據的研究主要集中在計量模型,在統計方法領域的研究較少,而且在僅有的研究中,大多是關于理論和思路的介紹,并沒有相關實踐操作的說明,阻礙了面板數據的推廣和發展。國內已有面板數據聚類相關的理論研究,但實際操作過程不明晰,因此,本文擬在多指標面板數據聚類理論的基礎上,給出具體的SAS程序。
一、多指標面板數據聚類介紹
(一)樣本間距離的定義
面板數據包含樣本、時間和指標3個維度的信息,為充分利用面板數據信息,分別用全時絕對量、全時增長速度和全時變異系數定義樣本間距離。
全時變異系數距離dij(VCED):
其中α、β、γ分別表示3種距離的權重。綜合距離dij(CED)是全時絕對量距離、全時增長速度距離和全時變異系數距離的加權平均。
(二)類間距離的定義
多指標面板數據,類離差平方和與總離差平方和表示如下:
其中,Wlt為類內離差平方和,W為總離差平方和,α、β、γ相加等于1,其仍分別表示3種距離的權重。
二、多指標面板數據聚類的SAS實現程序
以全國31省市的城市化水平為例,說明以上聚類過程的SAS實現程序,用SAS程序實現面板數據聚類前,首先應將需要的數據導入SAS系統中。
(一)數據導入
data語句用來指定要建立數據集的名稱,此處建立了名為“yssj”的數據集,存儲讀入的原始數據;input選項用來指定需要導入數據的變量名,數值型變量的變量屬性可以省略,字符型變量后需用“$”符號加以識別,此處pro變量后邊的$符號表明此變量為字符型變量;label選項用于設定變量的標簽;cards選項用于讀入數據,此處讀入的數據以時間、省份和x1-x6為列變量,以時間變量為標準進行升序排列。
(二)數據標準化
為消除指標間量綱的影響,需對數據進行標準化處理,數據標準化程序如下:
ods listing exclude all;ods html file=\"E:\標準化數據.xls\";proc standard data=yssj out= zyssj mean=0 std=1;var x1-x6;run;proc print data=zyssj;run;ods html close;ods listing exclude none;
ods語句控制程序輸出結果的存放位置和文件名稱;proc standard表示執行數據標準化過程,data語句指定需要進行標準化的數據集,mean和std 語句分別表明標準化數據后的均值和方差,此處表明對數據進行0-1標準化,out語句指定標準化數據的輸出數據集,var語句指定需要進行標準化的變量;print過程表示打印輸出數據集,此處打印輸出的結果存入E盤中的“標準化數據”表格中。
(三)全時絕對量距離的計算
為便于計算地區間距離,需變換數據排列方式,將地區變為列變量。通過數據變換,則任意兩列相減,可得到相應兩個地區的距離。
Data tzyssj;Input t var $ a1-a31;Label t=”時間” var=”變量” a1=\"北京\" \" …… a31=\"新疆\";cards;
;Run;
%macro dif; data aqed(drop =a1-a31);set tzyssj;%do i=1 %to 30;%do j=%eval(i.) %to 31;di.j.=(ai.-aj.)*(ai.-aj.); %end;%end;run; %mend dif; %dif
ods listing exclude all;ods html file=\"E:\全時絕對距離求和.xls\";proc means data= aqed sum;
var d11-d19…… d3031; output out=total;ods html close;ods listing exclude none;
data數據步表示將經過變換后的標準化數據輸入數據集tzyssj中,程序與上文中原始數據的輸入相似,僅是讀入數據的排列方式發生了變化;macro dif 過程用于計算31地區中兩兩地區間的距離,地區i和地區j間的距離用變量dij表示,%do用于控制計算31地區兩兩間距離的循環;di.j.=(ai.-aj.)*(ai.-aj.)為地區間歐式距離的計算公式,此過程計算得到了地區間不同年份和不同指標的距離,生成465個變量;means過程用于地區間距離的匯總,var表示用于求和的變量,即上一步生成的465個變量,并將輸出結果導出為excel格式,ods語句控制輸出結果的存放位置和形式。
(四)全時增長速度距離的計算
在計算全時增長速度距離之前,應構造指標增長速度,分別構造兩個矩陣a、b,a矩陣包括1995—2011年X1-X5和1995—2010年X6的數據,b矩陣包括1996—2011年X1 和1995—2011年 X2-X6的數據,a、b矩陣的對比如表1。兩個矩陣相減,再除以a矩陣中對應的數據,即為指標增長速度矩陣。
iml過程表示矩陣運算,此處通過矩陣運算將數據分為兩個矩陣,然后通過矩陣相減,構造增長速度的原始數據;use語句表示所使用的數據集,此處以標準化后的原始數據為基礎,將數據轉變為矩陣,read語句實現了這種轉換,第一個read語句將tzyssj數據集中的1-101個觀測的a1-a31的變量值讀入s0矩陣,第二個read語句將tzyssj數據集中的2-102個觀測的a1-a31的變量值讀入s1矩陣,計算后的結果存入ds數據集中;兩個矩陣相減再相除后,形成后一期對前一期的增長速度,對于同一變量來說,后一期對前一期的增長速度即為指標增長速度,但在相鄰兩個指標的節點處,后一期對前一期的增長速度沒有實際意義,因此需要剔除此類數據,為便于標識此類型數據,對ds數據集中的數據加標識變量,其后的data數據步既是對ds數據集添加標識變量的過程,并為自動定義的變量名定義標簽,where語句用于篩選符合條件的數據;得到增長速度的原始數據后,其后的全時增長速度距離的運行過程與全時絕對距離運行過程相似。
(五)全時變異系數距離的計算
全時變異系數距離是建立在地區指標變異系數的基礎之上的,因此應首先構造變異系數的原始數據,為方便變異系數的計算,需要以時間為變量,變換數據排列方式,程序如下:
data數據步分別以地區、指標、編號和t1-t17為變量導入變異系數分析的原始數據,為了后續變異系數的計算,導入的數據應以“編號”為標志變量,進行升序排列,或者導入數據后,通過proc sort過程對編號進行排序;ods語句表示將計算得到的變異系數數據保存在E盤中的“變異原始數據”的表格中;means過程實現了地區指標變異系數的計算,計算思路如下:通過以時間為變量的排列方式,可以實現分年份計算變異系數,執行變異系數計算時,通過設定分類變量order,實現分地區計算變異系數的目的,最終計算得到全國31地區1995—2011年的指標變異系數。得到各地區指標的變異系數后,全時變異系數距離的運行過程與全時絕對距離的運算程序相似,具體程序如下:
本文認為,3種聚類的重要程度相同,因此3種距離的簡單平均值即為綜合距離。將31個地區兩兩之間的綜合距離整理成31×31的矩陣形式,然后執行以下程序:
首先通過data數據步將31×31的綜合距離矩陣導入jljz數據集中,然后執行cluster過程,由于數據集為距離矩陣,而非聚類的原始數據,因此應在data語句的選項中注明data數據集的類型為距離(distance),其余過程與正常聚類過程相同,method用于指定類間距離的定義方式,outtree指定聚類結果的輸出數據集,var語句指定分析變量,id語句指定需要聚類的對象;tree過程用于繪制聚類結果圖形。
(七)聚類結果
通過以上面板數據的SAS程序,全國31省市城市化水平的聚類結果如圖1,表現了良好的聚類性狀。
三、總結
本文基于多指標面板數據聚類的理論,以全國31省市城市化水平為例,給出SAS的具體實現程序,實際操作過程中需要注意以下四點問題:首先需要對數據進行標準化處理,消除指標間量綱的影響,便于數據統一運算和整理,對于計算生成的增長數據和變異數據等二次數據,需再次進行標準化處理,處理程序與步驟1數據導入和步驟2數據標準化過程相似;為了計算需要,應靈活變換數據的排列方式;巧妙的運用矩陣運算,構造增長速度原始數據,簡化程序;循環計算較多時,考慮使用sas宏程序進行計算。