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 = -16.0730 -33.7071 1.5612 0.7194 0.6047 0.8340 stats = 0.9282 180.9531 0.0000 即对应于b的置信区间分别为[-33.7017,1.5612]、[0.6047,0.834]; r2=0.9282, F=180.9531, p=0.0000 p<0.05, 可知回归模型 y=-16.073+0.7194x 成立. 这个是一元的,如果是多元就增加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:结构体,具有如下字段
% stats.fTest=[fV,fH],F检验相关参数,检验线性回归方程是否显著 % fV:F分布值,越大越好,线性回归方程越显著 % fH:0或1,0不显著;1显著(好)
% stats.tTest=[tH,tV,tW],T检验相关参数和区间估计,检验回归系数β是否与Y有显著线性关系
% tV:T分布值,beta_hat(i)绝对值越大,表示Xi对Y显著的线性作用
% tH:0或1,0不显著;1显著
% tW:区间估计拒绝域,如果beta(i)在对应拒绝区间内,那么否认Xi对Y显著的线性作用
% stats.TUQR=[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;