2015-08-13 30 views
2

有沒有一種簡單的方法來獲得每個觀測距離其相應的集羣中心的距離?SAS - 觀測到集羣中心的距離

我的任務是以下幾點:

  1. 我有42個000觀察,每8個變量的數據集。

  2. 我跑在SAS集羣過程

    proc cluster data=WORK.stndstandardized_0000 method=average pseudo noeigen outtree=WORK.tree; 
    id POL_NUMBER; 
    var stnd_P_M200 stnd_P_M150 stnd_P_M100 stnd_P_M50 stnd_P_50 stnd_P_100 stnd_P_150 stnd_P_200; 
    run; 
    
    proc tree out=WORK.part nclusters=10; 
    id POL_NUMBER; 
    copy stnd_P_M200 stnd_P_M150 stnd_P_M100 stnd_P_M50 stnd_P_50 stnd_P_100 stnd_P_150 stnd_P_200; 
    proc sort; 
    by cluster; 
    run; 
    
  3. 我應該分析單個集羣,拿起觀察,從集羣

    中心最封閉到集羣的中心和最遙遠

我的輸出包含了所有與集羣相應名稱的意見。但我想獲得更詳細的信息,例如觀察距離羣集中心的距離。

有沒有自動的方式,怎麼弄呢?我已經花了很多時間閱讀手冊,但我沒有找到任何方法。感謝您的任何幫助。

+0

With Center,你指的是Centroid,對不對? –

+0

@德克我真的喜歡在獲得一些中央觀察(即從集羣中的組觀察的最平均的觀察) –

回答

3

這是使用FastClus

PROC FASTCLUS不回你集羣的樹,只是一個sollution用你指定簇的數量的解決方案。 PROC FASTCLUS所需的時間大致與觀察次數成正比。此外,據我所知,它給出了相同的clusers,但其他輸出數據集;

創建集羣mean=mean指定您希望您的cetroids數據集中'work.mean'和out=prelim指定您希望您的意見,包括數據集中'work.prelim'簇號和距離;

title2 ’Preliminary Analysis by FASTCLUS’; 
proc fastclus data=sashelp.iris summary maxc=10 maxiter=99 converge=0 
    mean=mean out=prelim cluster=preclus; 
    var petal: sepal:; 
run; 

其餘的是老派SAS編程 ,你可能會滿足您的要求;

proc sort data=mean; 
    by preclus; 
proc sort data=prelim; 
    by preclus distance; 

data closest farthest; 

    format Species $22. Distance 5.2 
     SepalLength 5.2 centroidSepalLength 5.2 
     SepalWidth 5.2 centroidSepalWidth 5.2 
     PetalLength 5.2 centroidPetalLength 5.2 
     PetalWidth 5.2 centroidPetalWidth 5.2 ; 
    merge prelim 
     mean (rename=(
      SepalLength=centroidSepalLength 
      SepalWidth=centroidSepalWidth 
      PetalLength=centroidPetalLength 
      PetalWidth=centroidPetalWidth) drop=_:); 
    by preclus; 
    if first.preclus then output closest; 
    if last.preclus then output farthest; 
run; 
+0

我想你的意思是「最遠」 ;-) –

+0

@Dirk,謝謝了很多德克,它工作得很好:-) –