- 积分
- 7031
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2018-1-1
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
基于矩阵运算的多元线性回归分析
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)-n*mean(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)-n*mean(y)^2)/(m*s^2); %计算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(C); %提取逆矩阵的对角线元素
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(P); %交叉乘积和矩阵求逆
d=diag(D); %提取逆矩阵的对角线元素
sb=d.^0.5*s; %计算参数标准误差
b=B(2:m+1); %提取回归系数
T=b./sb; %计算t统计量
%给出部分计算结果
B,R2,s,F,DW,T,Rjy %给出参数和统计量的计算值
%基于回归计算程序包的多元线性回归分析
x1=[57.82 58.05 59.15 63.83 65.36 67.26 66.92 67.79 75.65 80.57 79.02 80.52 86.88 95.48 109.71 126.5 138.89 160.56];
x2=[27.05 28.89 33.02 35.23 24.94 32.95 30.35 38.70 47.99 54.18 58.73 59.85 64.57 70.97 81.54 94.01 103.23 119.33];
x3=[14.54 16.83 12.26 12.87 11.65 12.87 10.80 10.93 14.71 17.56 20.32 18.67 25.34 25.06 29.69 43.86 48.90 60.98];
y=[3.09 3.40 3.88 3.90 3.22 3.76 3.59 4.03 4.34 4.65 4.78 5.04 5.59 6.01 7.03 10.03 10.83 12.9];
x=[x1;x2;x3]; %向量合并为矩阵
X=[ones(length(y),1) x']; %在矩阵中加入常数向量并转置
Y=y'; %因变量向量转置
[m,n]=size(x); %计算自变量矩阵的行列数
[B Bint E Eint Stats]=regress(Y,X); %调用回归分析程序包
s=Stats(4)^0.5; %给出标准误差
DW=sumsqr(E(2:n)-E(1:n-1))/sumsqr(E); %因变量向量转置
rcoplot(E,Eint); %绘制残差序列的置信区间图
%计算t统计量
SB=Stats(4)*inv(X'*X); %计算一个特殊的方阵
D=diag(SB); %提取方阵对角线元素
sj=D.^0.5; %计算参数标准误差
T=B./sj; %计算t统计量
%计算偏自相关系数
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(C); %提取逆矩阵的对角线元素
Pr=-Cjy./((Cjj*C(m+1,m+1)).^0.5); %计算偏相关系数
Rjy=Pr(1:m); %提取自变量的偏相关系数
%计算t统计量(2)
MSE=E'*E/(n-m-1);
SB=MSE*inv(X'*X);
D=diag(SB);
T=B./sqrt(D)
%计算共线性容忍度和相应VIF值的程序
x1=[57.82 58.05 59.15 63.83 65.36 67.26 66.92 67.79 75.65 80.57 79.02 80.52 86.88 95.48 109.71 126.5 138.89 160.56];
x2=[27.05 28.89 33.02 35.23 24.94 32.95 30.35 38.70 47.99 54.18 58.73 59.85 64.57 70.97 81.54 94.01 103.23 119.33];
x3=[14.54 16.83 12.26 12.87 11.65 12.87 10.80 10.93 14.71 17.56 20.32 18.67 25.34 25.06 29.69 43.86 48.90 60.98];
x=[x1;x2;x3]'; %向量合并为矩阵
[m,n]=size(x'); %计算矩阵的行列数
for j=1:m %变量编号
y=x(:,j); %定义因变量
for k=1:m %变量再次编号
x1=x(:,k); %提取一个变量
for l=1:m %变量三次编号
x2=x(:,l); %再次提取一个变量
if x2~=x1&x2~=y&x1~=y %变量选取条件
X=[ones(n,1) x1 x2]; %定义自变量矩阵
[B,Bint,E,Eint,Stats]=regress(y,X); %线性回归
Tol=1-Stats(1); %计算容忍度
VIF=1/Tol; %计算VIF值
end
end
end
Col=[j Tol VIF] %按照变量编号给出计算结果
end
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(C); %提取对角线上的VIF值
Tol=ones(m,1)./VIF; %计算容忍度Tol值
Col=[[j]' Tol VIF]; %提取自变量的偏相关系数
|
|