数学建模——主成分分析及spss软件操作
主成分分析的基本原理:
一:什么是主成分分析?
? ? ? ? 主成分分析是分析多個(gè)變量之間相關(guān)性的一種多元統(tǒng)計(jì)方法,研究如何通過(guò)少數(shù)幾個(gè)主成分來(lái)解釋多個(gè)變量之間的內(nèi)部結(jié)構(gòu),即從原始變量中導(dǎo)出幾個(gè)主分量,使他們盡可能多的保留原始變量的信息,且彼此間互不相關(guān);
主成分分析的目的:數(shù)據(jù)的壓縮+數(shù)據(jù)的解釋
常被用來(lái)尋找判斷事物或現(xiàn)象的綜合指標(biāo),并對(duì)綜合指標(biāo)所包含的信息進(jìn)行適當(dāng)?shù)慕忉?/span>
主成分分析的基本思想(以?xún)蓚€(gè)變量為例):
1:對(duì)這兩個(gè)變量所攜帶的信息進(jìn)行濃縮處理
2:假定只有兩個(gè)變量x1,x2,由散點(diǎn)圖可見(jiàn)兩個(gè)變量存在相關(guān)關(guān)系(例如這些點(diǎn)都近似存在于y=x這條直線(xiàn)上,x1=x2,這意味著兩個(gè)變量提供的信息有重疊,如果不加處理,會(huì)消耗大量的時(shí)間精力處理數(shù)據(jù)。
3:如果把兩個(gè)變量用一個(gè)變量來(lái)表示,同時(shí)這一個(gè)新的變量又盡可能包含原來(lái)的兩個(gè)變量的信息,這就是降維的過(guò)程。
根據(jù)初始坐標(biāo)軸x1x2,可看出所有數(shù)據(jù)點(diǎn)均可近似的看成存在于y=x的曲線(xiàn)上,現(xiàn)在將坐標(biāo)軸旋轉(zhuǎn)用于產(chǎn)生新的變量,變換后的坐標(biāo)軸為y1,y2,此時(shí)變量y1,y2間看不到明顯的函數(shù)關(guān)系,同時(shí)發(fā)現(xiàn)變量y1分布寬度更長(zhǎng),跨度比較大,說(shuō)明變量y1包含了更大的信息量,且y1數(shù)據(jù)間變化更大,波動(dòng)更大,進(jìn)而方差更大,同時(shí)y2分布更窄,即變量y2所攜帶的信息量更小,對(duì)建模的結(jié)果的影響微乎其微,例如:通過(guò)一個(gè)班的考試成績(jī)?cè)u(píng)估一個(gè)學(xué)生綜合成績(jī)的好壞,語(yǔ)文成績(jī)相差很大且分布在各個(gè)階段,每個(gè)人之間的成績(jī)差異很大,重分的很少,而數(shù)學(xué)成績(jī)?nèi)糠植荚?35左右,且相差不大,重分的人很多,那么你要評(píng)價(jià)一個(gè)學(xué)生綜合成績(jī)的好壞,不是只需要通過(guò)語(yǔ)文成績(jī)的數(shù)據(jù)就可以分析了嗎?,所以對(duì)于此例,我僅僅用y1的長(zhǎng)軸就可以替換y2)
y1與x1,x2的關(guān)系
y1=a1x1+a2x2(保留數(shù)據(jù))
y2=a3x1+a4x2(刪除數(shù)據(jù))
此時(shí)就將原來(lái)的x1,x2兩個(gè)變量替換為y1,實(shí)現(xiàn)數(shù)據(jù)降維
所以主成分分析最關(guān)鍵的是找到旋轉(zhuǎn)坐標(biāo)軸的參數(shù)a1,a2,實(shí)現(xiàn)y和x1,x2邏輯關(guān)系
基本思想
主成分分析就是設(shè)法將原來(lái)眾多具有一定相關(guān)性的變量(如p個(gè)變量),重新組合成一組新的相互無(wú)關(guān)的綜合變量來(lái)代替原變量
通常數(shù)學(xué)上的處理就是將原來(lái)p個(gè)變量作線(xiàn)性組合作為新的綜合變量
如果將選取的第一個(gè)線(xiàn)性組合即第一個(gè)綜合變量記為F1,自然希望F1盡可能多的反映原來(lái)變量的值,如何反映?
最經(jīng)典的方法就是使用方差來(lái)表達(dá),即van(F1)越大,表示F1包含的信息越多,在所有的線(xiàn)性組合中方差最大的稱(chēng)為第一主成分
如果第一主成分不足以代表原來(lái)p個(gè)變量的信息,在考慮選取F2即第二個(gè)線(xiàn)性組合,F2稱(chēng)為第二主成分,那么F1F2間有何關(guān)系呢?
為了有效地反映原來(lái)的信息,F1已有的信息不要再出現(xiàn)在F2中,即Y1Y2協(xié)方差為0,即cov(Y1,Y2)=0,因此這些主成分之間是互不相關(guān)的,而且方差依次遞減,以此類(lèi)推可能會(huì)得到多個(gè)主成分,那么什么時(shí)候結(jié)束呢?
各主成分的累計(jì)方差貢獻(xiàn)率>80%或特征根>1
數(shù)學(xué)模型
?要從原來(lái)的所有變量得到新的綜合變量,一種較為簡(jiǎn)單的方法是做線(xiàn)性變換,使新的綜合變量為原變量的線(xiàn)性組合
?數(shù)學(xué)模型的條件
對(duì)于任意常數(shù)c,有
? ? ? ? var(cF1)=var(F1)
為了使方差var(F1)可比較,要求線(xiàn)性組合的系數(shù)滿(mǎn)足規(guī)范化體條件
即,線(xiàn)性組合中各變量的前置系數(shù)平方和為1
要求原始變量之間存在一定的相關(guān)性(相關(guān)系數(shù)分析:pearson,spearman見(jiàn)我空間)
要求各個(gè)綜合變量間互不相關(guān),即協(xié)方差為0
為了消除變量量綱不同對(duì)方差的影響,通常對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,變量之間的協(xié)方差即為相關(guān)系數(shù)
能否做主成分分析的兩大檢驗(yàn)
1:KMO檢驗(yàn)結(jié)果>0.5
2:Bartlett's檢驗(yàn)<0.05
滿(mǎn)足上述條件一個(gè)即可
?計(jì)算過(guò)程推導(dǎo)公式需要良好的線(xiàn)性代數(shù)基礎(chǔ),我學(xué)的不好,在這里不做描述,數(shù)學(xué)建模會(huì)用matlab編程即可,使用spss也不需要掌握此過(guò)程,說(shuō)白了就是laozi不會(huì)講,你也不愿意聽(tīng),數(shù)學(xué)建模也用不到。
?如果前k個(gè)主成分累計(jì)貢獻(xiàn)率達(dá)到85%,則表明前k個(gè)主成分基本包含了全部測(cè)量指標(biāo)的基本信息,從而達(dá)到了變量降維的目的。
注意:為了消除數(shù)據(jù)量綱不統(tǒng)一,通常將原始數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理!!!
這里給出一種處理數(shù)據(jù)的方法——?dú)w一化
Min-max 標(biāo)準(zhǔn)化
? ??新數(shù)據(jù)=(原數(shù)據(jù)-極小值)/(極大值-極小值)
? ? 標(biāo)準(zhǔn)化以后,X中元素的取值范圍是[0,1]。
X = (X-Xmin))./(Xmax-Xmin);
代碼部分:
1. [Y,PS] = mapminmax(X,YMIN,YMAX) 2. [Y,PS] = mapminmax(X,FP) 3. Y = mapminmax('apply',X,PS) 4. X = mapminmax('reverse',Y,PS) %反歸一化對(duì)于1和2的調(diào)用形式來(lái)說(shuō),X是預(yù)處理的數(shù)據(jù),Ymin和Ymax是期望的每一行的最小值與最大值,FP是一個(gè)結(jié)構(gòu)體成員主要是FP.ymin, FP.ymax.這個(gè)結(jié)構(gòu)體就可以代替Ymin和Ymax,1和2的處理效果一樣,只不過(guò)參數(shù)的帶入形式不同。不設(shè)置YMIN 和YMAX,歸一化范圍為0~1。
示例:
結(jié)果:
0 0.250000000000000 0.500000000000000 0.750000000000000 1 0 0.250000000000000 0.500000000000000 0.750000000000000 1以上是數(shù)學(xué)建模主成分分析理論準(zhǔn)備,聽(tīng)不懂沒(méi)事兒,下面案例
主成分分析的步驟
1:對(duì)原來(lái)的p個(gè)指標(biāo)進(jìn)行標(biāo)準(zhǔn)化,以消除變量在水平和量綱上的影響
2:根據(jù)標(biāo)準(zhǔn)化后的矩陣求出相關(guān)系數(shù)矩陣
3:求出協(xié)方差矩陣的特征根和特征向量
4:確定主成分,并對(duì)各主成分所包含的信息予以適當(dāng)解釋
案例
(spss中無(wú)法做主成分分析,這里我們采用的是因子分析!,并不影響結(jié)果)
根據(jù)我國(guó)31個(gè)省市自治區(qū)2006年的6項(xiàng)主要經(jīng)濟(jì)指標(biāo)數(shù)據(jù),進(jìn)行主成分分析,找出主成分并進(jìn)行適當(dāng)解釋
| A | B | C | D | E | F | G | |
| 1 | 地區(qū) | 人均GDP (元) | 財(cái)政收入 (萬(wàn)元) | 固定資產(chǎn)投資 (億元) | 年末總?cè)丝?/p> (萬(wàn)人) | 居民消費(fèi)水平 (元/人) | 社會(huì)消費(fèi)品零售總額 (億元) |
| 2 | 北京 | 50467 | 11171514 | 3296.4 | 1581 | 16770 | 3275.2 |
| 3 | 天津 | 41163 | 4170479 | 1820.5 | 1075 | 10564 | 1356.6 |
| 4 | 河北 | 16962 | 6205340 | 5470.2 | 6898 | 4945 | 3397.4 |
| 5 | 山西 | 14123 | 5833752 | 2255.7 | 3375 | 4843 | 1613.4 |
| 6 | 內(nèi)蒙古 | 20053 | 3433774 | 3363.2 | 2397 | 5800 | 1595.3 |
| 7 | 遼寧 | 21788 | 8176718 | 5689.6 | 4271 | 6929 | 3434.6 |
題目分析:自變量過(guò)多,是否可以用更少的指標(biāo)代替這6個(gè)變量,即數(shù)據(jù)降維,利用主成分實(shí)現(xiàn)替代
在spss中導(dǎo)入數(shù)據(jù)開(kāi)始操作
?1:數(shù)據(jù)處理——量綱一致化操作(千萬(wàn)別忘!!!)
點(diǎn)擊上方菜單欄——分析——描述統(tǒng)計(jì)——描述
?將變量導(dǎo)入,勾選“將標(biāo)準(zhǔn)化變量另存為變量”
?結(jié)果
?數(shù)據(jù)標(biāo)準(zhǔn)化結(jié)果
?接下來(lái)進(jìn)行主成分分析,點(diǎn)擊菜單欄“分析”——“降維”——“因子”
?將已經(jīng)量綱一致化的數(shù)據(jù)導(dǎo)入右側(cè)變量,點(diǎn)擊右側(cè)“描述”,在窗口中勾選“初始解”以及“KMO和巴特利特球型度檢驗(yàn)”
?緊接著點(diǎn)擊“提取”,在彈出的對(duì)話(huà)框中勾選“協(xié)方差矩陣”,剩下的參數(shù)默認(rèn)不動(dòng)
?接下來(lái)點(diǎn)擊旋轉(zhuǎn),勾選“無(wú)”
?接下來(lái)點(diǎn)擊得分,勾選“保存為變量”,勾選“顯示因子得分系數(shù)矩陣”
?點(diǎn)擊確定輸出結(jié)果
?由圖可得,第一個(gè)特征值為3.042,第二個(gè)特征值為2.596,前兩個(gè)主成分的累計(jì)貢獻(xiàn)率之和為93.967%,超過(guò)85%,那么就選擇這兩個(gè)變量1,2為主成分
下面讓我們來(lái)直觀(guān)的分析我們所選取的主成分1,2和6個(gè)變量之間的成分矩陣(關(guān)聯(lián)程度)
可以看出主成分1對(duì)于:人均GDP-0.877(負(fù)相關(guān)),固定資產(chǎn)投資-0.735(負(fù)相關(guān)),年末總?cè)丝?.927,居民消費(fèi)水平-0.836幾個(gè)變量系數(shù)較大,所以主成分1可以很好的代表這四個(gè)變量,同理,主成分2替代了:財(cái)政收入以及社會(huì)消費(fèi)品零售總額兩個(gè)因子,可能有人會(huì)問(wèn)了,憑啥我系數(shù)越大越能代表你呢?其實(shí)就是一個(gè)關(guān)聯(lián)度相關(guān)性的問(wèn)題,比如你開(kāi)家長(zhǎng)會(huì),是不是你爸爸媽媽最可以代表你呢,因?yàn)榘职謰寢尯湍愕年P(guān)聯(lián)度最高啊,其次是哥哥姐姐啥的,對(duì)不?
建模中可以通過(guò)展示載荷圖將其更立體的展現(xiàn)出來(lái),同時(shí)充實(shí)你的論文內(nèi)容
那么如何輸出載荷圖?操作如下
頂部選擇“分析”——“降維”——“因子”——旋轉(zhuǎn)——勾選載荷圖
?輸出載荷圖如下
?也可看出,橫坐標(biāo)為主成分1,縱坐標(biāo)為主成分2,例如人均GDP,橫坐標(biāo)為-0.877,縱坐標(biāo)為+0.406,其余變量同理。
或者可以嘗試一下碎石圖:
?輸出圖像
?規(guī)定:在比較大的斜率拐點(diǎn)處,發(fā)生明顯的斜率變化,拐點(diǎn)之前可以作為主成分
這里我們?cè)侔殉煞志仃嚁[在這里
一通猛如虎的分析之后,你還記得主成分分析的關(guān)鍵步驟嗎,或者我們之前的操作是為了什么呢?
文章的開(kāi)頭說(shuō)過(guò),主成分分析最關(guān)鍵的是找到旋轉(zhuǎn)坐標(biāo)軸的參數(shù)a1,a2,實(shí)現(xiàn)y和x1,x2邏輯關(guān)系,現(xiàn)在的系數(shù)我們已經(jīng)得到了嗎?確實(shí)是得到了一些,比如成分矩陣?yán)锏?0、877,-0.220不正是第一第二主成分的前置系數(shù)嗎?那接下來(lái)我們能直接寫(xiě)出y1=a1x1+a2x2的表達(dá)式嗎?
答案肯定是不可以的,因?yàn)閟pss里沒(méi)有專(zhuān)門(mén)針對(duì)主成分分析的操作,我們剛剛做的是因子分析,我們得到的是因子分析的系數(shù)矩陣,所以要進(jìn)行變換,其中復(fù)雜的推導(dǎo)過(guò)程就不說(shuō)了,因?yàn)槲也粫?huì)你不聽(tīng)數(shù)模用不到,假設(shè)因子分析法產(chǎn)生的一個(gè)前置系數(shù)為,我們要的是主成分分析法中各主成分的前置系數(shù),計(jì)算公式為 uij=aij/(為貢獻(xiàn)率),目前,我們已經(jīng)得出因子分析法的成分矩陣,只需要除以根號(hào)下lamda即可得到真正的主成分分析法的前置系數(shù),實(shí)在不理解為啥直接記住這步操作即可,
具體的spss操作如下,在原有的成分矩陣基礎(chǔ)上點(diǎn)擊——編輯內(nèi)容——在查看器中
?選中數(shù)據(jù)
粘貼到表格中進(jìn)行變換,更改變量名為V1,V2
上方菜單欄點(diǎn)擊——轉(zhuǎn)換——計(jì)算
?
?計(jì)算真實(shí)的主成分分析前置系數(shù)(3.042是因子分析法得出的成分矩陣?yán)锏南禂?shù))
?計(jì)算結(jié)果W1,W1為第一主成分F1的前置系數(shù)
寫(xiě)出F1結(jié)果表達(dá)式
F1計(jì)算結(jié)果
由此,我們將原先的6個(gè)指標(biāo)被我的一個(gè)指標(biāo)F1代替,起到了降維的作用。
?
?F2計(jì)算方法同上,再次演示一遍
先計(jì)算前置系數(shù)W2,W2為第二主成分F2的前置系數(shù)
寫(xiě)出F2結(jié)果表達(dá)式
?
?
最終結(jié)果
至此,原先的六個(gè)變量變成了F1,F2兩個(gè)變量,降維成功,主成分分析結(jié)束。(上圖W2出現(xiàn)的數(shù)據(jù)亂碼是截圖時(shí)候產(chǎn)生的bug)
2021/7/24? 0:56? 留校中 后續(xù)會(huì)繼續(xù)推出數(shù)學(xué)建模各種模型及代碼,初次寫(xiě)博客,寫(xiě)的不好多多見(jiàn)諒,下一次更新一維二維插值算法+擬合算法(matlab編程)
?
?
?
總結(jié)
以上是生活随笔為你收集整理的数学建模——主成分分析及spss软件操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C语言:一种高效、易学的编程语言
- 下一篇: fork()函数详解