matlab建立多元线性回归模型并进行显著性检验及预测问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

matlab建立多元线性回归模型并进行显著性检

验及预测问题

例子;

x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]';

X=[ones(16,1) x]; 增加一个常数项 Y=[88 85 88 91 92 93 93 95 96 98 97 96

98 99 100 102]'; [b,bint,r,rint,stats]=regress(Y,X) 得结果:b = bint = stats = 即对应于b的置信区间分别为[,]、[,]; r2=, F=, p= p<, 可知回

归模型 y=+ 成立. 这个是一元的,如果是多元就增加X的行数!

function [beta_hat,Y_hat,stats]=regress(X,Y,alpha)

% 多元线性回归(Y=Xβ+ε)MATLAB代码

%

% 参数说明

% X:自变量矩阵,列为自变量,行为观测值

% Y:应变量矩阵,同X

% alpha:置信度,[0 1]之间的任意数据

% beta_hat:回归系数

% Y_beata:回归目标值,使用Y-Y_hat来观测回归效果

% stats:结构体,具有如下字段

% =[fV,fH],F检验相关参数,检验线性回归方程是否显著

% fV:F分布值,越大越好,线性回归方程

越显著

% fH:0或1,0不显著;1显著(好)

% =[tH,tV,tW],T检验相关参数和区间估计,检验回归系数β是

否与Y有显著线性关系

% tV:T分布值,beta_hat(i)绝对值越大,

表示Xi对Y显著的线性作用

% tH:0或1,0不显著;1显著

% tW:区间估计拒绝域,如果beta(i)在对

应拒绝区间内,那么否认Xi对Y显著的线性作用

% =[T,U,Q,R],回归中使用的重要参数

% T:总离差平方和,且满足T=Q+U

% U:回归离差平方和

% Q:残差平方和

% R∈[0 1]:复相关系数,表征回归离差占总

离差的百分比,越大越好

% 举例说明

% 比如要拟合 y=a+b*log(x1)+c*exp(x2)+d*x1*x2,注意一定要将原来方程

线化

% x1=rand(10,1)*10;

% x2=rand(10,1)*10;

% Y=5+8*log(x1)+*exp(x2)+*x1.*x2+rand(10,1); % 以上随即生成一组测试数据

% X=[ones(10,1) log(x1) exp(x2) x1.*x2]; % 将原来的方表达式化成

Y=Xβ,注意最前面的1不要丢了

% [beta_hat,Y_hat,stats]=mulregress(X,Y,

%

% 注意事项

% 有可能会出现这样的情况,总的线性回归方程式显著的=1),

% 但是所有的回归系数却对Y的线性作用却不显著=0),产生这种现象的原意是

% 回归变量之间具有较强的线性相关,但这种线性相关不能采用刚才使用的模型描述,

% 所以需要重新选择模型

%

C=inv(X'*X);

Y_mean=mean(Y);

% 最小二乘回归分析

beta_hat=C*X'*Y; % 回归系数β

Y_hat=X*beta_hat; % 回归预测

% 离差和参数计算

Q=(Y-Y_hat)'*(Y-Y_hat); % 残差平方和

U=(Y_hat-Y_mean)'*(Y_hat-Y_mean); % 回归离差平方和

T=(Y-Y_mean)'*(Y-Y_mean); % 总离差平方和,且满足T=Q+U

R=sqrt(U/T); % 复相关系数,表征回归离差占总离差的百分比,越大越好[n,p]=size(X); % p变量个数,n样本个数

% 回归显著性检验

fV=(U/(p-1))/(Q/(n-p)); % 服从F分布,F的值越大越好

fH=fV>finv(alpha,p-1,n-p); % H=1,线性回归方程显著(好);H=0,回归不显著

% 回归系数的显著性检验

chi2=sqrt(diag(C)*Q/(n-p)); % 服从χ2(n-p)分布

tV=beta_hat./chi2; % 服从T分布,绝对值越大线性关系显著

tInv=tinv+alpha/2,n-p);

tH=abs(tV)>tInv; % H(i)=1,表示Xi对Y显著的线性作用;H(i)=0,Xi 对Y的线性作用不明显

% 回归系数区间估计

tW=[-chi2,chi2]*tInv; % 接受H0,也就是说如果在beta_hat(i)对应区间中,那么Xi与Y线性作用不明显

stats=struct('fTest',[fH,fV],'tTest',[tH,tV,tW],'TUQR',[T,U,Q,R]) ;

相关文档
最新文档