天天看點

主成分分析 (一): 基本思想與主成分估計方法

主成分分析(principal component analysis)是1901年Pearson對非随機變量引 入的,1933年Hotelling将此方法推廣到随機向量的情形,主成分分析和聚類分析有很 大的不同,它有嚴格的數學理論作基礎。  主成分分析的主要目的是希望用較少的變量去解釋原來資料中的大部分變異,将我 們手中許多相關性很高的變量轉化成彼此互相獨立或不相關的變量。通常是選出比原始 變量個數少,能解釋大部分資料中的變異的幾個新變量,即所謂主成分,并用以解釋資 料的綜合性名額。由此可見,主成分分析實際上是一種降維方法。  

主成分分析系列:

主成分分析 (一): 基本思想與主成分估計方法

主成分分析 (二): 特征值因子的篩選

主成分分析法(三):計算步驟

目錄

1  基本思想及方法

1 确定各個主成分的方法

2 注意事項

2  主成分估計 

單參數主成分估計

主成分分析 (一): 基本思想與主成分估計方法

1  基本思想及方法

主成分分析 (一): 基本思想與主成分估計方法
主成分分析 (一): 基本思想與主成分估計方法

1 确定各個主成分的方法

一個主成分不足以代表原來的 p 個變量,是以需要尋找第二個乃至第三、第四主 成分,第二個主成分不應該再包含第一個主成分的資訊,統計上的描述就是讓這兩個主 成分的協方差為零,幾何上就是這兩個主成分的方向正交。具體确定各個主成分的方法 如下。 

主成分分析 (一): 基本思想與主成分估計方法

2 注意事項

 1)主成分分析的結果受量綱的影響,由于各變量的機關可能不一樣,如果各自改變量綱,結果會不一樣,這是主成分分析的大問題,回歸分析是不存在這種情況的, 是以實際中可以先把各變量的資料标準化,然後使用協方差矩陣或相關系數矩陣進行分 析。

 2)為使方差達到大的主成分分析,是以不用轉軸(由于統計軟體常把主成分分 析和因子分析放在一起,後者往往需要轉軸,使用時應注意)。

 3)主成分的保留。用相關系數矩陣求主成分時,Kaiser主張将特征值小于1的主成 分予以放棄(這也是SPSS軟體的預設值)。

 4)在實際研究中,由于主成分的目的是為了降維,減少變量的個數,故一般選取 少量的主成分(不超過5或6個),隻要它們能解釋變異的70%~80%(稱累積貢獻率) 就行了。  下面我們直接通過主成分估計(principle estimate)進一步闡述主成分分析的基 本思想和相關概念。

2  主成分估計 

 主成分估計(principal component estimate)是Massy在1965年提出的,它是回歸系數參數的一種線性有偏估計(biased estimate),同其它有偏估計,如嶺估計(ridge estimate)等一樣,是為了克服小二乘(LS)估計在設計矩陣病态(即存在多重共線性) 時表現出的不穩定性而提出的。  

主成分估計采用的方法是将原來的回歸自變量變換到另另一組變量,即主成分,選擇其中一部分重要的主成分作為新的自變量(此時丢棄了一部分,影響不大的自變量, 這實際達到了降維的目的),然後用小二乘法對選取主成分後的模型參數進行估計, 後再變換回原來的模型求出參數的估計。 

主成分分析 (一): 基本思想與主成分估計方法
主成分分析 (一): 基本思想與主成分估計方法
主成分分析 (一): 基本思想與主成分估計方法
主成分分析 (一): 基本思想與主成分估計方法
主成分分析 (一): 基本思想與主成分估計方法
主成分分析 (一): 基本思想與主成分估計方法
主成分分析 (一): 基本思想與主成分估計方法

單參數主成分估計

理論上表明:主成分估計在設計陣病态時優于LS估計,但(31)在特征值為1的附 近存在跳躍,會影響計算的穩定性,楊虎在1989年給出的單參數主成分估計解決了這個 問題。 

主成分分析 (一): 基本思想與主成分估計方法

例3  Hald水泥問題,考察含如下四種化學成分 

主成分分析 (一): 基本思想與主成分估計方法
主成分分析 (一): 基本思想與主成分估計方法

相關系數陣的四個特征值依次為2.2357,1.5761,0.1866,0.0016。最後一個特征值接近于零,前三個特征值之和所占比例(累積貢獻率)達到0.999594。于是我們略去 第4個主成分。其它三個保留的特征值對應的三個特征向量分别為 

主成分分析 (一): 基本思想與主成分估計方法

對Hald資料直接作線性回歸得經驗回歸方程 

主成分分析 (一): 基本思想與主成分估計方法

再由(31)式計算出主成分估計,即可獲得如下主成分回歸方程 

主成分分析 (一): 基本思想與主成分估計方法

兩個方程的差別在于後者具有更小的均方誤差,因而更穩定。此外前者所有系數都無法 通過顯著性檢驗。  計算的MATLAB程式如下: 

clc,clear 
load sn.txt  %把原始的x1,x2,x3,x4,y的資料儲存在純文字檔案sn.txt中 
[m,n]=size(sn);num=3; %num為選取的主成分的個數 
mu=mean(sn);sigma=std(sn); 
snb=zscore(sn); %資料标準化 
b=snb(:,1:end-1); %x1,x2,x3,x4的資料賦給b 
r=cov(b);  %标準化資料的協方差陣就是相關系數陣 
[x,y,z]=pcacov(r); 
f=repmat(sign(sum(x)),size(x,1),1); 
x=x.*f; 
%以下是普通的小二乘法回歸 
r=[ones(m,1),b]\snb(:,end);  %标準化資料的回歸方程系數 
bzh=mu./sigma; 
ch10=mu(end)-bzh(1:end-1)*r(2:end)*sigma(end)  %原始資料的常數項 
fr=r(2:end);fr=fr'; 
ch1=fr./sigma(1:end-1)*sigma(end) %原始資料的x1,x2等等系數 
%以下是主成分回歸 
pval=b*x(:,1:num); 
rp=[ones(m,1),pval]\snb(:,end);  %主成分資料的回歸方程系數 
beta=x(:,1:num)*rp(2:num+1);           %标準化資料的回歸方程系數 
ch20=mu(end)-bzh(1:end-1)*beta*sigma(end)  %原始資料的常數項 
fr=beta'; 
ch2=fr./sigma(1:end-1)*sigma(end) %原始資料的x1,x2等等系數 
check1=sqrt(sum((sn(:,1:end-1)*ch1'+ch10-sn(:,end)).^2)/(m-n)) 
check2=sqrt(sum((sn(:,1:end-1)*ch2'+ch20-sn(:,end)).^2)/(m-num-1)) 
           

主成分分析系列:

主成分分析 (一): 基本思想與主成分估計方法

主成分分析 (二): 特征值因子的篩選

主成分分析法(三):計算步驟

繼續閱讀