回归分析 订阅
在统计学中,回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为简单回归分析和多重回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。 [1] 展开全文
在统计学中,回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为简单回归分析和多重回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。 [1]
信息
应用领域
统计学
外文名
regression analysis
中文名
回归分析
反向编译定义
在大数据分析中,回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。方法有各种各样的回归技术用于预测。这些技术主要有三个度量(自变量的个数,因变量的类型以及回归线的形状),如下图。1. Linear Regression线性回归它是最为人熟知的建模技术之一。线性回归通常是人们在学习预测模型时首选的技术之一。在这种技术中,因变量是连续的,自变量可以是连续的也可以是离散的,回归线的性质是线性的。线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系。多元线性回归可表示为Y=a+b1*X +b2*X2+ e,其中a表示截距,b表示直线的斜率,e是误差项。多元线性回归可以根据给定的预测变量(s)来预测目标变量的值。2.Logistic Regression逻辑回归逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,应该使用逻辑回归。这里,Y的值为0或1,它可以用下方程表示。odds= p/ (1-p) = probability of event occurrence / probability of not event occurrenceln(odds) = ln(p/(1-p))logit(p) = ln(p/(1-p)) =b0+b1X1+b2X2+b3X3....+bkXk上述式子中,p表述具有某个特征的概率。你应该会问这样一个问题:“为什么要在公式中使用对数log呢?”。因为在这里使用的是的二项分布(因变量),需要选择一个对于这个分布最佳的连结函数。它就是Logit函数。在上述方程中,通过观测样本的极大似然估计值来选择参数,而不是最小化平方和误差(如在普通回归使用的)。3. Polynomial Regression多项式回归对于一个回归方程,如果自变量的指数大于1,那么它就是多项式回归方程。如下方程所示:y=a+b*x^2在这种回归技术中,最佳拟合线不是直线。而是一个用于拟合数据点的曲线。4. Stepwise Regression逐步回归在处理多个自变量时,可以使用这种形式的回归。在这种技术中,自变量的选择是在一个自动的过程中完成的,其中包括非人为操作。这一壮举是通过观察统计的值,如R-square,t-stats和AIC指标,来识别重要的变量。逐步回归通过同时添加/删除基于指定标准的协变量来拟合模型。下面列出了一些最常用的逐步回归方法:标准逐步回归法做两件事情。即增加和删除每个步骤所需的预测。向前选择法从模型中最显著的预测开始,然后为每一步添加变量。向后剔除法与模型的所有预测同时开始,然后在每一步消除最小显著性的变量。这种建模技术的目的是使用最少的预测变量数来最大化预测能力。这也是处理高维数据集的方法之一。25. Ridge Regression岭回归当数据之间存在多重共线性(自变量高度相关)时,就需要使用岭回归分析。在存在多重共线性时,尽管最小二乘法(OLS)测得的估计值不存在偏差,它们的方差也会很大,从而使得观测值与真实值相差甚远。岭回归通过给回归估计值添加一个偏差值,来降低标准误差。在线性等式中,预测误差可以划分为 2 个分量,一个是偏差造成的,一个是方差造成的。预测误差可能会由这两者或两者中的任何一个造成。在这里,将讨论由方差所造成的误差。岭回归通过收缩参数λ(lambda)解决多重共线性问题。请看下面的等式:L2=argmin||y=xβ||+λ||β||在这个公式中,有两个组成部分。第一个是最小二乘项,另一个是β-平方的λ倍,其中β是相关系数向量,与收缩参数一起添加到最小二乘项中以得到一个非常低的方差。6. Lasso Regression套索回归它类似于岭回归,Lasso (Least Absolute Shrinkage and Selection Operator)也会就回归系数向量给出惩罚值项。此外,它能够减少变化程度并提高线性回归模型的精度。看看下面的公式:L1=agrmin||y-xβ||+λ||β||Lasso 回归与Ridge回归有一点不同,它使用的惩罚函数是L1范数,而不是L2范数。这导致惩罚(或等于约束估计的绝对值之和)值使一些参数估计结果等于零。使用惩罚值越大,进一步估计会使得缩小值越趋近于零。这将导致要从给定的n个变量中选择变量。如果预测的一组变量是高度相关的,Lasso 会选出其中一个变量并且将其它的收缩为零。7.ElasticNet回归ElasticNet是Lasso和Ridge回归技术的混合体。它使用L1来训练并且L2优先作为正则化矩阵。当有多个相关的特征时,ElasticNet是很有用的。Lasso 会随机挑选他们其中的一个,而ElasticNet则会选择两个。Lasso和Ridge之间的实际的优点是,它允许ElasticNet继承循环状态下Ridge的一些稳定性。数据探索是构建预测模型的必然组成部分。在选择合适的模型时,比如识别变量的关系和影响时,它应该是首选的一步。比较适合于不同模型的优点,可以分析不同的指标参数,如统计意义的参数,R-square,Adjusted R-square,AIC,BIC以及误差项,另一个是Mallows’ Cp准则。这个主要是通过将模型与所有可能的子模型进行对比(或谨慎选择他们),检查在你的模型中可能出现的偏差。交叉验证是评估预测模型最好的方法。在这里,将你的数据集分成两份(一份做训练和一份做验证)。使用观测值和预测值之间的一个简单均方差来衡量你的预测精度。如果你的数据集是多个混合变量,那么你就不应该选择自动模型选择方法,因为你应该不想在同一时间把所有变量放在同一个模型中。它也将取决于你的目的。可能会出现这样的情况,一个不太强大的模型与具有高度统计学意义的模型相比,更易于实现。回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多重共线性情况下运行良好。3假定条件与内容在数据分析中一般要对数据进行一些条件假定:方差齐性线性关系效应累加变量无测量误差变量服从多元正态分布观察独立模型完整(没有包含不该进入的变量、也没有漏掉应该进入的变量)误差项独立且服从(0,1)正态分布。现实数据常常不能完全符合上述假定。因此,统计学家研究出许多的回归模型来解决线性回归模型假定过程的约束。回归分析的主要内容为:①从一组数据出发,确定某些变量之间的定量关系式,即建立数学模型并估计其中的未知参数。估计参数的常用方法是最小二乘法。②对这些关系式的可信程度进行检验。③在许多自变量共同影响着一个因变量的关系中,判断哪个(或哪些)自变量的影响是显著的,哪些自变量的影响是不显著的,将影响显著的自变量加入模型中,而剔除影响不显著的变量,通常用逐步回归、向前回归和向后回归等方法。④利用所求的关系式对某一生产过程进行预测或控制。回归分析的应用是非常广泛的,统计软件包使各种回归方法计算十分方便。在回归分析中,把变量分为两类。一类是因变量,它们通常是实际问题中所关心的一类指标,通常用Y表示;而影响因变量取值的的另一类变量称为自变量,用X来表示。回归分析研究的主要问题是:(1)确定Y与X间的定量关系表达式,这种表达式称为回归方程;(2)对求得的回归方程的可信度进行检验;(3)判断自变量X对因变量Y有无影响;(4)利用所求得的回归方程进行预测和控制。4应用相关分析研究的是现象之间是否相关、相关的方向和密切程度,一般不区别自变量或因变量。而回归分析则要分析现象之间相关的具体形式,确定其因果关系,并用数学模型来表现其具体关系。比如说,从相关分析中可以得知“质量”和“用户满意度”变量密切相关,但是这两个变量之间到底是哪个变量受哪个变量的影响,影响程度如何,则需要通过回归分析方法来确定。1一般来说,回归分析是通过规定因变量和自变量来确定变量之间的因果关系,建立回归模型,并根据实测数据来求解模型的各个参数,然后评价回归模型是否能够很好的拟合实测数据;如果能够很好的拟合,则可以根据自变量作进一步预测。例如,如果要研究质量和用户满意度之间的因果关系,从实践意义上讲,产品质量会影响用户的满意情况,因此设用户满意度为因变量,记为Y;质量为自变量,记为X。通常可以建立下面的线性关系: Y=A+BX+§式中:A和B为待定参数,A为回归直线的截距;B为回归直线的斜率,表示X变化一个单位时,Y的平均变化情况;§为依赖于用户满意度的随机误差项。对于经验回归方程: y=0.857+0.836x回归直线在y轴上的截距为0.857、斜率0.836,即质量每提高一分,用户满意度平均上升0.836分;或者说质量每提高1分对用户满意度的贡献是0.836分。上面所示的例子是简单的一个自变量的线性回归问题,在数据分析的时候,也可以将此推广到多个自变量的多元回归,具体的回归过程和意义请参考相关的统计学书籍。此外,在SPSS的结果输出里,还可以汇报R2,F检验值和T检验值。R2又称为方程的确定性系数(coefficient of determination),表示方程中变量X对Y的解释程度。R2取值在0到1之间,越接近1,表明方程中X对Y的解释能力越强。通常将R2乘以100%来表示回归方程解释Y变化的百分比。F检验是通过方差分析表输出的,通过显著性水平(significance level)检验回归方程的线性关系是否显著。一般来说,显著性水平在0.05以上,均有意义。当F检验通过时,意味着方程中至少有一个回归系数是显著的,但是并不一定所有的回归系数都是显著的,这样就需要通过T检验来验证回归系数的显著性。同样地,T检验可以通过显著性水平或查表来确定。在上面所示的例子中,各参数的意义如下表所示。线性回归方程检验示例 SIM手机用户满意度与相关变量线性回归分析以SIM手机的用户满意度与相关变量的线性回归分析为例,来进一步说明线性回归的应用。从实践意义讲上,手机的用户满意度应该与产品的质量、价格和形象有关,因此以“用户满意度”为因变量,“质量”、“形象”和“价格”为自变量,作线性回归分析。利用SPSS软件的回归分析,得到回归方程如下:用户满意度=0.008×形象+0.645×质量+0.221×价格对于SIM手机来说,质量对其用户满意度的贡献比较大,质量每提高1分,用户满意度将提高0.645分;其次是价格,用户对价格的评价每提高1分,其满意度将提高0.221分;而形象对产品用户满意度的贡献相对较小,形象每提高1分,用户满意度仅提高0.008分。方程各检验指标及含义如下:从方程的检验指标来看,“形象”对整个回归方程的贡献不大,应予以删除。所以重新做“用户满意度”与“质量”、“价格”的回归方程如下:满意度=0.645×质量+0.221×价格用户对价格的评价每提高1分,其满意度将提高0.221分(在本示例中,因为“形象”对方程几乎没有贡献,所以得到的方程与前面的回归方程系数差不多)。方程各检验指标及含义如下:步骤确定变量明确预测的具体目标,也就确定了因变量。如预测具体目标是下一年度的销售量,那么销售量Y就是因变量。通过市场调查和查阅资料,寻找与预测目标的相关影响因素,即自变量,并从中选出主要的影响因素。建立预测模型依据自变量和因变量的历史统计资料进行计算,在此基础上建立回归分析方程,即回归分析预测模型。进行相关分析回归分析是对具有因果关系的影响因素(自变量)和预测对象(因变量)所进行的数理统计分析处理。只有当自变量与因变量确实存在某种关系时,建立的回归方程才有意义。因此,作为自变量的因素与作为因变量的预测对象是否有关,相关程度如何,以及判断这种相关程度的把握性多大,就成为进行回归分析必须要解决的问题。进行相关分析,一般要求出相关关系,以相关系数的大小来判断自变量和因变量的相关的程度。计算预测误差回归预测模型是否可用于实际预测,取决于对回归预测模型的检验和对预测误差的计算。回归方程只有通过各种检验,且预测误差较小,才能将回归方程作为预测模型进行预测。确定预测值利用回归预测模型计算预测值,并对预测值进行综合分析,确定最后的预测值。注意问题应用回归预测法时应首先确定变量之间是否存在相关关系。如果变量之间不存在相关关系,对这些变量应用回归预测法就会得出错误的结果。正确应用回归分析预测时应注意:①用定性分析判断现象之间的依存关系;②避免回归预测的任意外推;③应用合适的数据资料;
收起全文
精华内容
下载资源
问答
  • 回归分析

    2019-11-21 14:40:39
    用R语言实现简单回归分析1、一元线性回归分析:2、多元线性回归分析 回归分析是确定两个或两个以上变量之间相互关系的一种统计方法,回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照自变量的多少,...

    回归分析是确定两个或两个以上变量之间相互关系的一种统计方法,回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照自变量的多少,可分为简单回归分析和多重回归分析 ;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析;其中只包括一个自变量和一个因变量的回归分析,可以近似的用一条直线表述两个变量之间关系的方法称为一元线性回归分析;如果回归分析中包括两个或两个以上的自变量,且自变量之间存在线性相关,则称为多重线性回归分析。

    1、一元线性回归分析:

    公式:y=ax+by=ax+b
    其中y称为因变量,x称为自变量,a为斜率,b为截距。
    R语言的实现方法:
    线性回归模型:lm(y~x)
    检验模型的准确性可用函数summary();
    Summary函数会显示函数的t检验或z检验结果。
    实例:下表为广告投入与销售额的关系,当投入100万广告时的销售额是多少?
    广告投入 销售额
    10 124
    14 135
    16 147
    20 180
    24 187
    R语言实现如下:

    ad<-c(10,14,16,20,24)
    sales<-c(124,135,147,180,187)
    #通过散点图查看变量间关系
    a<-cbind(ad,sales)
    plot(a)
    #两个变量间呈明显的线性关系
    linemodel<-lm(sales~ad)
    summary(linemodel)
    #预测广告投入100时的销售额
    new<-data.frame(ad=100)
    predict(linemodel,new,level=“0.95”)
    summary函数结果

    模型为sales=70.6575+4.9966*ad,P值小于0.05,模型具有显著性效果,回归效果较好。

    多重线性回归分析,即多个自变量与一个因变量之前的关系的算法,其计算过程基本与一元回归分析的方法类似,总体的求解过程也是先通过描点,观察自变量与因变量之间的关系后再确定回归模型,不过多元回归分析中,需要注意保证单一变量后再去画散点图,通过散点图再去推测每个自变量与因变量的关系,确定为线性关系的再用lm函数去设计算法模型。

    2、多元线性回归分析

    与一元线性回归类似,多元线性回归也是用来统计回归问题,只不过统计的自变量不再是一个,而是多个自变量,基本公式类似于:
    y=a0x0+a1x1+a2x2+a3x3+..y=a_0 x_0+a_1 x_1+a_2 x_2+a_3 x_3+⋯..
    其中a为常数,函数问题就转化为最基本的求解问题,我们把x_0设定为0,则a_0 x_0就为常数项,对于这个函数,由于有多个自变量,解决这种问题一般来说,只能单个变量逐渐求解,
    我们通过R语言内置的一个数据集mtcars来进行演示:
    函数模型与一元线性回归函数一致:lm()函数
    Mtcars数据集主要是与汽车相关的一些数据,主要参数有每加仑里程(mpg),气缸排量(disp),马力(hp),汽车重量(wt)等其他参数。
    本例主要用来分析不同型号汽车的每加仑里程(mpg)与气缸排量(disp)、马力(hp)、汽车重量(wt)等不同参数之间的关系,代码如下:

    head(mtcars)
    #查看mtcars的前5行数据
    input<-mtcars[,c(“mpg”,“disp”,“hp”,“wt”)]
    #把需要的数据转入input中
    model<-lm(mpg~disp+hp+wt,data=input)
    #建立函数模型
    summary(model)
    #显著性分析
    显著性检验

    P值只有8.65e-11,且R^2 调整后为0.8083,回归效果比较显著,因此回归方程为:
    y=37.1055050.000937x10.031157x23.800891x3y=37.105505-0.000937x_1-0.031157x_2-3.800891x_3
    在已知气缸排量(disp)、马力(hp)、汽车重量(wt)的情况下,可以推测汽车的每加仑里程(mpg)。

    展开全文
  • 介绍MATLAB统计分析中回归分析的内容,包括简单线性回归、多项式回归、非线性回归和稳健回归等。
  • 用R进行多元线性回归分析建模

    万次阅读 多人点赞 2016-05-31 22:20:37
    概念:多元回归分析预测法,是指通过对两个或两个以上的自变量与一个因变量的相关分析,建立预测模型进行预测的方法。当自变量与因变量之间存在线性关系时,称为多元线性回归分析

    概念:多元回归分析预测法,是指通过对两个或两个以上的自变量与一个因变量的相关分析,建立预测模型进行预测的方法。当自变量与因变量之间存在线性关系时,称为多元线性回归分析。

     

    下面我就举几个例子来说明一下

     

    例一:谋杀率与哪些因素有关

    变量选择

    states<-as.data.frame(state.x77[,c('Murder','Population','Illiteracy','Income','Frost')])
    cor(states)#查看变量相关系数
                   Murder Population Illiteracy     Income      Frost
    Murder      1.0000000  0.3436428  0.7029752 -0.2300776 -0.5388834
    Population  0.3436428  1.0000000  0.1076224  0.2082276 -0.3321525
    Illiteracy  0.7029752  0.1076224  1.0000000 -0.4370752 -0.6719470
    Income     -0.2300776  0.2082276 -0.4370752  1.0000000  0.2262822
    Frost      -0.5388834 -0.3321525 -0.6719470  0.2262822  1.0000000

    我们可以明显的看出谋杀率与人口,文盲率相关性较大

    将它们的关系可视化

    library(car)
    scatterplotMatrix(states,spread=FALSE)

    还可以这么看

    fit<-lm(Murder~Population+Illiteracy+Income+Frost,data = states)
    summary(fit)
    
    Call:
    lm(formula = Murder ~ Population + Illiteracy + Income + Frost, 
        data = states)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -4.7960 -1.6495 -0.0811  1.4815  7.6210 
    
    Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 1.235e+00  3.866e+00   0.319   0.7510    
    Population  2.237e-04  9.052e-05   2.471   0.0173 *  
    Illiteracy  4.143e+00  8.744e-01   4.738 2.19e-05 ***
    Income      6.442e-05  6.837e-04   0.094   0.9253    
    Frost       5.813e-04  1.005e-02   0.058   0.9541    
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 2.535 on 45 degrees of freedom
    Multiple R-squared:  0.567,	Adjusted R-squared:  0.5285 
    F-statistic: 14.73 on 4 and 45 DF,  p-value: 9.133e-08

    还可以这么看

    #install.packages('leaps')
    library(leaps)
    leaps<-regsubsets(Murder~Population+Illiteracy+Income+Frost,data = states,nbest = 4)
    plot(leaps,scale = 'adjr2')


     

    最大值0.55是只包含人口,文盲率这两个变量和截距的。

     

    还可以这样,比较标准回归系数的大小

     

    zstates<-as.data.frame(scale(states))#scale()标准化
    zfit<-lm(Murder~Population+Illiteracy+Income+Frost,data = zstates)
    coef(zfit)
     (Intercept)    Population    Illiteracy        Income         Frost 
    -2.054026e-16  2.705095e-01  6.840496e-01  1.072372e-02  8.185407e-03 

     

     

     

    通过这几种方法,我们都可以明显的看出谋杀率与人口,文盲率相关性较大,与其它因素相关性较小。

    回归诊断

    > confint(fit)
                        2.5 %       97.5 %
    (Intercept) -6.552191e+00 9.0213182149
    Population   4.136397e-05 0.0004059867
    Illiteracy   2.381799e+00 5.9038743192
    Income      -1.312611e-03 0.0014414600
    Frost       -1.966781e-02 0.0208304170

    标记异常值

    qqPlot(fit,labels = row.names(states),id.method = 'identify',simulate = T)

    图如下,点一下异常值然后点finish就可以了

    查看它的实际值11.5与拟合值3.878958,这条数据显然是异常的,可以抛弃

    > states['Nevada',]
           Murder Population Illiteracy Income Frost
    Nevada   11.5        590        0.5   5149   188
    > fitted(fit)['Nevada']
      Nevada 
    3.878958 
    > outlierTest(fit)#或直接这么检测离群点
           rstudent unadjusted p-value Bonferonni p
    Nevada 3.542929         0.00095088     0.047544
    

    car包有多个函数,可以判断误差的独立性,线性,同方差性

    library(car)
    durbinWatsonTest(fit)
    crPlots(fit)
    ncvTest(fit)
    spreadLevelPlot(fit)

     

    综合检验

     

    #install.packages('gvlma')
    library(gvlma)
    gvmodel<-gvlma(fit);summary(gvmodel)

    检验多重共线性

    根号下vif>2则表明有多重共线性

    > sqrt(vif(fit))
    Population Illiteracy     Income      Frost 
      1.115922   1.471682   1.160096   1.443103

    都小于2所以不存在多重共线性

     

     

     

     

    例二:女性身高与体重的关系

    attach(women)
    plot(height,weight)

    通过图我们可以发现,用曲线拟合要比直线效果更好

    那就试试呗

     

    fit<-lm(weight~height+I(height^2))#含平方项
    summary(fit)
    
    Call:
    lm(formula = weight ~ height + I(height^2))
    
    Residuals:
         Min       1Q   Median       3Q      Max 
    -0.50941 -0.29611 -0.00941  0.28615  0.59706 
    
    Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 261.87818   25.19677  10.393 2.36e-07 ***
    height       -7.34832    0.77769  -9.449 6.58e-07 ***
    I(height^2)   0.08306    0.00598  13.891 9.32e-09 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 0.3841 on 12 degrees of freedom
    Multiple R-squared:  0.9995,    Adjusted R-squared:  0.9994 
    F-statistic: 1.139e+04 on 2 and 12 DF,  p-value: < 2.2e-16 

    效果是很不错的,可以得出模型为

    把拟合曲线加上看看

    lines(height,fitted(fit))


    非常不错吧

    还可以用car包的scatterplot()函数

    library(car)
    scatterplot(weight~height,spread=FALSE,pch=19)#19实心圆,spread=FALSE删除了残差正负均方根在平滑曲线上
    展开的非对称信息,听着就不像人话,你可以改成TRUE看看到底是什么,我反正不明白。
    

     

     

     

    例三:含交互项

    <strong>attach(mtcars)
    fit<-lm(mpg~hp+wt+hp:wt)
    summary(fit)
    Call:
    lm(formula = mpg ~ hp + wt + hp:wt)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -3.0632 -1.6491 -0.7362  1.4211  4.5513 
    
    Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 49.80842    3.60516  13.816 5.01e-14 ***
    hp          -0.12010    0.02470  -4.863 4.04e-05 ***
    wt          -8.21662    1.26971  -6.471 5.20e-07 ***
    hp:wt        0.02785    0.00742   3.753 0.000811 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 2.153 on 28 degrees of freedom
    Multiple R-squared:  0.8848,	Adjusted R-squared:  0.8724 
    F-statistic: 71.66 on 3 and 28 DF,  p-value: 2.981e-13</strong>

    其中的hp:wt就是交互项,表示我们假设hp马力与wt重量有相关关系,通过全部的三个星可以看出响应/因变量mpg(每加仑英里)与预测/自变量都相关,也就是说mpg(每加仑英里)与汽车马力/重量都相关,且mpg与马力的关系会根据车重的不同而不同。


     

     

    展开全文
  • 回归分析详解及matlab实现

    万次阅读 多人点赞 2018-06-09 15:18:53
    回归分析方法 想要资源的请关注公众号: 在一起的足球自动获取资源和数十种经典算法,帮助各位提升自己之前留的是自己的qq号 感觉好多资源都不能让大家自行选择本着开源的精神,在公众号挂了百度云链接,这样晚上就...

      回归分析方法

     

    想要资源的请关注公众号: 在一起的足球


    自动获取资源和数十种经典算法,帮助各位提升自己


    之前留的是自己的qq号 感觉好多资源都不能让大家自行选择

    本着开源的精神,在公众号挂了百度云链接,这样晚上就不用被吵醒了


    当人们对研究对象的内在特性和各因素间的关系有比较充分的认识时,一般用机理分析方法建立数学模型。如果由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型,那么通常的办法是搜集大量数据,基于对数据的统计分析去建立模型。本章讨论其中用途非常广泛的一类模型——统计回归模型。回归模型常用来解决预测、控制、生产工艺优化等问题。

        变量之间的关系可以分为两类:一类叫确定性关系,也叫函数关系,其特征是:一个变量随着其它变量的确定而确定。另一类关系叫相关关系,变量之间的关系很难用一种精确的方法表示出来。例如,通常人的年龄越大血压越高,但人的年龄和血压之间没有确定的数量关系,人的年龄和血压之间的关系就是相关关系。回归分析就是处理变量之间的相关关系的一种数学方法。其解决问题的大致方法、步骤如下:

        (1)收集一组包含因变量和自变量的数据;

        (2)选定因变量和自变量之间的模型,即一个数学式子,利用数据按照最小二乘准则计算模型中的系数;

        (3)利用统计分析方法对不同的模型进行比较,找出与数据拟合得最好的模型;

        (4)判断得到的模型是否适合于这组数据;

        (5)利用模型对因变量作出预测或解释。

    应用统计分析特别是多元统计分析方法一般都要处理大量数据,工作量非常大,所以在计算机普及以前,这些方法大都是停留在理论研究上。运用一般计算语言编程也要占用大量时间,而对于经济管理及社会学等对高级编程语言了解不深的人来说要应用这些统计方法更是不可能。MATLAB等软件的开发和普及大大减少了对计算机编程的要求,使数据分析方法的广泛应用成为可能。MATLAB统计工具箱几乎包括了数理统计方面主要的概念、理论、方法和算法。运用MATLAB统计工具箱,我们可以十分方便地在计算机上进行计算,从而进一步加深理解,同时,其强大的图形功能使得概念、过程和结果可以直观地展现在我们面前。本章内容通常先介绍有关回归分析的数学原理,主要说明建模过程中要做的工作及理由,如模型的假设检验、参数估计等,为了把主要精力集中在应用上,我们略去详细而繁杂的理论。在此基础上再介绍在建模过程中如何有效地使用MATLAB软件。没有学过这部分数学知识的读者可以不深究其数学原理,只要知道回归分析的目的,按照相应方法通过软件显示的图形或计算所得结果表示什么意思,那么,仍然可以学到用回归模型解决实际问题的基本方法。包括:一元线性回归、多元线性回归、非线性回归、逐步回归等方法以及如何利用MATLAB软件建立初步的数学模型,如何透过输出结果对模型进行分析和改进,回归模型的应用等。

     

    8.1      一元线性回归分析

    回归模型可分为线性回归模型和非线性回归模型。非线性回归模型是回归函数关于未知参数具有非线性结构的回归模型。某些非线性回归模型可以化为线性回归模型处理;如果知道函数形式只是要确定其中的参数则是拟合问题,可以使用MATLAB软件的curvefit命令或nlinfit命令拟合得到参数的估计并进行统计分析。本节主要考察线性回归模型。

      8.1.1  一元线性回归模型的建立及其MATLAB实现

             

    其中是待定系数,对于不同的是相互独立的随机变量。

    假设对于的n个值,得到的n个相应的值,确定的方法是根据最小二乘准则,要使

    取最小值。利用极值必要条件令,求的估计值,从而得到回归直线。只不过这个过程可以由软件通过直线拟合完成,而无须进行繁杂的运算。

    (1)参数的区间估计

    由于我们所计算出的仍然是随机变量,因此要对取值的区间进行估计,如果区间估计值是一个较短的区间表示模型精度较高。

    (2)对误差方差的估计

    设为回归函数的值,为测量值,残差平方和

    剩余方差

    (3)线性相关性的检验

    由于我们采用的是一元线性回归,因此,如果模型可用的话,应该具有较好的线性关系。反映模型是否具有良好线性关系可通过相关系数R的值及F值观察(后面的例子说明)。

    (4)一元线性回归的MATLAB实现

       MATLAB工具箱中用命令regress实现,其用法是:

       b=regress(y,x)
    
       [b ,bint , r ,rint , s]=regress(y , x , alpha)

    输入y(因变量,列向量)、x(1与自变量组成的矩阵,见下例),alpha是显著性水平(缺省时默认0.05)。

    输出,注意:b中元素顺序与拟合命令polyfit的输出不同,bint是的置信区间,r是残差(列向量),rint是残差的置信区间,s包含4个统计量:决定系数(相关系数为R);F值;F(1,n-2)分布大于F值的概率p;剩余方差的值(MATLAB7.0以后版本)。也可由程序sum(r.^2)/(n-2)计算。

    其意义和用法如下:的值越接近1,变量的线性相关性越强,说明模型有效;如果满足,则认为变量与显著地有线性关系,其中的值可查F分布表,或直接用MATLAB命令finv(1-,1, n-2)计算得到;如果表示线性模型可用。这三个值可以相互印证。的值主要用来比较模型是否有改进,其值越小说明模型精度越高。

    8.1.2身高与腿长

    例1  测得16名成年女子身高与腿长所得数据如下:

                      表8-1  16名女子身高(cm)腿长(cm)数据

    88  85   88  91  92   93   93   95   96   98  97   96   98   99   100  102

    143 145  146  147 149  150  153  154  155  156  157  158  159  160  162  164

       

    首先利用命令plot(x,y,'r*')画出散点图,从图形可以看出,这些点大致分布在一条直线的左右,因此,可以考虑一元线性回归。可编制程序如下:

    y=[143 145 146  147  149 150  153  154 155  156  157 158  159  160 162  164];
    
    x=[88 85  88   91    92  93   93   95  96   98  97  96   98   99  100  102];
    
    n=16;
    
    X=[ones(n,1),x'];
    
    [b,bint,r,rint,s]=regress(y',X,0.05);
    
    b,bint,s,
    
    rcoplot(r,rint)

    运行后得到

    b = 31.7713    1.2903

    bint = 12.3196   51.2229

         1.0846   1.4960

         

    s = 0.9282 180.9531    0.0000    3.1277

    =0.9282,由finv(0.95,1,14)= 4.6001,即= 4.6001<F=180.9531,p<0.0001,

    可以通过残差图发现,第二个数据为奇异数据,去掉该数据后运行后得到

    b = 17.6549     1.4363

    bint = -0.5986   35.9083

       1.2445    1.6281

         

    s = 0.9527 261.6389    0.0000   1.9313

    =0.9527,由finv(0.95,1,13)= 4.6672,即= 4.6672<F=261.6389,p<0.0001,说明模型有效且有改进,因此我们得到身高与腿长的关系。

    当然,也可以利用直线拟合得到同一方程。只不过不能得到参数置信区间和对模型进行检验。拟合程序如下:

    y=[143 145 146  147 149  150  153  154  155 156  157  158 159  160  162 164];
    
    x=[88 85  88   91  92   93  93   95   96  98  97  96  98   99   100 102];
    
    a=polyfit(x,y,1)
    
    temp=polyval(a,x);                      
    
    plot(x,y,'r*',x,temp)

    注意:函数相同,但输出一次函数参数顺序与回归分析(升幂排列)中不同。另一个差别是拟合不能发现奇异数据。

     

    8.2      多元线性回归分析

    8.2.1  多元线性回归模型的建模步骤及其MATLAB实现

        如果根据经验和有关知识认为与因变量有关联的自变量不止一个,那么就应该考虑用最小二乘准则建立多元线性回归模型。

        设影响因变量的主要因素(自变量)有m个,记,假设它们有如下的线性关系式:

     ,  

    如果对变量与自变量 同时作n次观察(n>m)得n组观察值,采用最小二乘估计求得回归方程

    .

    建立回归模型是一个相当复杂的过程,概括起来主要有以下几个方面工作(1)根据研究目的收集数据和预分析;(2)根据散点图是否具有线性关系建立基本回归模型;(3)模型的精细分析;(4)模型的确认与应用等。

    收集数据的一个经验准则是收集的数据量(样本容量)至少应为可能的自变量数目的6~10倍。在建模过程中首先要根据所研究问题的目的设置因变量,然后再选取与该因变量有统计关系的一些变量作为自变量。我们当然希望选择与问题关系密切的变量,同时这些变量之间相关性不太强,这可以在得到初步的模型后利用MATLAB软件进行相关性检验。下面通过一个案例探讨MATLAB软件在回归分析建模各个环节中如何应用。

    多元线性回归的MATLAB实现

        仍然用命令regress(y , X),只是要注意矩阵X的形式,将通过如下例子说明其用法。

     

    8.2.2  某类研究学者的年薪

    1.      问题

    例2 工薪阶层关心年薪与哪些因素有关,以此可制定出它们自己的奋斗目标。

    某科学基金会希望估计从事某研究的学者的年薪Y与他们的研究成果(论文、著作等)的质量指标X1、从事研究工作的时间X2、能成功获得资助的指标X3之间的关系,为此按一定的实验设计方法调查了24位研究学者,得到如下数据(i为学者序号):

    表8-2  从事某种研究的学者的相关指标数据

    i

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    3.5

    5.3

    5.1

    5.8

    4.2

    6.0

    6.8

    5.5

    3.1

    7.2

    4.5

    4.9

    9

    20

    18

    33

    31

    13

    25

    30

    5

    47

    25

    11

    6.1

    6.4

    7.4

    6.7

    7.5

    5.9

    6.0

    4.0

    5.8

    8.3

    5.0

    6.4

    33.2

    40.3

    38.7

    46.8

    41.4

    37.5

    39.0

    40.7

    30.1

    52.9

    38.2

    31.8

    i

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    8.0

    6.5

    6.6

    3.7

    6.2

    7.0

    4.0

    4.5

    5.9

    5.6

    4.8

    3.9

    23

    35

    39

    21

    7

    40

    35

    23

    33

    27

    34

    15

    7.6

    7.0

    5.0

    4.4

    5.5

    7.0

    6.0

    3.5

    4.9

    4.3

    8.0

    5.8

    43.3

    44.1

    42.5

    33.6

    34.2

    48.0

    38.0

    35.9

    40.4

    36.8

    45.2

    35.1

    试建立Y与之间关系的数学模型,并得出有关结论和作统计分析。

    2.  作出因变量Y与各自变量的样本散点图

    作散点图的目的主要是观察因变量Y与各自变量间是否有比较好的线性关系,以便选择恰当的数学模型形式。下图分别为年薪Y与成果质量指标、研究工作时间、获得资助的指标之间的散点图,

    subplot(1,3,1),plot(x1,Y,'g*'),
    
    subplot(1,3,2),plot(x2,Y,'k+'),
    
    subplot(1,3,3),plot(x3,Y,'ro'),

    从图可以看出这些点大致分布在一条直线旁边,因此,有比较好的线性关系,可以采用线性回归。

       Y与x1的散点图        Y与x2的散点图       Y与x3的散点图

    图8.1   因变量Y与各自变量的样本散点图

    3.  利用MATLAB统计工具箱得到初步的回归方程

    设回归方程为:.

    建立m-文件输入如下程序数据:

    x1=[3.5 5.3 5.1 5.8 4.2 6.0 6.8 5.5 3.1 7.24.5 4.9 8.0 6.5 6.5 3.7 6.2 7.0 4.0 4.5 5.9 5.6 4.8 3.9];
    
    x2=[9 20 18 33 31 13 25 30 5 47 25 11 23 3539 21 7 40 35 23 33 27 34 15];
    
    x3=[6.1 6.4 7.4 6.7 7.5 5.9 6.0 4.0 5.8 8.35.0 6.4 7.6 7.0 5.0 4.0 5.5 7.0 6.0 3.5 4.9 4.3 8.0 5.0];
    
    Y=[33.2 40.3 38.7 46.8 41.4 37.5 39.0 40.730.1 52.9 38.2 31.8 43.3 44.1 42.5 33.6 34.2 48.0 38.0 35.9 40.4 36.8 45.235.1];
    
    n=24; m=3;
    
    X=[ones(n,1),x1',x2',x3'];
    
    [b,bint,r,rint,s]=regress(Y',X,0.05);
    
    b,bint,r,rint,s,

    运行后即得到结果如表8-3所示。

     

    表8-3 对初步回归模型的计算结果

    回归系数

    回归系数的估计值

    回归系数的置信区间

    18.0157

    [13.9052  22.1262]

    1.0817

    [0.3900  1.7733]

    0.3212

    [0.2440  0.3984]

    1.2835

    [0.6691  1.8979]

    =0.9106    F=67.9195      p<0.0001      = 3.0719

    计算结果包括回归系数b=()=(18.0157, 1.0817 , 0.3212, 1.2835),且置信区间均不包含零点,;残差及其置信区间;统计变量stats ,它包含四个检验统计量:相关系数的平方,假设检验统计量F,与F对应的概率p,的值(7.0以前版本也可由程序sum(r.^2)/(n-m-1)计算)。因此我们得到初步的回归方程为:

    由结果对模型的判断:

    回归系数置信区间不包含零点表示模型较好,残差在零点附近也表示模型较好,接着就是利用检验统计量R,F,p 的值判断该模型是否可用。

    (1)相关系数R的评价:一般地,相关系数绝对值在0.8~1范围内,可判断回归自变量与因变量具有较强的线性相关性。本例R的绝对值为0.9542,表明线性相关性较强。

    (2)F检验法:当,即认为因变量与自变量之间显著地有线性相关关系;否则认为因变量与自变量之间线性相关关系不显著。本例 F=67.919>= 3.10 (查F分布表或输入命令finv(0.95,3,20)计算)。

    (3)p值检验:若(为预定显著水平),则说明因变量与自变量之间显著地有线性相关关系。本例输出结果,p<0.0001,显然满足P<=0.05。

    以上三种统计推断方法推断的结果是一致的,说明因变量与自变量之间显著地有线性相关关系,所得线性回归模型可用。当然越小越好,这主要在模型改进时作为参考。

     

    4.  模型的精细分析和改进

    (1) 残差分析

    残差,是各观测值与回归方程所对应得到的拟合值之差,实际上,它是线性回归模型中误差的估计值。即有零均值和常值方差,利用残差的这种特性反过来考察原模型的合理性就是残差分析的基本思想。利用MATLAB进行残差分析则是通过残差图或时序残差图。残差图是指以残差为纵坐标,以其他指定的量为横坐标的散点图。主要包括:(1)横坐标为观测时间或观测值序号;(2)横坐标为某个自变量的观测值;(3)横坐标为因变量的拟合值。通过观察残差图,可以对奇异点进行分析,还可以对误差的等方差性以及对回归函数中是否包含其他自变量、自变量的高次项及交叉项等问题给出直观的检验。

    以观测值序号为横坐标,残差为纵坐标所得到的散点图称为时序残差图,画出时序残差图的MATLAB语句为rcoplot(r,rint)(图8.2)。可以清楚看到残差大都分布在零的附近,因此还是比较好的 ,不过第4、12、19这三个样本点的残差偏离原点较远,如果作为奇异点看待,去掉后重新拟合,则得回归模型为:

    且回归系数的置信区间更小均不包含原点,统计变量stats包含的三个检验统计量:相关系数的平方,假设检验统计量F,概率P ,分别为:0.9533 ; 115.5586  ; 0.0000 ,比较可知R,F均增加模型得到改进。

                        

                                     图8.2   时序残差图

    (2)  变量间的交互作用讨论

    变量间的交互作用包括:不同自变量之间的交互作用以及同一变量的自相关性。

    不同自变量之间的交互作用:有时,在实验中不仅单因素对指标有影响,而且因素间还会联合起来对指标产生影响,常称这种联合作用为交互作用。处理两个因素间交互作用的一个简单办法是加入这两个自变量的乘积项。本文案例如果加入交互项则为:

    用表8.2的数据,利用MATLAB统计工具箱得到回归系数分别为:27.0727 ,1.1147,-0.0215 ,-0.1843 ,0.0033 ,-0.0054 ,0.0511 。但它们的置信区间均包含原点,其他指标也不理想,因此,本例中其交互作用并不显著,该模型不如前面两个模型好。

    自相关性的诊断和处理:若数据是以时间为序的,称为时间序列数据。在时间序列数据中,同一变量的顺序观测值之间出现的相关现象称为自相关。一旦数据中存在这种自相关序列,如果仍采用普通的回归模型直接处理,将产生不良后果,使预测失去意义。自相关的诊断主要有图示检验法、相关系数法和DW检验法。图示检验法是通过绘制残差散点图观察,如果散布点大部分点落在第Ⅰ,Ⅲ象限,表明存在着正的序列相关;如果大部分点落在第Ⅱ,Ⅳ象限,表明存在着负的序列相关。对DW检验法可以利用MATLAB软件编程计算统计量:

    然后查阅DW检验上下界表,以决定模型的自相关状态。

    当一个回归模型存在序列相关性时,首先要查明序列相关产生的原因。如果是回归模型选用不当,则应改用适当的回归模型;如果是缺少重要的自变量,则应增加自变量;如果以上方法都不能消除序列相关性,则需要采用差分法、迭代法等处理,更详细内容参见相关概率统计参考文献。

     

    8.2.3  逐步回归方法建模

       

    逐步回归就是一种从众多自变量中有效地选择重要变量的方法。逐步回归的基本思路是,先确定一个包含若干自变量的初始集合,然后每次从集合外的变量中引入一个对因变量影响最大的,再对集合中的变量进行检验,从变得不显著的变量中移出一个影响最小的,依此进行,直到不能引入和移出为止。引入和移出都以给定的显著性水平为标准。

    MATLAB统计工具箱中逐步回归的命令是stepwise,它提供了一个人机交互式画面,通过此工具可以自由地选择变量进行统计分析。该命令的用法是:

    stepwise(X , Y , inmodel , alpha)

    其中X是自变量数据,排成矩阵(m为自变量个数,n为每个变量的数据量),Y是因变量数据,排成向量,inmodel 是自变量初始集合的指标,缺省时为全部自变量,alpha为显著水平,缺省时为0.05。

    运行stepwise命令时产生图形窗口:Stepwise Plot , Stepwise Table , Stepwise History.当鼠标移到图形某个区域时,鼠标点击后产生交互作用。Stepwise Plot窗口中的虚线表示回归系数的置信区间包含零点,即该回归系数与零无显著差异,一般应将该变量移去;实线则表明该回归系数与零有显著差异,应保留在模型中(蓝色表示该变量已进入模型,红色表示该变量已移出模型)。引入和移出变量还可参考Stepwise History窗口中剩余标准差RMSE是否在下降,剩余标准差RMSE最小的就是最好的模型。Stepwise Table窗口中列出了一个统计表,包括回归系数及其置信区间,以及模型的统计量剩余标准差RMSE、相关系数R-square、F值、与F对应的概率。

    关于本节案例2,如果引入新的自变量 . 也可以采用逐步回归法解决,源程序如下:

    A=[3.5 5.3 5.1 5.8 4.2 6.0 6.8 5.5 3.1 7.24.5 4.9 8.0 6.5 6.5 3.7 6.2 7.0 4.0 4.5 5.9 5.6 4.8 3.9;9 20 18 33 31 13 25 305 47 25 11 23 35 39 21 7 40 35 23 33 27 34 15;6.1 6.4 7.4 6.7 7.5 5.9 6.0 4.05.8 8.3 5.0 6.4 7.6 7.0 5.0 4.0 5.5 7.0 6.0 3.5 4.9 4.3 8.0 5.0]';
    
    Y=[33.2 40.3 38.7 46.8 41.4 37.5 39.0 40.730.1 52.9 38.2 31.8 43.3 44.1 42.5 33.6 34.2 48.0 38.0 35.9 40.4 36.8 45.235.1]';
    
    x1=A(:,1);
    
    x2=A(:,2);
    
    x3=A(:,3);
    
    x4=x1.*x2;
    
    x5=x1.*x3;
    
    x6=x2.*x3;
    
    X=[A,x4,x5,x6];
    
    stepwise(X,Y)

    运行并按上述步骤操作后可以得到本文前面线性回归相同的结论,即不含交互项的模型是最好的。在此只介绍操作过程,其交互界面,只要在MATLAB软件上一试便知。

    8.2.4        多项式回归

     

    多项式回归仍然属于多元线性回归,可以是一元多项式回归或多元多项式回归。

    一元多项式回归模型的一般形式为

    用MATLAB求解一元多项式回归,除了使用命令polyfit(x,y,m)外,还可以使用如下命令:

       

     Polytool(x,y,m,alpha)

    输入x,y,m同命令polyfit,alpha是显著性水平(默认0.05),则输出一个交互式画面,画面显示回归曲线及其置信区间,通过图左下方的export下拉式菜单,还可以输出回归系数估计值及其置信区间、残差等。

    下面通过一个用多元多项式回归的实例说明什么时候用多项式回归以及如何通过MATLAB软件进行处理。

    例3 为了了解人口平均预期寿命与人均国内生产总值和体质得分的关系,我们查阅了国家统计局资料,北京体育大学出版社出版的《2000国民体质监测报告》,表8-4是我国大陆31个省市的有关数据。我们希望通过这几组数据考察它们是否具有良好的相关关系,并通过它们的关系从人均国内生产总值(可以看作反映生活水平的一个指标)、体质得分预测其寿命可能的变化范围。体质是指人体的质量,是遗传性和获得性的基础上表现出来的人体形态结构,生理机能和心理因素综合的、相对稳定的特征。体质是人的生命活动和工作能力的物质基础。它在形成、发展和消亡过程中,具有明显的个体差异和阶段性。中国体育科学学会体质研究会研究表明,体质应包括身体形态发育水平、生理功能水平、身体素质和运动能力发展水平、心理发育水平和适应能力等五个方面。目前,体质的综合评价主要是形态、机能和身体素质三类指标按一定的权重进行换算而得。

     

      表8-4 31个省市人口预期寿命与人均国内生产总值和体质得分数据

    序号

    预期寿命

    体质得分

    人均产值

    序号

    预期寿命

    体质得分

    人均产值

    序号

    预期寿命

    体质得分

    人均产值

    1

    71.54

    66.165

    12857

    12

    65.49

    56.775

    8744

    23

    69.87

    64.305

    17717

    2

    73.92

    71.25

    24495

    13

    68.95

    66.01

    11494

    24

    67.41

    60.485

    15205

    3

    73.27

    70.135

    24250

    14

    73.34

    67.97

    20461

    25

    78.14

    70.29

    70622

    4

    71.20

    65.125

    10060

    15

    65.96

    62.9

    5382

    26

    76.10

    69.345

    47319

    5

    73.91

    69.99

    29931

    16

    72.37

    66.1

    19070

    27

    74.91

    68.415

    40643

    6

    72.54

    65.765

    18243

    17

    70.07

    64.51

    10935

    28

    72.91

    66.495

    11781

    7

    70.66

    67.29

    10763

    18

    72.55

    68.385

    22007

    29

    70.17

    65.765

    10658

    8

    71.85

    67.71

    9907

    19

    71.65

    66.205

    13594

    30

    66.03

    63.28

    11587

    9

    71.08

    66.525

    13255

    20

    71.73,

    65.77

    11474

    31

    64.37

    62.84

    9725

    10

    71.29,

    67.13

    9088

    21

    73.10

    67.065

    14335

     

     

     

     

    11

    74.70

    69 .505

    33772

    22

    67.47

    63.605

    7898

     

     

     

     

     

    模型的建立和求解  作表8-4数据的散点图如图8.3

    图8.3  预期寿命与人均国内生产总值和体质得分的散点图

        从图8.3可以看出人口预期寿命与体质得分有较好的线性关系,与人均国内生产总值的关系难以确定,我们建立二次函数的回归模型。

    一般的多元二项式回归模型可表为

       

    MATLAB统计工具箱提供了一个很方便的多元二项式回归命令:

    Rstool(x,y, 'model',alpha)

    输入x为自变量(n×m矩阵),y为因变量(n维向量),alpha为显著水平,model从下列4个模型中选择一个:

    linear(只包含线性项)

    purequadratic(包含线性项和纯二次项)

    interaction(包含线性项和纯交互项)

    quadratic(包含线性项和完全二次项)

    输出一个交互式画面,对例3,编程如下:

    y=[71.54 73.92 73.27 71.20 73.91 72.5470.66 71.85 71.08 71.29,74.70 65.49 68.95 73.34 65.96 72.37 70.07 72.55 71.6571.73,73.10 67.47 69.87 67.41 78.14 76.10 74.91 72.91 70.17 66.03 64.37];
    
    x1=[12857 24495 24250 10060 29931 1824310763 9907 13255 9088 33772 8744 11494 20461 5382 19070 10935 22007 13594 1147414335 7898 17717 15205 70622 47319 40643 11781 10658 11587 9725];
    
    x2=[66.165 71.25 70.135 65.125 69.99 65.76567.29 67.71 66.525 67.13,69.505 56.775 66.01 67.97 62.9 66.1 64.51 68.38566.205 65.77,67.065 63.605 64.305 60.485 70.29 69.345 68.415 66.495 65.76563.28 62.84];
    
    x=[x1',x2'];
    
    rstool(x,y','purequadratic')

    得到一个如图8.4的交互式画面

     

         图8.4  预期寿命与人均国内生产总值和体质得分的一个交互式画面

    左边一幅图形是固定时的曲线及其置信区间,右边一幅图形是固定时的曲线及其置信区间。移动鼠标可改变,的值,同时图左边给出的预测值及其置信区间。如输入=128757,=66.165,则=70.6948,其置信区间70.6948±1.1079。

    图的左下方有两个下拉式菜单,上面的菜单Export用于输出数据(包括:回归系数parameters,残差residuals,剩余标准差RMSE等), 在MATLAB工作空间中得到有关数据。通过下面的菜单在上述4个模型中变更选择,最后确定RMSE值较小的模型。例3则是包含线性项和完全二次项(quadratic)的模型最佳,即

    剩余标准差为1.2622,因此,所得回归模型为:

    利用此模型我们可以根据国内生产总值及体质得分,预测寿命。

    8.3  非线性回归分析

     

    8.3.1  非线性最小二乘拟合

    线性最小二乘拟合与线性回归中的“线性”并非指与的关系,而是指是系数或的线性函数。拟合如的函数仍然是最小二乘拟合;如果拟合如的曲线,对是非线性的,但取对数后对系数是线性的,属于可化为线性回归的类型。下面讨论非线性拟合的情形。

    非线性最小二乘拟合问题的提法是:已知模型

    其中对是非线性的,为了估计参数,收集n个独立观测数据

    。记拟合误差,求使误差的平方和

    最小。

    作为无约束非线性规划的特例,解非线性最小二乘拟合可用MATLAB优化工具箱命令lsqnonlin和lsqcurvefit。

    8.3.2  非线性回归模型

    非线性回归模型记作

    其中对回归系数是非线性的,。求得回归系数的最小二乘估计。

    MATLAB统计工具箱中非线性回归的命令是:

    [b,R,J]=nlinfit(x,y, 'model',bo)

    输入x是自变量数据矩阵,每列一个向量;y是因变量数据向量;model是模型的函数名(M文件),形式为,b为待估系数;b0是回归系数的初值。输出b是的估计值,R是残差,J是用于估计预测误差的Jacobi矩阵。这个命令是依据高斯—牛顿法求解的。

    将上面的输出作为命令

    Bi=nlparci(b,R,J)

    的输入,得到的bi是回归系数的置信区间。用命令

    nlintool(x,y, 'model',b)

    可以得到一个交互式画面,其内容和用法与多项式回归的Polytool类似。

    例4  酶促反应速度与底物浓度

        酶促反应动力学简称酶动力学,主要研究酶促反应速度与底物(即反应物)浓度以及其它因素的关系。在底物浓度很低时酶促反应是一级反应;当底物浓度处于中间范围时,是混合级反应;当底物浓度增加时,向零级反应过渡。某生化系学生为了研究嘌呤霉素在某项酶促反应中对反应速度与底物浓度之间关系的影响,设计了两个实验,一个实验中所使用的酶是经过嘌呤霉素处理的,而另一个实验所用的酶是未经嘌呤霉素处理的。所得实验数据见表8-5。试根据问题的背景和这些数据建立一个合适的数学模型,来反映这项酶促反应的速度与底物浓度以及嘌呤霉素处理与否之间的关系。

     

    表8-5  嘌呤霉素实验中的反应速度与底物浓度数据

    底物浓度(ppm)

    0.02

    0.06

    0.11

    0.22

    0.56

    1.10

     

    反应

    速度

    未处理

    67

    51

    84

    86

    98

    115

    131

    124

    144

    158

    160

    /

    处理

    76

    47

    97

    107

    123

    139

    159

    152

    191

    201

    207

    200

     

    分析与假设

    记酶促反应的速度为,底物浓度为,二者之间的关系写作,其中β为参数(β可为一向量)。由酶促反应的基本性质可知,当底物浓度很低时酶促反应是一级反应,此时反应速度大致与底物浓度成正比;而当底物浓度很大,渐近饱和时,反应速度将趋于一个固定值(即零级反应)。下面的两个简单模型具有这种性质:

    Michaelis-Menten 模型

    指数增长模型

    非线性模型的求解

    首先作出给出的经过嘌呤霉素处理和未经处理的反应速度与底物浓度的散点图,可以看出,上述两个模型与实际数据得到的散点图是大致符合的。

    我们将主要对前一模型即Michaelis-Menten模型进行详细的分析。首先对经过嘌呤酶素处理的实验数据进行分析,在此基础上,再来讨论是否有更一般的模型来统一刻画处理前后的数据,进而揭示其中的联系。

    我们用非线性回归的方法直接估计模型的参数,模型的求解可利用MATLAB统计工具箱中的命令进行,使用格式为:

    [beta,R,J]=nlinfit(x,y,'model',beta0)

    其中输入x为自变量数据矩阵,每列一个变量;y为因变量数据向量;model为模型的M文件名,M函数形式为y=f (beta,x),beta为待估计参数;beta0为给定的参数初值。输出beta为参数估计值,R为残差,J为用于估计预测误差的Jacobi矩阵。参数beta的置信区间用命令

    nlparci(beta,R,J)得到。

    首先建立函数M文件huaxue.m,非线性模型参数估计的源程序如下:

    x=[0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.220.56 0.56 1.10 1.10];
    
    y=[76 47 97 107 123 139 159 152 191 201 207200];
    
    beta0=[195.8027 0.04841];
    
    [beta,R,J]=nlinfit(x,y,'huaxue',beta0);
    
    betaci=nlparci(beta,R,J);
    
    beta,betaci
    
    yy=beta(1)*x./(beta(2)+x);
    
    plot(x,y,'o',x,yy,'m+'),pause
    
    nlintool(x,y,'huaxue',beta)

    得到的数值结果见表8-6。

    Nlintool用于给出一个交互式画面,可以得到因变量y的预测值和预测区间,左下方的Export可向工作区传送剩余标准差等数据。

     

    表8-6 模型参数的估计结果

    参    数

    参 数 估 计 值

    置 信 区 间

    212.6818

    [197.2028      228.1608]

    0.0641

    [0.0457         0.0826]

     

    从上面的结果可以知道,对经过嘌呤霉素处理的实验数据,在用Michaelis-Menten模型进行回归分析时,最终反应速度为=212.6818,反应的半速度点(达到最终反应速度的一半时的底物浓度x值)恰为=0.06412。

    混合反应模型

    由酶动力学知识我们知道,酶促反应的浓度依赖于底物浓度,并且可以假定,嘌呤霉素的处理会影响最终反应速度参数,而基本上不影响半速度参数.表8-5的数据也印证了这种看法。Michaelis-Menten模型的形式可以分别描述经过嘌呤霉素处理和未处理的反应速度与底物浓度的关系(两个模型的参数会不同),为了在同一个模型中考虑嘌呤霉素处理的影响,我们采用对未经嘌呤霉素处理的模型附加增量的方法,考察如下的混合反应模型:

    其中自变量为底物浓度, 为一示性变量(0-1变量), 用来表示是否经嘌呤霉素处理, =1表示经过处理, =0表示未经处理;参数是未处理的反应的最终反应速度,是经处理后最终反应速度的增长值, 是未经处理的反应的半速度点, 是经处理后反应的半速度点的增长值。

    混合模型的求解和分析

        为了给出初始迭代值,从实验数据我们注意到,未经处理的反应速度的最大实验值为160,经过处理的最大实验值为207,于是可取参数初值;又从数据可大致估计未经处理的半速度点约为0.05,经过处理的半速度点约为0.06,我们取。

    建立函数M文件model.m

    functionyhat=model(beta0,x)
    
    a=beta0(1);
    
    b=beta0(2);
    
    c=beta0(3);
    
    d=beta0(4);
    
    x1=x(:,1);
    
    x2=x(:,2);
    
    yhat=((a+c*x2).*x1)./(b+d*x2+x1);

    建立M文件meicu.m

    )

    x=[0.020.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 1.10 1.10 0.02 0.02 0.06 0.06 0.110.11 0.22 0.22 0.56 0.56 1.10 1.10; 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 00 0]';
    
    y=[76 4797 107 123 139 159 152 191 201 207 200 67 51 84 86 98 115 131 124 144 158 160170]';
    
    beta0=[1700.05 60 0.01];
    
    [beta,R,J]=nlinfit(x,y,'model',beta0);
    
    betaci=nlparci(beta,R,J);
    
    beta,betaci
    
    a=beta(1);
    
    b=beta(2);
    
    c=beta(3);
    
    d=beta(4);
    
    x1=x(:,1);
    
    x2=x(:,2);
    
    yy=((a+c*x2).*x1)./(b+d*x2+x1);
    
    %yy=((beta(1,:)+beta(3,:)*x(2)).*x(1))./(beta(2,:)+beta(4,:)*x(2)+x(1));
    
    plot(x1,y,'o',x1,yy,'+'),pause
    
    nlintool(x,y,'model',beta

    运行后即得如下表8-7结果

     

    表8-7  混合模型参数的估计结果

    参数

    参数估计值

    置信区间

    165.3259

    [152.1100     178.5418]

    0.0524

    [0.0347       0.0700]

    47.3574

    [28.510         66.6637]

    0.0118

    [-0.0126         0.0361]

    从表8-7可以发现,的置信区间包含零点,这表明参数对因变量y的影响并不显著,即:嘌呤霉素的作用不影响半速度参数。因此,可以考虑下面的模型:

    可以采用类似方法计算和分析,所得结果统计指标差不多,不过显然最后一个模型具有更为简洁的形式。

    展开全文
  • R语言 逐步回归分析 AIC

    万次阅读 多人点赞 2017-09-19 09:38:40
    逐步回归分析是以AIC信息统计量为准则,通过选择最小的AIC信息统计量,来达到删除或增加变量的目的

    关注微信公共号:小程在线

     

    关注CSDN博客:程志伟的博客

    逐步回归分析是以AIC信息统计量为准则,通过选择最小的AIC信息统计量,来达到删除或增加变量的目的。

    R语言中用于逐步回归分析的函数 step()    drop1()     add1()

    #1.载入数据 首先对数据进行多元线性回归分析

    复制代码
    tdata<-data.frame(
      x1=c( 7, 1,11,11, 7,11, 3, 1, 2,21, 1,11,10),
      x2=c(26,29,56,31,52,55,71,31,54,47,40,66,68),
      x3=c( 6,15, 8, 8, 6, 9,17,22,18, 4,23, 9, 8),
      x4=c(60,52,20,47,33,22, 6,44,22,26,34,12,12),
      Y =c(78.5,74.3,104.3,87.6,95.9,109.2,102.7,72.5,
           93.1,115.9,83.8,113.3,109.4)
    )
    tlm<-lm(Y~x1+x2+x3+x4,data=tdata)
    summary(tlm)
    复制代码

    多元线性回归结果分析

    通过观察,回归方程的系数都没有通过显著性检验

    #2.逐步回归分析

    tstep<-step(tlm)
    summary(tstep)

    结果分析:当用x1 x2 x3 x4作为回归方程的系数时,AIC的值为26.94

                  去掉x3 回归方程的AIC值为24.974;去掉x4 回归方程的AIC值为25.011……

                  由于去x3可以使得AIC达到最小值,因此R会自动去掉x3;

    去掉x3之后 AIC的值都增加 逐步回归分析终止  得到当前最优的回归方程

    回归系数的显著性水平有所提高 但是x2 x4的显著性水平仍然不理想

    #3.逐步回归分析的优化

    drop1(tstep)

    结果分析

    如果去掉x4 AIC的值从24.974增加到25.420 是三个变量中增加最小的

     

    #4.进一步进行多元回归分析

    tlm<-lm(Y~x1+x2,data=tdata)
    summary(tlm)

    结果分析

    所有的检验均为显著

    因此所得回归方程为y=52.57735+ 1.46831x1+ 0.66225x2.

    展开全文
  • SPSS篇—回归分析

    万次阅读 多人点赞 2019-08-20 09:29:06
    今天给大家分享一下如何用SPSS Statistics来进行回归分析,我们通过一个实例来具体了解一下整个分析的过程以及结果的解读。 上图中就是本次需要进行回归分析的数据,之前有跟大家说过,SPSS Statistics的界面跟...
  • 相关分析是回归分析的基础和前提,回归分析是相关分析的深入和继续。回归分析就是对拟合问题作的统计分析
  • 文章结构文章结构回归分析是通过建立统计模型研究变量间相关关系的密切程度、结构状态、模型预测的一种有效工具。一元线性回归分析一元线性回归是描述两个变量之间统计关系的最简单的回归模型。1.数学模型假设变量x...
  • 用Excel做回归分析

    万次阅读 多人点赞 2019-02-27 22:17:37
    Excel数据分析工具库是个很强大的工具,可以满足基本的统计分析,这里介绍用Excel数据分析工具库中的回归做回归分析。本文仅作为学习笔记之用,欢迎各位交流指正。 本节知识点: Excel数据分析工具库—回归 ...
  • 多元相关分析与多元回归分析

    万次阅读 多人点赞 2018-10-27 17:13:02
    什么是回归分析 分析步骤 回归分析与相关分析的主要区别 一元线性相关分析 一元线性回归分析 建模 方差分析检验  t检验 多元回归分析模型建立 线性回归模型基本假设 多元回归分析用途 多元线性相关分析 ...
  • python数据分析:回归分析(regression analysis)

    万次阅读 多人点赞 2018-11-28 20:39:55
    何为回归分析回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为简单...
  • 回归分析中,如果有两个或两个以上的自变量,就称为多元回归。实际应用中,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际...
  • Excel数据分析工具库是个很强大的工具,可以满足基本的统计分析,这里介绍用Excel数据分析工具库中的回归做回归分析。本节知识点:Excel数据分析工具库—回归线性回归和非线性回归简单线性回归和多重线性回归逻辑...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,333
精华内容 9,733
关键字:

回归分析