数学建模 A--回归模型

一、适用范围

  一个因变量有多个自变量导致

二、建模及改进步骤

  1. 首先画出每一个变量与因变量之间的散点图,寻找简单的关系,比如:线性(y=β01x+ε)、二次函数(y=β01x+β2x2ε)、指数增长模型(y=β1(1-e2x)、Michalis-Menten模型(y=f(x,β)=β1x/(β2+x))(该类方法可以取倒数,进行线性化处理)
  2. 用matlab的regress命令进行回归得到回归系数并分析结果
    [b,bint,r,rint,stats] = [Y,X,alpha]%b为回归系数,bint为回归系数的置信区间,r为残差,stats是检验回归的评价标准
    

     当回归系数的置信区间有0时,表明该系数对因变量不是很重要;stats:R2(可确定的概率值,一般大于95%可用)、F值(分布表或者有一个命令可查询)、P值(<α)

  3. 改进时,利用残差分析法,即画出 y-y‘ 与各变量的散点图继续分析
  4. 发现有交互作用的变量增加乘积项、也可逐步到完全二次项式
  5. 若线性拟合欠佳,则需要考虑非线性模型,它的初值设定为线性回归的值
  6. 示性变量的添加---定性上不同处理水平所得到的结果,例如:y = [(β11X2)X1]/[(β22X2)+X1],其中的X2——0、1变量,有则1无则0
  7. D-W检验,时间序列中会用到,因为残差会有自相关性在时间序列中;对残差的自相关性进行检验得到自相关系数,然后各变量变为形如:yt*=yt-ρyt-1
  8. 在面对多变量的情况,可以利用逐步回归分析法去舍去变量
  9. 在回归过程中,当不再修改模型形式的情况下,剔除异常点,去得到更好的精度

三、具体代码及实例

 

%%%逻辑回归
Y = [7613.51 7850.91 8381.86 9142.81 10813.6 8631.43 8124.94 9429.79 10230.81 10163.61 9737.56 8561.06 7781.82 7110.97]';
x = [7666 7704 8148 8571 8679 7704 6471 5870 5289 3815 3335 2927 2758 2591]';
a = size(Y);
a1 = a(1,1);
X = [ones(a1,1),x];
%画散点图
scatter(x,Y,'filled')
%回归分析
%-----------------------------------
%%%regress
[b,bint,r,rint,stats] = regress(Y,X)
%b:回归系数 bint:回归系数的区间估计 r:残差 rint:置信区间 stats:检验统计量
%stats:R方、F值、P值
%-----------------------------------
%%%rstool 交互式界面 完全二项式可利用
%rstool(X,Y,'linear')
%-----------------------------------
%%%残差分析
scatter(x,r,'+')
rcoplot(r,rint)

% 非线性回归
clc,clear
xy0 = [8.55 470 300 10
    3.79 285 80 10
    4.82 470 300 120
    0.02 470 80 120
    2.75 470 80 10
    14.39 100 190 10
    2.54 100 80 65
    4.35 470 190 65
    13.00 100 300 54];
x = xy0(:,[2:4]);
y = xy0(:,1);
%构建虚拟函数
huaxue = @(beta,x)(beta(4)*x(:,2)-x(:,3)/beta(5))./(1+beta(1)*x(:,1)+beta(2)*x(:,2)+beta(3)*x(:,3));
beta0 = [0.1,0.05,0.02,1,2]';
%% nlinfit
[beta,r,j] = nlinfit(x,y,huaxue,beta0)
%计算归回系数的置信区间
betaci = nlparci(beta,r,'jacobian',j)
%y的预测值及置信区间
[yhat,delta] = nlpredci(huaxue,x,beta,r,'jacobian',j)
yy = (beta(4)*x(:,2)-x(:,3)/beta(5))./(1+beta(1)*x(:,1)+beta(2)*x(:,2)+beta(3)*x(:,3));
plot(x,yy-y,'+')

  

你可能感兴趣的:(数学建模 A--回归模型)