最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

多元线性回归及显著性检验Matlab程序

来源:动视网 责编:小OO 时间:2025-09-29 05:24:13
文档

多元线性回归及显著性检验Matlab程序

多元线性回归及显著性检验Matlab程序(完美版)一、说明:1、本程序是研究生教材《数理统计》(杨虎、刘琼、钟波编著)例(P133)的Matlab编程解答程序。教材上的例题只做了回归方程显著性分析和一次回归系数显著性分析(剔除x1后没有再检验x2和x3)。2、本程序在以上的基础之上,还分别检验了x2和x3,并且计算精度更高。3、本程序可根据用户的需要,在输入不同的显著性水平α之下得到相应的解答。4、本程序移植性强,对于其他数据,只需要改变excel中的数据即可。5、本程序输出的可读性强,整洁美
推荐度:
导读多元线性回归及显著性检验Matlab程序(完美版)一、说明:1、本程序是研究生教材《数理统计》(杨虎、刘琼、钟波编著)例(P133)的Matlab编程解答程序。教材上的例题只做了回归方程显著性分析和一次回归系数显著性分析(剔除x1后没有再检验x2和x3)。2、本程序在以上的基础之上,还分别检验了x2和x3,并且计算精度更高。3、本程序可根据用户的需要,在输入不同的显著性水平α之下得到相应的解答。4、本程序移植性强,对于其他数据,只需要改变excel中的数据即可。5、本程序输出的可读性强,整洁美
多元线性回归及显著性检验Matlab程序(完美版)

一、说明:

1、本程序是研究生教材《数理统计》(杨虎、刘琼、钟波 编著) 例(P133)的Matlab编程解答程序。教材上的例题只做了回归方程显著性分析和一次回归系数显著性分析(剔除x1后没有再检验x2和x3)。

2、本程序在以上的基础之上,还分别检验了x2和x3,并且计算精度更高。

3、本程序可根据用户的需要,在输入不同的显著性水平α之下得到相应的解答。

4、本程序移植性强,对于其他数据,只需要改变excel中的数据即可。

5、本程序输出的可读性强,整洁美观。

二、数据入下(将数据存入excel表格,文件名为。注意数据是按x1,x2,…,xk,y这样来列来存储。若不是3个变量,则相应增减数据列就行。):

21850
7940
51446
12343
120
31240
317
6539
7837
02355
31660
01849
8450
61451
02151
31451
71256
16048
61645
01552
9040
4632
01747
9044
21639
9639
12551
61341
12747
02461
51237
41549
02045
61642
41748
10448
41436
51336
9851
61354
58100
51144
8663
21355
7850
41045
10540
317
41572
三、完整程序如下:

%----------------------------by ggihhimm----------------------------

%《数理统计》杨虎、刘琼、钟波 编著 例 多元线性回归及显著性检验 完整解答

% 输入需要的显著水平α(默认α=),计算出不同结果(见运行结果)

% 该程序也适合其他维数的数据分析(只需改变excel表格中的数据即可)

%----------------------------by ggihhimm----------------------------

clear;clc;

data=xlsread('','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='';

for i0=1:k+1

    fmt_str0=[fmt_str0 'β' num2str(i0-1) ' = %\\r'];

end

fprintf(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_alpha<1 && F_alpha>0)

    F_alpha=input('您的输入有误,请重新输入一个大于0,小于1的数,α= ');

end

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

c=k/(n-k-1)*F_fenweidian;

if c_flag>c

    fprintf(['\\r--------------------回归方程显著性检验(H0:β1=β2=...=βk=0)' ...

        '--------------------\\r经过计算:拒绝H0,原假设不成立。'])

else

    fprintf(['\\r--------------------回归方程显著性检验(H0:β1=β2=...=βk=0)' ...

        '--------------------\\r经过计算:接受H0,原假设成立。'])

end

%%检验回归系数的显著性(循环检验,直到OK,得出最后结果)

fprintf(['\\r\\r-----------------回归系数显著性检验(分别对β1、β2、...、βk进行)' ...

        '------------------'])

flag_go_on=1;

num_of_loop=0;

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='%';

for ii=1:k-1

    format_str=[format_str '%'];

end

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

    format_str '\\rβi:' format_str '%'],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|=% )。删除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)

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)=[];

    fmt_str1='';

    for i1=2:k+1

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

    end

    fprintf(['\\rβ0 = %\\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

四、运行结果如下(分别为α=和 α=的运行结果):

第1次计算结果:

β0 = 

β1 = 

β2 = 

β3 = 

>>>>>>请输入您要求的显著性水平(0<α<1)α=

-----------------------------------α = 

--------------------回归方程显著性检验(H0:β1=β2=...=βk=0)--------------------

经过计算:拒绝H0,原假设不成立。

-----------------回归系数显著性检验(分别对β1、β2、...、βk进行)------------------

第1次检验:

cii:                               

 ci:                                     

βi:                              

x1对y的线性影响最不显著( |β1|= )。删除x1,进行第2次计算:

β0 = 

β2 = 

β3 = 

第2次检验:

cii:                        

 ci:                              

βi:                       

x2对y的线性影响最不显著( |β2|= )。删除x2,进行第3次计算:

β0 = 

β3 = 

第3次检验:

cii:                 

 ci:                       

βi:                

经过检验,剩余所有变量:x3对y的线性影响均显著。检验结束。

第1次计算结果:

β0 = 

β1 = 

β2 = 

β3 = 

>>>>>>请输入您要求的显著性水平(0<α<1)α=

-----------------------------------α = 

--------------------回归方程显著性检验(H0:β1=β2=...=βk=0)--------------------

经过计算:拒绝H0,原假设不成立。

-----------------回归系数显著性检验(分别对β1、β2、...、βk进行)------------------

第1次检验:

cii:                               

 ci:                                     

βi:                              

经过检验,剩余所有变量:x1、x2、x3对y的线性影响均显著。检验结束。

文档

多元线性回归及显著性检验Matlab程序

多元线性回归及显著性检验Matlab程序(完美版)一、说明:1、本程序是研究生教材《数理统计》(杨虎、刘琼、钟波编著)例(P133)的Matlab编程解答程序。教材上的例题只做了回归方程显著性分析和一次回归系数显著性分析(剔除x1后没有再检验x2和x3)。2、本程序在以上的基础之上,还分别检验了x2和x3,并且计算精度更高。3、本程序可根据用户的需要,在输入不同的显著性水平α之下得到相应的解答。4、本程序移植性强,对于其他数据,只需要改变excel中的数据即可。5、本程序输出的可读性强,整洁美
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top