作者realujen (ujen)
看板Statistics
標題[程式] PCA 出現Correlation matrix is singular
時間Thu May 1 02:39:14 2014
[軟體程式類別]:
SAS
[程式問題]:
PCA 和 cluster 分析
[軟體熟悉度]:
低(1~3個月) 非常粗淺> <
[問題敘述]:
最近要跑論文的資料,殊不知一跑就有挫折QQ
1.PCA
資料是整理成dummy的形式,想先將約70個變數用PCA先做刪減
結果跑出來還是有分類好factor
可是日誌上出現Correlation matrix is singular
造成一些後續的檢定無法完成
一開始dummy 定義切的級距比較大只有0~3
出現上述的問題後,把級距切了更細,變成0~6
依然沒解決,然後試著將出現0過多的變數手動刪掉,
剩下了大概40出頭的變數,可是一樣問題沒解決QQ
查了一下資料,說這樣是多重共線性(?)
但解決方式都是說跑Proc Corr
或是Proc REG (VIF) 可以找到,可是我查了一下以前上的基礎統計方法
這好像只能找到共線性的程度,無法幫忙確切找出哪幾個變數共線
想請問各位大大,我有沒有理解錯誤,是否用這兩種code就能解決呢???
還有SAS可以直接寫指令幫忙刪除不要的變數嗎?
我已經製造了無數個excel檔案了(方法超笨
2.方法主要想要用PCA的因素得點去做cluster analysis
但因為不懂,code也是抄以前作業來改的,當時只著重要會解釋結果...
所以其實很不清楚到底確切用了什麼方法
PCA:我不知道 code有沒有用到因素轉軸,請問是直交還是斜交?
Cluster:不知是用階層式、非階層式,或是兩階段分層法?
因為這兩項不懂,導致在寫第三章卡很久...
希望各位大大能給小女子不吝指教,論文死線迫在眉睫> <
[程式範例]:
這是我跑PCA的 code
proc factor data=*****
method=principal rotate=varimax corr msa scree plot;
var Q1-Q71;
run;
/*先跑因素分析找出因素得點*/
Proc Factor Data=*****
Method=Principal Rotate=Varimax Outstat=***
Score n=2;
Var Q1-Q71;
run;
Proc Score Data=***** Score=*** Out=**;
Var Q1-Q71;
run;
Proc Fastclus Data=** Maxc=2 Maxiter=10 out=**_clus;
Var Factor1 Factor2;
run;
Proc Plot Data=**_clus;
plot Factor1*Factor2=Cluster;
run;
quit;
Data 或是out 的名稱請容許我馬賽克,感覺打出來有點尷尬XD
以上cluster 部分是以前作業的,有個小疑問是當我factor不只有兩個時,
我要在哪裡調整我要分成更多個呢?
先在此感謝各位熱心解答
感激不盡!!!OTL
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.44.24
※ 文章網址: http://www.ptt.cc/bbs/Statistics/M.1398883156.A.EDE.html
→ andrew43:建議你試著先查SAS的線上手冊吧。 05/01 03:46
→ andrew43:至於PCA我猜是你有的dummy編成完全一樣或完全線性相關 05/01 03:59
→ andrew43:所造成的。 05/01 04:00
→ andrew43:可以看看原資料是不是有某二個因子剛好完全一致? 05/01 04:00
→ yhliu:真是亂... 05/01 12:19
→ yhliu:既然是 "切級距", 表示原資料是計量的. PCA 是計量資料做 05/01 12:21
→ yhliu:線性組合, 使組合變數相互間零相關. 05/01 12:22
→ yhliu:把本就適合 PCA 的資料型態變成不適合的類別虛擬變數再硬套 05/01 12:24
→ yhliu:PCA, 實在搞不懂怎會想到這種做法. 05/01 12:24
→ yhliu:再者, PCA 不是 factor analysis, 不應還做什麼轉軸. 05/01 12:26
→ yhliu:雖然, 轉軸也不是絕對不可, 但就有點失去了 "主成分" 原意. 05/01 12:28
→ realujen:謝謝各位解答!那我再試試看用原始資料跑跑看 05/01 12:57
→ realujen:我也是聽指導教授指示直接這樣做的 >< 05/01 12:57