資源簡介
逐步回歸的基本思想是將變量逐個引入模型,每引入一個解釋變量后都要進行F檢驗,并對已經選入的解釋變量逐個進行t檢驗,當原來引入的解釋變量由于后面解釋變量的引入變得不再顯著時,則將其刪除。以確保每次引入新的變量之前回歸方程中只包含顯著性變量。這是一個反復的過程,直到既沒有顯著的解釋變量選入回歸方程,也沒有不顯著的解釋變量從回歸方程中剔除為止。以保證最后所得到的解釋變量集是最優的。本文件結合實例利用MATLAB實現逐步回歸法

代碼片段和文件信息
clear
clc
data=xlsread(‘week10_eg9_data‘);
[nm]=size(data);
y=data(:m);
z=(y.^0.07-1)/0.07;
X=cell(m-11);
for?i=1:m-1
????X{i}=data(:i);
end
aE=0.05;
aD=0.05;
%--------------------------------------------------------------------------
fprintf(‘Statistics?for?Entry:Step?1\n‘);
%--------------------------------------------------------------------------
p=2;
b_2=cell(41);
s_2=ones(41);
F=ones(41);
Prob=ones(41);
for?j=1:m-1
????x=[ones(n1)X{j}];
????[b_2{j}bintrrintstats]=regress(zx0.05);
????zHat=x*b_2{j};
????aver_z=mean(z);
????sigma_2=stats(4);
????C=inv(x‘*x);
????s_2(j)=sqrt(sigma_2*C(22));
????F(j)=(b_2{j}(2)/s_2(j))^2;
????Prob(j)=1-fcdf(F(j)1n-2);
end
fprintf(‘Variable|F??????|Prob>F????\n‘);
V={‘???X1???‘‘???X2???‘‘???X3???‘‘???X4???‘};
for?i=1:4
????fprintf(‘%s|%-7.4f|%-10.4f‘V{i}F(i)Prob(i));
????fprintf(‘\n‘);
end
f=1;
for?k=1:3
????if?F(k+1)>F(f)&&Prob(k+1) ????????f=k+1;
????end
end
if?Prob(f) ???u=1;
else
????u=0;
end
if?u==1
????fprintf(‘添加X%d\n‘f);
else
????fprintf(‘不添加\n‘);
end
%--------------------------------------------------------------------------
x=[ones(n1)X{f}];
[b_fbintrrintstats]=regress(zx0.05);
PE=b_f;
C=inv(x‘*x);
SE=ones(21);
F_f=ones(21);
Prob_f=ones(21);
sigma_2=stats(4);
for?l=1:2
????SE(l)=sqrt(sigma_2*C(ll));
????F_f(l)=(b_f(l)/SE(l))^2;
????Prob_f(l)=1-fcdf(F_f(l)1n-2);
end
fprintf(‘回歸模型參數:\n‘)
fprintf(‘?Variable?|Parameter?Estimate??|Standard?Error??|F????????|Prob>F??\n‘);
fprintf(‘?INTERCEP?|%-20.4f|%-16.4f|%-9.4f|%-7.4f\n‘b_f(1)SE(1)F_f(1)Prob_f(1));
fprintf(‘????X4????|%-20.4f|%-16.4f|%-9.4f|%-7.4f\n‘b_f(2)SE(2)F_f(2)Prob_f(2));
if?Prob_f(2)>aD
????fprintf(‘出錯,aE應小于或等于aD‘);
end
%--------------------------------------------------------------------------
fprintf(‘Statistics?for?Entry:Step?2\n‘);
%--------------------------------------------------------------------------
p=3;
b_3=cell(31);
s_3=ones(31);
F=ones(31);
Prob=ones(31);
for?j=1:m-2
????x=[ones(n1)X{j}X{4}];
????[b_3{j}bintrrintstats]=regress(zx0.05);
????zHat=x*b_3{j};
????aver_z=mean(z);
????sigma_2=stats(4);
????C=inv(x‘*x);
????s_3(j)=sqrt(sigma_2*C(22));
????F(j)=(b_3{j}(2)/s_3(j))^2;
????Prob(j)=1-fcdf(F(j)1n-3);
end
fprintf(‘Variable|F??????|Prob>F????\n‘);
V={‘???X1???‘‘???X2???‘‘???X3???‘};
for?i=1:3
????fprintf(‘%s|%-7.4f|%-10.4f‘V{i}F(i)Prob(i));
????fprintf(‘\n‘);
end
f=1;
for?k=1:2
????if?F(k+1)>F(f)&&Prob(k+1) ????????f=k+1;
????end
end
if?Prob(f) ???u=1;
else
????u=0;
end
if?u==1
????fprintf(‘添加X%d\n‘f);
else
????fprintf(‘不添加\n‘);
end
%--------------------------------------------------------------------------
x=[ones(n1)X{f}X{4}];
[b_fbintrrintstats]=regress(zx0.05);
PE=b_f;
C=inv(x‘*x);
SE=ones(31);
F_f=ones(31);
Prob_f=ones(31);
sigma_2=stats(4);
for?l=1:3
????SE(l)=sqrt(sigma_2*C(ll));
????F_f(l)=(b_f(l)/SE(l))^
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????10709??2017-11-07?11:49??week10_eg9_data.xlsx
?????文件????????8466??2017-11-21?13:04??week11_eg10_1.m
- 上一篇:主動懸架系統模糊PID控制器的仿真英文
- 下一篇:熵權法求權重MATLAB源碼
評論
共有 條評論