##作業:分析影響中國人口自然增長的主要原因,並建立人口自然增長率與各經濟因子之間的多元回歸模型,並對建立的模型進行統計檢驗(包括擬合優度、F檢驗、t 檢驗,並用多元逐步回歸方法解決多重共性問題。
%基於矩陣運算的多元線性回歸分析
%參數估計
x1=[15037 17001 18718 21826 26937 35260 48108 59811 70142 78061 83024 88479 98000 108068 119096 135174 159587 184089 213132];
x2=[18.8 18 3.1 3.4 6.4 14.7 24.1 17.1 8.3 2.8 -0.8 -1.4 0.4 0.7 -0.8 1.2 3.9 1.8 1.5];
x3=[1366 1519 1644 1893 2311 2998 4044 5046 5846 6420 6796 7159 7858 8622 9398 10542 12336 14040 16024];
y=[15.73 15.04 14.39 12.98 11.6 11.45 11.21 10.55 10.42 10.06 9.14 8.18 7.58 6.95 6.45 6.01 5.87 5.89 5.38];
x=[x1;x2;x3]; %向量合併為矩陣
X=[ones(length(y),1) x』]; %在矩陣中加入常數向量並轉置
Y=y』; %因變量向量轉置
[m,n]=size(x); %計算自變量矩陣的行列數
B=inv(X』*X)*X』Y; %計算回歸係數
Yp=XB; %建立預測模型
%計算用於檢驗的統計量
R2=(abs(B』X』Y)-nmean(y)2)/(abs(Y』*Y)-n*mean(y)2);
%計算復相關係數
Radj2=R2-(1-R2)(m+1)/(n-m-1); %計算校正相關係數平方
s=sqrt((Y』*Y-B』*X』*Y)/(n-m-1)); %計算標準誤差
v=s/mean(y); %計算變異係數
F=(abs(B』*X』Y)-nmean(y)2)/(m*s2); %計算F統計量
e=Y-Yp; %計算殘差
i=1:n-1; %殘差編號
DW=sumsqr(e(i+1)-e(i))/sumsqr(e); %計算Durbin-Watson統計量
%計算偏自相關係數
i=1:n;j=1:m+1; %定義矩陣元素編號
Xy=[x』 Y]; %將變量合併為一個新矩陣
M=mean(Xy(:,j)); %計算各個變量的均值
S=std(Xy(:,j)); %計算各個變量的標準差
Mv=M(ones(n,1)😅; %均值向量平移為矩陣
Sv=S(ones(n,1)😅; %標準差向量平移為矩陣
Xs=(Xy-Mv)./Sv; %數據標準化
Rs=cov(Xs); %計算簡單相關係數矩陣
C=inv(Rs); %計算簡單相關係數矩陣的逆矩陣
Cjy=C(:,m+1); %提取逆矩陣的末列
Cjj=diag©; %提取逆矩陣的對角線元素
Pr=-Cjy./((Cjj*C(m+1,m+1)).^0.5); %計算偏相關係數
Rjy=Pr(1:m); %提取自變量的偏相關係數
%計算t統計量
i=1:n;j=1:m; %定義矩陣元素編號
xt=x』; %自變量矩陣轉置
M=mean(xt(:,j)); %計算自變量均值
N=M(ones(n,1)😅; %均值向量平移為矩陣
Z=xt-N; %變量中心化
P=Z』Z; %計算自變量的交叉乘積和
D=inv§; %交叉乘積和矩陣求逆
d=diag(D); %提取逆矩陣的對角線元素
sb=d.^0.5s; %計算參數標準誤差
b=B(2:m+1); %提取回歸係數
T=b./sb; %計算t統計量
%給出部分計算結果
B,R2,s,F,DW,T,Rjy %給出參數和統計量的計算值
%藉助相關係數矩陣計算共線性容忍度和相應的VIF值
% x1=[15037 17001 18718 21826 26937 35260 48108 59811 70142 78061 83024 88479 98000 108068 119096 135174 159587 184089 213132];
% x2=[18.8 18 3.1 3.4 6.4 14.7 24.1 17.1 8.3 2.8 -0.8 -1.4 0.4 0.7 -0.8 1.2 3.9 1.8 1.5];
% x3=[1366 1519 1644 1893 2311 2998 4044 5046 5846 6420 6796 7159 7858 8622 9398 10542 12336 14040 16024];
x=[x1;x2;x3]; %自變量向量合併為矩陣
[m,n]=size(x); %計算矩陣的行列數
i=1:n;j=1:m; %定義矩陣元素編號
X=x』; %自變量矩陣轉置
M=mean(X(:,j)); %計算各個變量的均值
S=std(X(:,j)); %計算各個變量的標準差
Mv=M(ones(n,1)😅; %均值向量平移為矩陣
Sv=S(ones(n,1)😅; %標準差向量平移為矩陣
Xs=(X-Mv)./Sv; %數據標準化
Rs=cov(Xs); %計算簡單相關係數矩陣
C=inv(Rs); %計算簡單相關係數矩陣的逆矩陣
VIF=diag©; %提取對角線上的VIF值
Tol=ones(m,1)./VIF; %計算容忍度Tol值
Col=[[j]』 Tol VIF]; %提取自變量的偏相關係數
%輸出多重共線性判斷計算結果
Rs
後話:本人只是搬運工,文章非原創!如有錯誤,請指出。