溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于R語言中主成分的示例分析

發(fā)布時(shí)間:2021-11-22 10:58:02 來源:億速云 閱讀:296 作者:柒染 欄目:云計(jì)算

本篇文章為大家展示了基于R語言中主成分的示例分析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

數(shù)據(jù)分析中,我們經(jīng)常會(huì)遇到高維的數(shù)據(jù)集,這時(shí)候就需要降維簡化計(jì)算和模型。 主成分分析是一種經(jīng)典的數(shù)據(jù)降維方法,它要求被分析的變量之間具有相關(guān)性,否則就失去主成分分析的原有意義了。比如在學(xué)生成績綜合評估、地區(qū)發(fā)展綜合評估、運(yùn)動(dòng)員綜合能力評估等,往往會(huì)有很多評估指標(biāo),這時(shí)候就需要進(jìn)行數(shù)據(jù)降維,用較少的幾個(gè)新變量代替原本的變量而盡可能保留原有信息,計(jì)算出綜合得分,進(jìn)而給出綜合評價(jià)結(jié)果。

現(xiàn)在假設(shè)原始數(shù)據(jù)像這樣:

基于R語言中主成分的示例分析

主成分分析步驟:

  1. 構(gòu)建原始數(shù)據(jù)矩陣;

  2. 消除量綱——數(shù)據(jù)標(biāo)準(zhǔn)化;

  3. 建立協(xié)方差矩陣(就是相關(guān)系數(shù)矩陣);

  4. 求出特征值、特征向量;

  5. 根據(jù)方差、累積方差貢獻(xiàn)率確定主成分個(gè)數(shù);

  6. 求出綜合得分,給出現(xiàn)實(shí)意義的解釋。

下面具體從理論方面簡單說明一下相關(guān)的變量意義。

因?yàn)橛衟列數(shù)據(jù),我們假設(shè)會(huì)有p個(gè)主成分,不會(huì)大于p個(gè)的,哈哈!然后才從里面挑出特征值大的。假設(shè)每個(gè)主成分與每個(gè)指標(biāo)(列)滿足關(guān)系:

基于R語言中主成分的示例分析

我們需要求出滿足條件的A = (A1,A2,...Ap),實(shí)際上就是P個(gè)變量協(xié)方差矩陣的特征向量,具體求法后面慢慢說明。

對于一個(gè)有n條數(shù)據(jù)p個(gè)指標(biāo)的數(shù)據(jù),構(gòu)建的數(shù)據(jù)矩陣就是X = (Xij)nxp;對于一個(gè)矩陣的數(shù)據(jù)標(biāo)準(zhǔn)化就是,對于矩陣所有列分別標(biāo)準(zhǔn)化,拿其中一列來說,數(shù)據(jù)標(biāo)準(zhǔn)化用到的公式是:

基于R語言中主成分的示例分析

對于第i列(Xi)與第j列(Xj)變量,協(xié)方差與相關(guān)系數(shù)矩陣公式如下:

基于R語言中主成分的示例分析

基于R語言中主成分的示例分析

數(shù)據(jù)經(jīng)過標(biāo)準(zhǔn)化后,其實(shí)協(xié)方差與相關(guān)系數(shù)矩陣是完全一樣的,因?yàn)閿?shù)據(jù)經(jīng)過標(biāo)準(zhǔn)化后,方差是1,而協(xié)方差與相關(guān)系數(shù)就相差一個(gè)是否除以兩個(gè)方差。顯然,協(xié)方差與相關(guān)系數(shù)矩陣都是PxP的。

我們需要求出這個(gè)名為R的矩陣的特征值與特征向量(就是前面所說的A1,A2,...Ap這些列向量)。矩陣的特征值就像線性代數(shù)里面那樣求。在R里面只需調(diào)用函數(shù)eigen()就行了。其實(shí),一個(gè)矩陣每一列會(huì)對應(yīng)一個(gè)特征值,而特征值的大小代表了這一列的重要程度,特征值最大的就是第一主成分,特征值越小(該特征值/SUM(特征值))可以略去。然后根據(jù)p個(gè)特征向量算出,每個(gè)數(shù)據(jù)記錄(行)在每一個(gè)主成分上的得分,再將其與特征值做內(nèi)積/SUM(特征值),就得到最終的綜合得分

主成分分析實(shí)例詳解

下面用R語言自帶數(shù)據(jù)集swiss進(jìn)行主成分分析加以說明,這個(gè)數(shù)據(jù)集包含瑞士的47個(gè)城市在6個(gè)評價(jià)指標(biāo)上的數(shù)據(jù)。

數(shù)據(jù)預(yù)處理與數(shù)據(jù)探索

head(swiss)
#判斷數(shù)據(jù)是否適合做主成分分析
cor(swiss)

基于R語言中主成分的示例分析

可見有幾個(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ù)對象,第二個(gè)參數(shù)cor = TRUE表明用樣本的相關(guān)矩陣做主成分分析,取值為FALSE表示用協(xié)方差矩陣做主成分分析。當(dāng)然了,這里數(shù)據(jù)經(jīng)過標(biāo)準(zhǔn)化都是一樣的。

pri <- princomp(sc.swiss,cor = TRUE)
summary(pri,loadings = TRUE)

基于R語言中主成分的示例分析

圖中的Loadings那個(gè)矩陣就是由相關(guān)系數(shù)矩陣的特征向量按列組成的(圖中不完整的元素是因?yàn)檫@個(gè)值太小了,沒有給出),我們暫且把六列(六個(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è)比較合適):

基于R語言中主成分的示例分析

計(jì)算主成分綜合得分

這一份數(shù)據(jù)就是瑞士47個(gè)城市發(fā)展指標(biāo),比如我們想要為每個(gè)城市計(jì)算出一個(gè)綜合得分,得出每個(gè)城市的發(fā)展情況,給出結(jié)論。

基于R語言中主成分的示例分析

使用predict()函數(shù),根據(jù)前面構(gòu)建的主成分模型pri計(jì)算每個(gè)城市分別在六個(gè)主成分上的得分。

這里看一下標(biāo)準(zhǔn)化后的數(shù)據(jù)前六行吧:

基于R語言中主成分的示例分析

計(jì)算每一個(gè)記錄(行)在每個(gè)主成分上的分別得分是這樣,比如對于下面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é)果基本是一致的。

基于R語言中主成分的示例分析

在將六個(gè)主成分(實(shí)際用6列)與六個(gè)特征向量做內(nèi)積,就是分別相乘再求和,就得到每個(gè)城市綜合得分,具體就是每一行有上面算的六個(gè)得分,整個(gè)矩陣就是六列,第一列乘以第一個(gè)特征值,...,第6列乘以第6個(gè)特征值,再把六列加起來成為一列,再除以6,就是最終得分。

看一下前六個(gè)城市(一共47個(gè)城市)綜合得分:

基于R語言中主成分的示例分析

分?jǐn)?shù)越小,表明城市發(fā)展越差。

基于R語言中主成分的示例分析

城市綜合得分分布圖

得分最高有大于2的,最低也有接近-2的,顯然城市發(fā)展不平衡,差異性顯著存在。

關(guān)于主成分就到這里,我覺得還是很詳細(xì)的,主要就是PxP的矩陣的特征值與特征向量,然后根據(jù)特征向量求出每條數(shù)據(jù)在每個(gè)主成分的分別得分,最后根據(jù)特征值算出綜合得分就OK了。

上述內(nèi)容就是基于R語言中主成分的示例分析,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI