共計(jì) 2575 個(gè)字符,預(yù)計(jì)需要花費(fèi) 7 分鐘才能閱讀完成。
本篇文章為大家展示了基于 R 語(yǔ)言中主成分的示例分析,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
數(shù)據(jù)分析中,我們經(jīng)常會(huì)遇到高維的數(shù)據(jù)集,這時(shí)候就需要降維簡(jiǎn)化計(jì)算和模型。主成分分析是一種經(jīng)典的數(shù)據(jù)降維方法,它要求被分析的變量之間具有相關(guān)性,否則就失去主成分分析的原有意義了。比如在學(xué)生成績(jī)綜合評(píng)估、地區(qū)發(fā)展綜合評(píng)估、運(yùn)動(dòng)員綜合能力評(píng)估等,往往會(huì)有很多評(píng)估指標(biāo),這時(shí)候就需要進(jìn)行數(shù)據(jù)降維,用較少的幾個(gè)新變量代替原本的變量而盡可能保留原有信息,計(jì)算出綜合得分,進(jìn)而給出綜合評(píng)價(jià)結(jié)果。
現(xiàn)在假設(shè)原始數(shù)據(jù)像這樣:
主成分分析步驟:
構(gòu)建原始數(shù)據(jù)矩陣;
消除量綱——數(shù)據(jù)標(biāo)準(zhǔn)化;
建立協(xié)方差矩陣(就是相關(guān)系數(shù)矩陣);
求出特征值、特征向量;
根據(jù)方差、累積方差貢獻(xiàn)率確定主成分個(gè)數(shù);
求出綜合得分,給出現(xiàn)實(shí)意義的解釋。
下面具體從理論方面簡(jiǎn)單說(shuō)明一下相關(guān)的變量意義。
因?yàn)橛?p 列數(shù)據(jù),我們假設(shè)會(huì)有 p 個(gè)主成分,不會(huì)大于 p 個(gè)的,哈哈!然后才從里面挑出特征值大的。假設(shè)每個(gè)主成分與每個(gè)指標(biāo)(列)滿足關(guān)系:
我們需要求出滿足條件的 A = (A1,A2,…Ap),實(shí)際上就是 P 個(gè)變量協(xié)方差矩陣的特征向量,具體求法后面慢慢說(shuō)明。
對(duì)于一個(gè)有 n 條數(shù)據(jù) p 個(gè)指標(biāo)的數(shù)據(jù),構(gòu)建的數(shù)據(jù)矩陣就是 X = (Xij)nxp;對(duì)于一個(gè)矩陣的數(shù)據(jù)標(biāo)準(zhǔn)化就是,對(duì)于矩陣所有列分別標(biāo)準(zhǔn)化,拿其中一列來(lái)說(shuō),數(shù)據(jù)標(biāo)準(zhǔn)化用到的公式是:
對(duì)于第 i 列(Xi)與第 j 列(Xj)變量,協(xié)方差與相關(guān)系數(shù)矩陣公式如下:
數(shù)據(jù)經(jīng)過(guò)標(biāo)準(zhǔn)化后,其實(shí)協(xié)方差與相關(guān)系數(shù)矩陣是完全一樣的,因?yàn)閿?shù)據(jù)經(jīng)過(guò)標(biāo)準(zhǔn)化后,方差是 1,而協(xié)方差與相關(guān)系數(shù)就相差一個(gè)是否除以兩個(gè)方差。顯然,協(xié)方差與相關(guān)系數(shù)矩陣都是 PxP 的。
我們需要求出這個(gè)名為 R 的矩陣的特征值與特征向量(就是前面所說(shuō)的 A1,A2,…Ap 這些列向量)。矩陣的特征值就像線性代數(shù)里面那樣求。在 R 里面只需調(diào)用函數(shù) eigen() 就行了。其實(shí),一個(gè)矩陣每一列會(huì)對(duì)應(yīng)一個(gè)特征值,而特征值的大小代表了這一列的重要程度,特征值最大的就是第一主成分,特征值越小(該特征值 /SUM(特征值))可以略去。然后根據(jù) p 個(gè)特征向量算出,每個(gè)數(shù)據(jù)記錄(行)在每一個(gè)主成分上的得分,再將其與特征值做內(nèi)積 /SUM(特征值),就得到最終的綜合得分
主成分分析實(shí)例詳解
下面用 R 語(yǔ)言自帶數(shù)據(jù)集 swiss 進(jìn)行主成分分析加以說(shuō)明,這個(gè)數(shù)據(jù)集包含瑞士的 47 個(gè)城市在 6 個(gè)評(píng)價(jià)指標(biāo)上的數(shù)據(jù)。
數(shù)據(jù)預(yù)處理與數(shù)據(jù)探索
head(swiss)
# 判斷數(shù)據(jù)是否適合做主成分分析
cor(swiss)
可見(jiàn)有幾個(gè)變量的相關(guān)性還是比較強(qiáng)的,表明這份數(shù)據(jù)適合做主成分分析。
# 標(biāo)準(zhǔn)化數(shù)據(jù) (數(shù)據(jù) - 均值)/ 標(biāo)準(zhǔn)差
sc.swiss – scale(swiss)
構(gòu)建主成分模型
R 中構(gòu)建主成分模型用函數(shù) princomp(),第一個(gè)參數(shù)表示標(biāo)準(zhǔn)化后的數(shù)據(jù) sc.swiss 為數(shù)據(jù)對(duì)象,第二個(gè)參數(shù) cor = TRUE 表明用樣本的相關(guān)矩陣做主成分分析,取值為 FALSE 表示用協(xié)方差矩陣做主成分分析。當(dāng)然了,這里數(shù)據(jù)經(jīng)過(guò)標(biāo)準(zhǔn)化都是一樣的。
pri – princomp(sc.swiss,cor = TRUE)
summary(pri,loadings = TRUE)
圖中的 Loadings 那個(gè)矩陣就是由相關(guān)系數(shù)矩陣的特征向量按列組成的(圖中不完整的元素是因?yàn)檫@個(gè)值太小了,沒(méi)有給出),我們暫且把六列(六個(gè)特征向量)記為 Vec1,Vec2,Vec3,Vec4,Vec5,Vec6,后面需要用到。我們這里給出了六個(gè)主成分,當(dāng)然了,我們需要篩選最能表達(dá)原始數(shù)據(jù)信息的幾個(gè)特征值大的主成分。比如第一個(gè)主成分的表達(dá)式就是:
Y1 = -0.457Fer-0.424Agr+0.51Exa+0.454Edu-0.350Cat-0.15Inf
screeplot(pri,type = lines ,col = c( blue , red))
legend(1,2.5, 這里最陡即為 \n 主成分個(gè)數(shù) ,bty = n)
根據(jù)碎石圖確定主成分個(gè)數(shù)(4 個(gè)比較合適):
計(jì)算主成分綜合得分
這一份數(shù)據(jù)就是瑞士 47 個(gè)城市發(fā)展指標(biāo),比如我們想要為每個(gè)城市計(jì)算出一個(gè)綜合得分,得出每個(gè)城市的發(fā)展情況,給出結(jié)論。
使用 predict() 函數(shù),根據(jù)前面構(gòu)建的主成分模型 pri 計(jì)算每個(gè)城市分別在六個(gè)主成分上的得分。
這里看一下標(biāo)準(zhǔn)化后的數(shù)據(jù)前六行吧:
計(jì)算每一個(gè)記錄(行)在每個(gè)主成分上的分別得分是這樣,比如對(duì)于下面 Courtelary 這個(gè)城市在 Comp1(第一個(gè)主成分)上的得分就是用標(biāo)準(zhǔn)化后的 sc.swiss 的第一行與第一個(gè)特征向量做內(nèi)積,就是假設(shè):
Courtelary =(0.8051305 -1.4820682 -0.18668632 0.1062125 -0.7477267 0.77503669)
Vec1 =(0.4569876 0.4242141 -0.5097327 -0.4543119 0.3501111 0.1496668)
把 Courtelary 與 Vec1 看作向量就是,SUM (Courtelary .*Vec1) = 0.3596632,按照這種方法算出 Courtelary 在六個(gè)主成分上的得分為:
0.3596632 1.3844529 0.8505125 0.9012204 -0.6248550 -0.2803396
按照這種計(jì)算方法,我們可以看一下,與下面畫方框的城市 Courtelary 在六個(gè)主成分上的得分結(jié)果基本是一致的。
在將六個(gè)主成分(實(shí)際用 6 列)與六個(gè)特征向量做內(nèi)積,就是分別相乘再求和,就得到每個(gè)城市綜合得分,具體就是每一行有上面算的六個(gè)得分,整個(gè)矩陣就是六列,第一列乘以第一個(gè)特征值,…,第 6 列乘以第 6 個(gè)特征值,再把六列加起來(lái)成為一列,再除以 6,就是最終得分。
看一下前六個(gè)城市(一共 47 個(gè)城市)綜合得分:
分?jǐn)?shù)越小,表明城市發(fā)展越差。
城市綜合得分分布圖
得分最高有大于 2 的,最低也有接近 - 2 的,顯然城市發(fā)展不平衡,差異性顯著存在。
關(guān)于主成分就到這里,我覺(jué)得還是很詳細(xì)的,主要就是 PxP 的矩陣的特征值與特征向量,然后根據(jù)特征向量求出每條數(shù)據(jù)在每個(gè)主成分的分別得分,最后根據(jù)特征值算出綜合得分就 OK 了。
上述內(nèi)容就是基于 R 語(yǔ)言中主成分的示例分析,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。