matlab中基于矩阵运算的多元线性回归分析和检验

##作业:分析影响中国人口自然增长的主要原因,并建立人口自然增长率与各经济因子之间的多元回归模型,并对建立的模型进行统计检验(包括拟合优度、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=X
B; %建立预测模型

%计算用于检验的统计量
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.5
s; %计算参数标准误差
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

后话:本人只是搬运工,文章非原创!如有错误,请指出。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值