
R語言實現常用的5種分析方法(主成分+因子+多維標度+判別+聚類)
R語言多元分析系列之一:主成分分析
主成分分析(principal components analysis, PCA)是一種分析、簡化數據集的技術。它把原始數據變換到一個新的坐標系統中,使得任何數據投影的第一大方差在第一個坐標(稱為第一主成分)上,第二大方差在第二個坐標(第二主成分)上,依次類推。主成分分析經常用減少數據集的維數,同時保持數據集的對方差貢獻最大的特征。這是通過保留低階主成分,忽略高階主成分做到的。這樣低階成分往往能夠保留住數據的最重要方面。但是在處理觀測數目小于變量數目時無法發揮作用,例如基因數據。
R語言中進行主成分分析可以采用基本的princomp函數,將結果輸入到summary和plot函數中可分別得到分析結果和碎石圖。但psych擴展包更具靈活性。
一 、選擇主成分個數
選擇主成分個數通常有如下幾種評判標準:
根據經驗與理論進行選擇
根據累積方差貢獻率 ,例如選擇使累積方差貢獻率達到80%的主成分個數。
另一種較為先進的方法是平行分析(parallel analysis)。該方法首先生成若干組與原始數據結構相同的隨機矩陣,求出其特征值并進行平均,然后和真實數據的特征值進行比對,根據交叉點的位置來選擇主成分個數。我們選擇USJudgeRatings數據集舉例,首先加載psych包,然后使用fa.parallel函數繪制下圖,從圖中可見第一主成分位于紅線上方,第二主成分位于紅線下方,因此主成分數目選擇1。
二 、提取主成分
從上面的結果觀察到,PC1即觀測變量與主成分之間的相關系數,h2是變量能被主成分解釋的比例,u2則是不能解釋的比例。主成分解釋了92%的總方差。注意此結果與princomp函數結果不同,princomp函數返回的是主成分的線性組合系數,而principal函數返回原始變量與主成分之間的相關系數,這樣就和因子分析的結果意義相一致。
三 、旋轉主成分
旋轉是在保持累積方差貢獻率不變條件下,將主成分負荷進行變換,以方便解釋。成分旋轉這后各成分的方差貢獻率將重新分配,此時就不可再稱之為“主成分”而僅僅是“成分”。旋轉又可分為正交旋轉和斜交旋轉。正交旋轉的流行方法是方差最大化,需要在principal中增加rotate='varimax'參數加以實現。也有觀點認為主成分分析一般不需要進行旋轉。
四、計算主成分得分
主成分得分是各變量的線性組合,在計算出主成分得分之后,還可以將其進行回歸等做進一步分析處理。但注意如果輸入數據不是原始數據時,則無法計算主成分得分。我們需要在principal中增加score=T的參數設置,結果將存放在結果的score元素中。
R語言多元分析系列之二:探索性因子分析
探索性因子分析(Exploratory Factor Analysis,EFA)是一項用來找出多元觀測變量的本質結構、并進行處理降維的技術。 因而EFA能夠將具有錯綜復雜關系的變量綜合為少數幾個核心因子。EFA和PCA的區別在于:PCA中的主成分是原始變量的線性組合,而EFA中的原始變量是公共因子的線性組合,因子是影響變量的潛在變量,變量中不能被因子所解釋的部分稱為誤差,因子和誤差均不能直接觀察到。進行EFA需要大量的樣本,一般經驗認為如何估計因子的數目為N,則需要有5N到10N的樣本數目。
雖然EFA和PCA有本質上的區別,但在分析流程上有相似之處。下面我們用ability.cov這個心理測量數據舉例,其變量是對人的六種能力,例如閱讀和拼寫能力進行了測驗,其數據是一個協方差矩陣而非原始數據。R語言中stats包中的factanal函數可以完成這項工作,但這里我們使用更為靈活的psych包。
一、選擇因子個數
一般選擇因子個數可以根據相關系數矩陣的特征值,特征值大于0則可選擇做為因子。我們仍使用平行分析法(parallel analysis)。該方法首先生成若干組與原始數據結構相同的隨機矩陣,求出其特征值并進行平均,然后和真實數據的特征值進行比對,根據交叉點的位置來選擇因子個數。根據下圖我們可以觀察到特征值與紅線的關系,有兩個因子都位于紅線上方,顯然應該選擇兩個因子。
二、提取因子
psych包中是使用fa函數來提取因子,將nfactors參數設定因子數為2,rotate參數設定了最大化方差的因子旋轉方法,最后的fm表示分析方法,由于極大似然方法有時不能收斂,所以此處設為迭代主軸方法。從下面的結果中可以觀察到兩個因子解釋了60%的總方差。Reading和vocabulary這兩個變量于第一項因子有關,而picture、blocks和maze變量與第二項因子有關,general變量于兩個因子都有關系。
如果采用基本函數factanal進行因子分析,那么函數形式應該是factanal(covmat=correlations,factors=2,rottion='varimax'),這會得到相同的結果。此外,我們還可以用圖形來表示因子和變量之間的關系
三、因子得分
得到公共因子后,我們可以象主成分分析那樣反過來考察每個樣本的因子得分。如果輸入的是原始數據,則可以在fa函數中設置score=T參數來獲得因子得分。如果象上面例子那樣輸入的是相關矩陣,則需要根據因子得分系數來回歸估計。
參考資料:R in Action
R語言多元分析系列之三:多維標度分析
多維標度分析(MDS)是一種將多維空間的研究對象簡化到低維空間進行定位、分析和歸類,同時又保留對象間原始關系的數據分析方法。
設想一下如果我們在歐氏空間中已知一些點的座標,由此可以求出歐氏距離。那么反過來,已知距離應該也能得到這些點之間的關系。這種距離可以是古典的歐氏距離,也可以是廣義上的“距離”。MDS就是在盡量保持這種高維度“距離”的同時,將數據在低維度上展現出來。從這種意義上來講,主成分分析也是多維標度分析的一個特例。
一、距離的度量
多元分析中常用有以下幾種距離,即絕對值距離、歐氏距離(euclidean)、馬氏距離(manhattan)、 兩項距離(binary)、明氏距離(minkowski)。在R中通常使用disk函數得到樣本之間的距離。MDS就是對距離矩陣進行分析,以展現并解釋數據的內在結構。
在經典MDS中,距離是數值數據表示,將其看作是歐氏距離。在R中stats包的cmdscale函數實現了經典MDS。它是根據各點的歐氏距離,在低維空間中尋找各點座標,而盡量保持距離不變。
非度量MDS方法中,“距離"不再看作數值數據,而只是順序數據。例如在心理學實驗中,受試者只能回答非常同意、同意、不同意、非常不同意這幾種答案。在這種情況下,經典MDS不再有效。Kruskal在1964年提出了一種算法來解決這個問題。在R中MASS包的isoMDS函數可以實現這種算法,另一種流行的算法是由sammon函數實現的。
二、經典MDS
下面我們以HSAUR2包中的watervoles數據來舉例。該數據是一個相似矩陣,表示了不同地區水田鼠的相似程度。首先加載數據然后用cmdscales進行分析。
下面計算前兩個特征值在所有特征值中的比例,這是為了檢測能否用兩個維度的距離來表示高維空間中距離,如果達到了0.8左右則表示是合適的。
然后從結果中提取前兩個維度的座標,用ggplot包進行繪圖。
三、非度量MDS
第二例子中的數據是關于新澤西州議員投票行為的相似矩陣,這里我們用MASS包中的isoMDS函數進行分析
參考資料:
A Handbook of Statistical Analyses Using R
多元統計分析及R語言建模
R語言多元分析系列之四:判別分析
判別分析(discriminant analysis)是一種分類技術。它通過一個已知類別的“訓練樣本”來建立判別準則,并通過預測變量來為未知類別的數據進行分類。
判別分析的方法大體上有三類,即Fisher判別、Bayes判別和距離判別。Fisher判別思想是投影降維,使多維問題簡化為一維問題來處理。選擇一個適當的投影軸,使所有的樣品點都投影到這個軸上得到一個投影值。對這個投影軸的方向的要求是:使每一組內的投影值所形成的組內離差盡可能小,而不同組間的投影值所形成的類間離差盡可能大。Bayes判別思想是根據先驗概率求出后驗概率,并依據后驗概率分布作出統計推斷。距離判別思想是根據已知分類的數據計算各類別的重心,對未知分類的數據,計算它與各類重心的距離,與某個重心距離最近則歸于該類。
一.線性判別
當不同類樣本的協方差矩陣相同時,我們可以在R中使用MASS包的lda函數實現線性判別。lda函數以Bayes判別思想為基礎。當分類只有兩種且總體服從多元正態分布條件下,Bayes判別與Fisher判別、距離判別是等價的。本例使用iris數據集來對花的品種進行分類。首先載入MASS包,建立判別模型,其中的prior參數表示先驗概率。然后利用table函數建立混淆矩陣,比對真實類別和預測類別。
二.二次判別
當不同類樣本的協方差矩陣不同時,則應該使用二次判別。
model2=qda(Species~.,data=iris,cv=T)
這里將CV參數設置為T,是使用留一交叉檢驗(leave-one-out cross-validation),并自動生成預測值。這種條件下生成的混淆矩陣較為可靠。此外還可以使用predict(model)$posterior提取后驗概率。
在使用lda和qda函數時注意:其假設是總體服從多元正態分布,若不滿足的話則謹慎使用。
參考資料:
Modern Applied Statistics With S
Data_Analysis_and_Graphics_Using_R__An_Example_Based_Approach
R語言多元分析系列之五:聚類分析
聚類分析(Cluster Analysis)是根據“物以類聚”的道理,對樣品或指標進行分類的一種多元統計分析方法,它是在沒有先驗知識的情況下,對樣本按各自的特性來進行合理的分類。
聚類分析被應用于很多方面,在商業上,聚類分析被用來發現不同的客戶群,并且通過購買模式刻畫不同的客戶群的特征;在生物上,聚類分析被用來動植物分類和對基因進行分類,獲取對種群固有結構的認識;在因特網應用上,聚類分析被用來在網上進行文檔歸類來修復信息。
聚類分析有兩種主要計算方法,分別是凝聚層次聚類(Agglomerative hierarchical method)和K均值聚類(K-Means)。
一、層次聚類
層次聚類又稱為系統聚類,首先要定義樣本之間的距離關系,距離較近的歸為一類,較遠的則屬于不同的類??捎糜诙x“距離”的統計量包括了歐氏距離(euclidean)、馬氏距離(manhattan)、 兩項距離(binary)、明氏距離(minkowski)。還包括相關系數和夾角余弦。
層次聚類首先將每個樣本單獨作為一類,然后將不同類之間距離最近的進行合并,合并后重新計算類間距離。這個過程一直持續到將所有樣本歸為一類為止。在計算類間距離時則有六種不同的方法,分別是最短距離法、最長距離法、類平均法、重心法、中間距離法、離差平方和法。
下面我們用iris數據集來進行聚類分析,在R語言中所用到的函數為hclust。首先提取iris數據中的4個數值變量,然后計算其歐氏距離矩陣。然后將矩陣繪制熱圖,從圖中可以看到顏色越深表示樣本間距離越近,大致上可以區分出三到四個區塊,其樣本之間比較接近。
然后使用hclust函數建立聚類模型,結果存在model1變量中,其中ward參數是將類間距離計算方法設置為離差平方和法。使用plot(model1)可以繪制出聚類樹圖。如果我們希望將類別設為3類,可以使用cutree函數提取每個樣本所屬的類別。
為了顯示聚類的效果,我們可以結合多維標度和聚類的結果。先將數據用MDS進行降維,然后以不同的的形狀表示原本的分類,用不同的顏色來表示聚類的結果??梢钥吹?/span>setose品種聚類很成功,但有一些virginica品種的花被錯誤和virginica品種聚類到一起。
二、K均值聚類
K均值聚類又稱為動態聚類,它的計算方法較為簡單,也不需要輸入距離矩陣。首先要指定聚類的分類個數N,隨機取N個樣本作為初始類的中心,計算各樣本與類中心的距離并進行歸類,所有樣本劃分完成后重新計算類中心,重復這個過程直到類中心不再變化。
在R中使用kmeans函數進行K均值聚類,centers參數用來設置分類個數,nstart參數用來設置取隨機初始中心的次數,其默認值為1,但取較多的次數可以改善聚類效果。model2$cluster可以用來提取每個樣本所屬的類別。
model2=kmeans(data,centers=3,nstart=10)
使用K均值聚類時需要注意,只有在類的平均值被定義的情況下才能使用,還要求事先給出分類個數。一種方法是先用層次聚類以決定個數,再用K均值聚類加以改進?;蛘咭暂喞禂祦砼袛喾诸悅€數。改善聚類的方法還包括對原始數據進行變換,如對數據進行降維后再實施聚類。
cluster擴展包中也有許多函數可用于聚類分析,如agnes函數可用于凝聚層次聚類,diana可用于劃分層次聚類,pam可用于K均值聚類,fanny用于模糊聚類。
原文鏈接:http://www.cnblogs.com/wentingtu/archive/2012/03/03/2377971.html
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《劉靜:10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda ...
2025-04-23