多元线性回归及显著性检验Matlab程序(完美版)一、说明:1、本程序是研究生教材《数理统计》(杨虎、刘琼、钟波编著)例4.4.1(P133)的Matlab编程解答程序。教材上的例题只做了回归方程显著性分析和一次回归系数显著性分析(剔除x1后没有再检验x2和x3)。2、本程序在以上的基础之上,还分别检验了x2和x3,并且计算精度更高。3、本程序可根据用户的需要,在输入不同的显著性水平α之下得到相应的解答。4、本程序移植性强,对于其他数据,只需要改变excel中的数据即可。5、本程序输出的可读性强,整洁美观。二、数据入下(将数据存入excel表格,文件名为jc_p133_example.xls。注意数据是按x1,x2,…,xk,y这样来列来存储。若不是3个变量,则相应增减数据列就行。):218504.330279403.6485514464.483123435.5468120645.497312403.1125317645.118265393.875978374.67023554.9536316605.006018495.270184505.3772614515.4849021514.596314515.6645712566.0795160483.2194616455.8076015524.730690404.680546323.2172017472.610490443.7174216393.894696392.7066125515.6314613415.8152127475.1302024615.391512374.4533415494.6569020454.5212616424.865417485.3566104484.6098414362.3815513363.874698514.5919613545.1588581005.4373511443.99686634.397213554.062278502.2905410454.7115105404.531317645.3637415726.0771三、完整程序如下:%----------------------------byggihhimm----------------------------%《数理统计》杨虎、刘琼、钟波编著例4.4.1多元线性回归及显著性检验完整解答%输入需要的显著水平α(默认α=0.02),计算出不同结果(见运行结果)%该程序也适合其他维数的数据分析(只需改变excel表格中的数据即可)%----------------------------byggihhimm----------------------------clear;clc;data=xlsread('jc_p133_example.xls','sheet1');xi=data(:,1:end-1);[n,k]=size(data);k=k-1;index_of_xi_array=ones(1,k);X=[ones(n,1)xi];Y=data(:,end);fprintf('第1次计算结果:\r')beta_mao=((X'*X)\X'*Y)';fmt_str0='';fori0=1:k+1fmt_str0=[fmt_str0'β'num2str(i0-1)'=%0.4f\r'];endfprintf(fmt_str0,beta_mao)fprintf('\r')%%检验回归方程的显著性x_ba=mean(xi);y_ba=mean(Y);St_square=sum(Y.^2)-n*y_ba^2;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;c_flag=Sr_square/Se_square;F_alpha=input('请输入您要求的显著性水平(0α1)α=');while~(isscalar(F_alpha)&&F_alpha1&&F_alpha0)F_alpha=input('您的输入有误,请重新输入一个大于0,小于1的数,α=');endF_fenweidian=finv(1-F_alpha,k,n-k-1);c=k/(n-k-1)*F_fenweidian;ifc_flagcfprintf(['\r--------------------回归方程显著性检验(H0:β1=β2=...=βk=0)'...'--------------------\r经过计算:拒绝H0,原假设不成立。'])elsefprintf(['\r--------------------回归方程显著性检验(H0:β1=β2=...=βk=0)'...'--------------------\r经过计算:接受H0,原假设成立。'])end%%检验回归系数的显著性(循环检验,直到OK,得出最后结果)fprintf(['\r\r-----------------回归系数显著性检验(分别对β1、β2、...、βk进行)'...'------------------'])flag_go_on=1;num_of_loop=0;whileflag_go_oncij=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';forii=1:k-1format_str=[format_str'%13.4f'];endfprintf(['\r第%d次检验:\rcii:'format_str'%13.4f\rci:'...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;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,...beta_index-1+num_of_loop+1)elsefmt_str2='x%d';index_of_xi=find(index_of_xi_array);fori2=1:length(find(index_of_xi))-1fmt_str2=[fmt_str2'、x%d'];endfprintf(['\r\r经过检验,剩余所有变量:'...fmt_str2'对y的线性影响均显著。检验结束。\r'],index_of_xi)flag_go_on=0;endifflag_go_onnum_of_loop=num_of_loop+1;k=k-1;if~kfprintf('\r\r警告:通过一一对所有变量做显著性检验,已剔除所有变量!');break;endbeta_mao=beta_mao-beta_mao(beta_index)/cii(beta_index)*cij(beta_index,:);beta_mao(beta_index)=[];fmt_str1='';fori1=2:k+1fmt_str1=[fmt_str1'β'num2str(i1-1+num_of_loop)'=%0.4f\r'];endfprintf(['\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;endend四、运行结果如下(分别为α=0.01和α=0.02的运行结果):第1次计算结果:β0=0.7344β1=0.1585β2=0.1063β3=0.0357请输入您要求的显著性水平(0α1)α=0.01-----------------------------------α=0.0100-------------------------------------------------------回归方程显著性检验(H0:β1=β2=...=βk=0)--------------------经过计算:拒绝H0,原假设不成立。-----------------回归系数显著性检验(分别对β1、β2、...、βk进行)------------------第1次检验:cii:1.13550.00550.00210.0002ci:0.16220.10060.0284βi:0.73440.15850.10630.0357x1对y的线性影响最不显著(|β1|=0.1585)。删除x1,进行第2次计算:β0=2.5302β2=0.0231β3=0.0362第2次检验:cii:0.42740.00060.0002ci:0.05690.0302βi:2.53020.02310.0362x2对y的线性影响最不显著(|β2|=0.0231)。删除x2,进行第3次计算:β0=2.6615β3=0.0391第3次检验:cii:0.40790.0002ci:0.0294βi:2.66150.0391经过检验,剩余所有变量:x3对y的线性影响均显著。检验结束。第1次计算结果:β0=0.7344β1=0.1585β2=0.1063β3=0.0357请输入您要求的显著性水平(0α1)α=0.02-----------------------------------α=0.0200-------------------------------------------------------回归方程显著性检验(H0:β1=β2=...=βk=0)--------------------经过计算:拒绝H0,原假设不成立。-----------------回归系数显著性检验(分别对β1、β2、...、βk进行)------------------第1次检验:cii:1.13550.00550.00210.0002ci:0.14550.09020.0255βi:0.73440.15850.10630.0357经过检验,剩余所有变量:x1、x2、x3对y的线性影响均显著。检验结束。