1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab 线性回归 参数显著性 matlab做多元线性回归后回归系数的显著性检验

matlab 线性回归 参数显著性 matlab做多元线性回归后回归系数的显著性检验

时间:2020-08-21 03:01:37

相关推荐

matlab 线性回归 参数显著性 matlab做多元线性回归后回归系数的显著性检验

本帖最后由 xiaowu55 于 -3-25 22:30 编辑

flag_go_on=1;

num_of_loop=0;

a = [];%存储剔除的变量下标

xx = 1:k;%存储最原始的变量下标,如果有5个变量x,则存储1,2,3,4,5

while flag_go_on

cij=inv(X'*X);

cii=diag(cij);

F_fenweidian_1=finv(1-F_alpha,1,n-k-1);

ci=sqrt(cii(2:end)*Se_square*F_fenweidian_1/(n-k-1));

format_str='%15.4f';

for ii=1:k-1

format_str=[format_str '%13.4f'];

end

fprintf(['\r第%d次检验:\rcii: ' format_str '%13.4f\r ci: ' ...

format_str '\rβi:' format_str '%13.4f'],num_of_loop+1,cii,ci,beta_mao)

if ~all(abs(beta_mao(2:end))>ci')

flag_go_on=1;

beta_1tok=beta_mao;

beta_1tok(1)=[];

fi_xin=beta_1tok.^2./cii(1:end-1)';

min_fi=min(fi_xin);

beta_index=find(fi_xin==min_fi)+1;

% 这样就可以输出正确的下标了

index_xx = xx(beta_index-1);

fprintf('\r x%d 对y的线性影响最不显著(|β%d|=%0.4f)。 删除x%d, 进行第%d次计算:',...

index_xx,index_xx,abs(beta_all(beta_index)), index_xx,loop_num + 2);

xx(beta_index-1)=[];

% fprintf('\rx%d对y的线性影响最不显著( |β%d|=%0.4f )。删除x%d,进行第%d次计算:',...

% beta_index-1+num_of_loop,beta_index-1+num_of_loop,...

% abs(beta_mao(beta_index)),beta_index-1+num_of_loop,...

% num_of_loop+2)

else

fmt_str2='x%d';

index_of_xi=find(index_of_xi_array);

for i2=1:length(find(index_of_xi))-1

fmt_str2=[fmt_str2 '、x%d'];

end

fprintf(['\r\r经过检验,剩余所有变量:' ...

fmt_str2 '对y的线性影响均显著。检验结束。\r'],index_of_xi)

flag_go_on=0;

end

if flag_go_on

num_of_loop=num_of_loop+1;

k=k-1;

if ~k

fprintf('\r\r警告:通过一一对所有变量做显著性检验,已剔除所有变量!');

break;

end

beta_mao=beta_mao-beta_mao(beta_index)/cii(beta_index)*cij(beta_index,:);

beta_mao(beta_index)=[];

% 这样更改就没问题了

k1 = (beta_index-1)*10+1;

k2 = (beta_index)*10;

k = k1:k2;

format_str0(k)=[];

fprintf(format_str0,beta_mao);

% fmt_str1='';

% for i1=1:beta_index-2

% fmt_str1=[fmt_str1 'β' num2str(i1) ' = %0.4f\r'];

% end

% for i1=beta_index:k+1

% fmt_str1=[fmt_str1 'β' num2str(i1-1+num_of_loop) ' = %0.4f\r'];

% end

% fprintf(['\rβ0 = %0.4f\r' fmt_str1],beta_mao)

X(:,beta_index)=[];

index_of_xi_array(beta_index-1+num_of_loop-1)=0;

xi=X(:,2:end);

x_ba=mean(xi);

lxy=sum((xi-ones(n,1)*x_ba).*((Y-y_ba)*ones(1,k)));

Sr_square=sum(beta_mao(2:end).*lxy);

Se_square=St_square-Sr_square;

end

end

这样更改后显示显著性的系数就没有问题了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。