精华内容
下载资源
问答
  • 分析气象和环境因子,需要提供R语言的多元线性逐步回归模型的程序完整代码?
  • R语言与多元线性回归+逐步回归

    千次阅读 多人点赞 2019-11-16 12:31:12
    多元线性回归 多元线性回归的核心问题:应该选择哪些变量??? RSS(残差平方和)与R2 (相关系数的平方)选择法:遍历所有可能的组合,选出使RSS最小,R2最大的模型。 AIC(Akaike Information Criterion)准则与...

    多元线性回归

    多元线性回归的核心问题:应该选择哪些变量???

    • RSS(残差平方和)与R2  (相关系数的平方)选择法:遍历所有可能的组合,选出使RSS最小,R2  最大的模型。
    • AIC(Akaike Information Criterion)准则与BIC(Bayesian Information Criterion)准则

    AIC = n ln (RSSp/n)+2p

    其中:n为变量总个数,p为选出的变量个数(AIC越小越好

    逐步回归

    • 向前引入法:从一元回归开始,逐步增加变量,使指标变量达到最优为止
    • 向后剔除法:从全变量回归方程开始,逐步删去某个变量,使指标到达最优为止
    • 逐步筛选法:综合上述两种方法

    step函数

    image

    根据上图中对该数据集作出的线性回归模型的各个统计量进行分析发现:

    • 在该数据集中的EXAMINATION变量与模型的相关性中没有一个*,从而表示,该变量与该模型没有相关性,可以去除。
    • 模型拟合的相关系数的平方值为:0.7067

    这里使用step函数,R会自动计算原始模型的AIC数值和去除各个变量后AIC的变化情况,从而找到去除模型无关变量,作出更为准确的线性回归模型。

    image

    因为第一次作出的线性回归模型为全变量的模型,所以这里使用step进行逐步回归的时候,只能使用backward或者both方法进行逐步回归。从而得到在去除无关变量EXAMINATION变量后,得到一个拟合效果更好的线性回归模型。

    image

    逐步回归计算实例

    例 6.10 某种水泥在凝固时放出的热量Y(卡/克)与水泥中四种化学成分X1,X2,X3,X4有关,现测得13组数据,如表6.5所示。希望从中选取重要的变量,建立Y关于它们的线性回归方程。

    image

    分析步骤:

    首先作出多元线性回归方程,建立所有变量的回归模型

    image

    从上述建立的回归模型可知,从X1到X4四个变量的“显著性检验”一个*都没有。可见,如果选择全部变量做回归方程,效果是很不好的。

    下面使用函数step()做逐步回归:

    image

    使用step方法处理后的结果如下:

    image

    在使用step函数进行处理的时候,最后一步的操作,无论去掉哪一个变量,AIC值均会升高,因此R软件终止计算,得到了“最优”的回归方程

    可见,现在变量X1,X2,X4的“显著性检验”发生了好转。虽然R2也达到了0.9823,但仍然有不足。在R软件中,还有两个函数可以用来做逐步回归。这两个函数是add1()和drop1():

    image

    从运算结果来看,如果去掉变量X4,AIC值会从24.97增加到25.42,是增加的最少的。另外,除AIC准则外,残差的平方和也是逐步回归的重要指标之一,从直观来看,拟合越好的方程,残差的平方和应越小。去掉X4,残差的平方和上升9.93,也是最少的。因此,从这两个指标来看,应该再去掉变量X4.

    image

    这个结果应该还是满意的,因为所有的检验均是显著的,最后得到“最优”。

    展开全文
  • 线性回归,前面用Python从底层一步一个脚印用两种方法实现了回归拟合。在这个高级语言层出不穷的年代,这样做显然不明智,所以我考虑用优秀的数据分析工具——R语言(不敢说最...

    640?wx_fmt=png

    线性回归,前面用Python从底层一步一个脚印用两种方法实现了回归拟合。在这个高级语言层出不穷的年代,这样做显然不明智,所以我考虑用优秀的数据分析工具——R语言(不敢说最优秀,虽然心里是这么想的,我怕有人要骂我!)做回归分析。包括简单多变量回归、逐步回归、逻辑回归!

    对了,上次,用Python写的两篇回归拟合分别是:

    多元回归分析,生活中用的很多,因为一个因素可能与很多其它因素有关!言归正传,这里考虑用R语言里面的相关函数做回归分析。

    需要的用到的知识储备:

    • 线性代数

    • 概率论与数理统计

    • 高等数学

    • R语言基础

    下面分别从普通多元线性回归、逐步回归、逻辑回归进行介绍。前面用Python实现的只是一元回归,由于R语言实现线性回归很方便,所以我会着重介绍原理。

    多元线性回归

    不论是单变量还是多元线性回归分析,他们都是直接或间接(有时候需要通过变量代换)程线性的关系。我们需要找到一个通用的线性模型来描述这种关系,在我们可以接受的误差范围内对数据进行预测或者发现规律。

    多元线性回归理论基础

    对于一组变量数据,如果我们不管是通过画散点图还是其它方法,知道了一个变量与其它变量程很强线性关系。我们就需要知道,到底是什么样的关系,关系系数是多少。通常是用经典的最小二乘法,因为这样算出的确实是最优的系数,可以保证残差平方和最小的优化目标。

    对于一个因变量y,有一组自变量X = (x1,x2,...,xk),x1,x2,...,xk,eps是列向量,考虑它们之间有如下线性关系:

    640?wx_fmt=png

    当然了,这里X = (x1,x2,...,xk),y都是给的一组数据,就像这样

    640?wx_fmt=png

    那么,对每一组(比如第一行)数据,就有如下关系:

    640?wx_fmt=png

    目标函数为残差平方和的关于系数beta0,beta1,...,betak的多元二次函数,我们希望找到一组系数使得目标函数值最小,即误差最小。目标函数如下:

    640?wx_fmt=png

    学过数学分析或者高等数学的人都知道,这只要关于beta0,beta1,...,betak分别求偏导数,得到k+1方程,再求出零点即可。

    我们用矩阵表示各个变量如下:

    640?wx_fmt=png

    那么,学过高等代数(数学专业)或者线性代数(工科)都知道,因变量与自变量关系可以表示为:

    640?wx_fmt=png

    中间推导过程这里不在赘述了,最终系数向量表达式为:

    640?wx_fmt=png

    关于多元线性回归的理论就到这里,有兴趣可以参考:线性回归导论(机械工业出版社 王辰勇 译)

    多元线性回归的R语言实现

    这里用R语言里面的常用数据集iris来说明,这个数据集包含五个指标,我们这里先只用前面四个:花萼长度、花萼宽度、花瓣长度、花瓣宽度,进行多元线性回归分析。

    数据预处理

    大家都知道,为了消除不同变量量纲或者数量级不一致,做数据标准化的数据预处理是有必要的。用到的R语言函数是scale(),这个函数的机理具体公式如下:

    640?wx_fmt=png

    R语言实现如下:

    640?wx_fmt=png

    标准化后数据选择前六行我们看一下:

    > head(sl.sc)

         Sepal.Length

    [1,]   -0.8976739

    [2,]   -1.1392005

    [3,]   -1.3807271

    [4,]   -1.5014904

    [5,]   -1.0184372

    [6,]   -0.5353840

    下面构建多元线性回归

    我们用花萼标准化后的数据sl.sc与其它三个变量做线性回归,先做有常数项的多元回归。

    lm.sc <- lm(sl.sc~sw.sc+pl.sc+pw.sc)

    summary(lm.sc)

    640?wx_fmt=png

    summary(lm.sc)给出了线性回归的相关信息,各个系数Residuals给出了残差的5分位数,Estimate、Std. Error、t value、Pr(>|t|)分别给出了自变量系数、标准误、t值和p值,Multiple R-squared:  0.8586, Adjusted R-squared:  0.8557分别给出了R方与修正的R方,这里 R-squared:  0.8557表示这个线性回归模型可以解释85.57的原数据,还是不错的,后面就不再解释这几个指标的意思了。可以看出无论是每个系数还是总体的p-value都远远小于0.05,给出了三颗星***的等级,但是如图蓝色方框是常数项的值是-1.176e-16,太小了,p值是1,告诉我们常数项可以不用,这些数据是过原点的线性关系。

    去掉常数项的多元回归,不同的是,减一表示不要常数项

    lm.sc <- lm(sl.sc~sw.sc+pl.sc+pw.sc-1)

    summary(lm.sc)

    模型详细情况:

    640?wx_fmt=png

    显然,去掉后R方,F值没有明显变换,系数等级都是三颗星,表明去掉常数项确实在不影响模型情况下简化了模型。

    我们来看一下残差图与QQ图:

    plot(lm.sc,1,col = 'orange',main = '残差图')

    plot(lm.sc,2,col = 'orange',main = 'QQ图')

    640?wx_fmt=png

    640?wx_fmt=png

    通过残差图与QQ图也可以明显看出这个不带常数项的线性回归模型是不错的。

    逐步回归

    逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。以确保每次引入新的变量之前回归方程中只包含显著性变量。这是一个反复的过程,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止。以保证最后所得到的解释变量集是最优、最简单的。

    逐步回归最常用的挑选准则有修正复相关系数、预测平方和、Cp和AIC等,这里用AIC准则,对于含有P个自变量的回归方程,n为观测值(样本)个数,AIC越小越好,具体计算公式为:

    640?wx_fmt=png

    使用R语言构建逐步回归模型

    知道原理后,我们试图从三个自变量中筛选出两个,首先看一下上述模型的AIC

    step(lm.sc)

    640?wx_fmt=png

    显然,三个变量时AIC是最小的,这里为了说明问题,实在要剔除一个变量的话,当然要剔除第一个。因为我们发现剔除pw.sc时AIC为-272.06,如果剔除pl.scAIC就为-181.26,而AIC越小越好,所以就剔除变量pw.sc吧。

    lm.new <- lm(sl.sc~sw.sc+pl.sc-1)

    summary(lm.new)

    640?wx_fmt=png

    R方稍微减小了一点,因为三个变量AIC最小(即模型最优),提出后肯定会减小的。这里为了说明问题才强行提出一个。

    逻辑回归

    在介绍逻辑回归前我们先介绍什么是哑变量,其实,R语言用的多的人都知道iris这个数据集有5列,第五列是花的分类:setosa、versicolor、 virginica。那么花萼长度是否与花的分类有关呢?一般是有的。增加三列,我们考虑引入0~1变量,那么对于属于setosa的,记为1,versicolor、 virginica位置记为0,同理就多了3列,这里的0,1就是哑变量。还是为了减少变量,简化模型,我们只增加2列versicolor和 virginica,这样versicolor、 virginica位置都为0时,就属于setosa这个分类,versicolor位置为1时就为versicolor这个分类。0,1是逻辑变量,线性回归引入了逻辑变量,故称为逻辑回归。

    下面就进行R语言实现,要不看一下iris数据集长什么样:

    640?wx_fmt=png

    第五列变量就有三个水平,都是50条,正好。

    640?wx_fmt=png

    两个for()语句就是构造逻辑变量的,还是很好理解的,这样就有五个变量了。构造的应该像这样:

    640?wx_fmt=png

    这里省略了前面的,只为说明构造的逻辑变量(实际应该是s1里面51~100为1,s2里面101~150为1,其它为0)。看一下结果:

    640?wx_fmt=png

    所有变量系数p-value都小于0.05,R-squared:  0.8627,比没有增加逻辑变量的R-squared:  0.8557好一些,可见花的分类确实对花萼长度sl.sc有关系。最终表达式为:

    640?wx_fmt=png

    猜你可能喜欢

    640?wx_fmt=jpeg

    展开全文
  • 线性回归模型建模步骤 (一元线性回归多元线性回归
  • 在这种情况下可用逐步回归分析,进行x因子的筛选,这样建立的多元回归模型预测效果会更好。 可以解决的实际问题: 收入水平与受教育程度、所在行业、工作 年限、工作种类的关系。 公路客运量与人口增长量、私家...

    回归分析的基本思想是: 虽然自变量和因变量之间没有严格的、确定性的函数关系,但可以设法找出最能代表它们之间关系的数学表达形式。

    多元回归分析的由来: 在自变量很多时,其中有的因素可能对应变量的影响不是很大,而且x之间可能不完全相互独立的,可能有种种互相作用的关系。 在这种情况下可用逐步回归分析,进行x因子的筛选,这样建立的多元回归模型预测效果会更好。

    逐步回归法:逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。以确保每次引入新的变量之前回归方程中只包含显著性变量。这是一个反复的过程,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止。以保证最后所得到的解释变量集是最优的。

    依据上述思想,可利用逐步回归筛选并剔除引起多重共线性的变量。

    其具体步骤如下

    可以解决的实际问题

    1. 收入水平与受教育程度、所在行业、工作 年限、工作种类的关系。
    2. 公路客运量与人口增长量、私家车保有量、 国民生产总值、国民收入、工农业总产值、 基本建设投资额、城乡居民储蓄额、铁路 和水运客运量等因素的关系。

    Q:以陕西省长武地区1984~1995年的烟蚜传毒病情资料、相关虫情和气象资料为例, 建立蚜传病毒病情指数的逐步回归模型, 说明逐步回归分析的具体步骤。影响蚜传病毒病情指数的虫情因子和气象因子一共有21个,通过逐步回归,从中选出对病情指数影响显著的因子,从而建立相应的模型。

     

    以excel文件的形式导入spss

    此时的年份作为label,x1作为因变量,其他因素作为自变量(按住shift同时拉入多个因素)。

    【分析】-【回归】-【线性】-【方法】步进【选项】设置F-enter and F-remove-【输出】

    输入/除去的变量a

    模型

    输入的变量

    除去的变量

    方法

    1

    x16

    .

    步进(条件:要输入的 F 的概率 <= .150,要除去的 F 的概率 >= .200)。

    2

    x17

    .

    步进(条件:要输入的 F 的概率 <= .150,要除去的 F 的概率 >= .200)。

    a. 因变量:x1

     

    模型摘要c

    模型

    R

    R

    调整后 R 方

    标准估算的错误

    德宾-沃森

    1

    .762a

    .581

    .539

    22.08153

     

    2

    .844b

    .713

    .649

    19.26609

    2.313

    a. 预测变量:(常量), x16

    b. 预测变量:(常量), x16, x17

    c. 因变量:x1

     

    ANOVAa

    模型

    平方和

    自由度

    均方

    F

    显著性

    1

    回归

    6760.381

    1

    6760.381

    13.865

    .004b

    残差

    4875.941

    10

    487.594

     

     

    总计

    11636.322

    11

     

     

     

    2

    回归

    8295.681

    2

    4147.841

    11.175

    .004c

    残差

    3340.641

    9

    371.182

     

     

    总计

    11636.322

    11

     

     

     

    a. 因变量:x1

    b. 预测变量:(常量), x16

    c. 预测变量:(常量), x16, x17

    此时的两个模型则分别是对应x16以及x16、x17为变量的线性回归方程。

     

    系数a

    模型

    未标准化系数

    标准化系数

    t

    显著性

    B

    标准错误

    Beta

    1

    (常量)

    -16.055

    9.917

     

    -1.619

    .137

    x16

    .985

    .265

    .762

    3.724

    .004

    2

    (常量)

    -33.139

    12.059

     

    -2.748

    .023

    x16

    .753

    .257

    .583

    2.924

    .017

    x17

    .257

    .126

    .405

    2.034

    .072

    a. 因变量:x1

    第一步对x16做简单线性回归:y = 0.985x16-16.005

    第二步对x16、x17做线性回归:y = 0.753x16+0.257x17-33.139

     

    排除的变量a

    模型

    输入 Beta

    t

    显著性

    偏相关

    共线性统计

    容差

    1

    x2

    -.132b

    -.584

    .573

    -.191

    .881

    x3

    -.028b

    -.127

    .902

    -.042

    .942

    x4

    -.027b

    -.125

    .903

    -.042

    .997

    x5

    -.050b

    -.203

    .844

    -.068

    .751

    x6

    .024b

    .113

    .913

    .038

    .999

    x7

    -.033b

    -.133

    .897

    -.044

    .744

    x8

    .213b

    1.037

    .327

    .327

    .985

    x9

    -.030b

    -.132

    .898

    -.044

    .901

    x10

    .130b

    .609

    .558

    .199

    .979

    x11

    .200b

    .953

    .365

    .303

    .957

    x12

    -.121b

    -.560

    .589

    -.183

    .963

    x13

    .095b

    .438

    .672

    .144

    .978

    x14

    .225b

    1.020

    .334

    .322

    .856

    x15

    -.137b

    -.648

    .533

    -.211

    .992

    x17

    .405b

    2.034

    .072

    .561

    .803

    x18

    .302b

    1.192

    .264

    .369

    .626

    x19

    -.327b

    -1.754

    .113

    -.505

    .999

    x20

    -.132b

    -.623

    .549

    -.203

    .988

    x21

    -.353b

    -1.632

    .137

    -.478

    .769

    2

    x2

    -.085c

    -.422

    .684

    -.148

    .868

    x3

    -.038c

    -.197

    .849

    -.069

    .941

    x4

    -.103c

    -.544

    .601

    -.189

    .958

    x5

    -.026c

    -.119

    .909

    -.042

    .749

    x6

    .006c

    .030

    .976

    .011

    .996

    x7

    .059c

    .265

    .798

    .093

    .710

    x8

    .238c

    1.383

    .204

    .439

    .981

    x9

    -.094c

    -.473

    .649

    -.165

    .877

    x10

    .225c

    1.252

    .246

    .405

    .928

    x11

    .184c

    1.007

    .344

    .335

    .955

    x12

    .016c

    .076

    .941

    .027

    .836

    x13

    .080c

    .424

    .683

    .148

    .976

    x14

    .067c

    .294

    .776

    .103

    .693

    x15

    -.139c

    -.754

    .473

    -.257

    .992

    x18

    .231c

    1.010

    .342

    .336

    .608

    x19

    -.168c

    -.728

    .487

    -.249

    .631

    x20

    .007c

    .032

    .975

    .011

    .847

    x21

    -.230c

    -1.056

    .322

    -.350

    .662

    a. 因变量:x1

    b. 模型中的预测变量:(常量), x16

    c. 模型中的预测变量:(常量), x16, x17

     

    残差统计a

     

    最小值

    最大值

    平均值

    标准偏差

    个案数

    预测值

    -13.3111

    85.9252

    12.2325

    27.46184

    12

    残差

    -31.99095

    28.60478

    .00000

    17.42684

    12

    标准预测值

    -.930

    2.683

    .000

    1.000

    12

    标准残差

    -1.660

    1.485

    .000

    .905

    12

    a. 因变量:x1

    最终得出:\large y = 0.753x_{16}+0.257x_{17}-33.139

    展开全文
  • 基于王斌会《多元统计分析及R语言建模》第4章第4节逐步回归。主要介绍回归变量的选择方法,涉及变量选择准则,逐步回归分析的步骤,以及算例。
  • 基于王斌会《多元统计分析及R语言建模》第4章第4节逐步回归。主要介绍回归变量的选择方法,涉及变量选择准则,逐步回归分析的步骤,以及算例。
  • 多元统计分析之多元线性回归的R语言实现多元统计分析--multivariate statistical analysis研究客观事物中多个变量之间相互依赖的统计规律性。或从数学上说, 如果个体的观测数据能表为 P维欧几里得空间的点,那么...

    多元统计分析之多元线性回归的R语言实现

    多元统计分析--multivariate statistical analysis

    研究客观事物中多个变量之间相互依赖的统计规律性。或从数学上说, 如果个体的观测数据能表为 P维欧几里得空间的点,那么这样的数据叫做多元数据,而分析多元数据的统计方法就叫做多元统计分析 。

    重要的多元统计分析方法有:多重回归分析、判别分析、聚类分析、主成分分析、对应分析、因子分析、典型相关分析、多元方差分析等。

    多元线性回归(普通最小二乘法)

    用来确定2个或2个以上变量间关系的统计分析方法。多元线性回归的基本的分析方法与一元线性回归方法是类似的,我们首先需要对选取多元数据集并定义数学模型,然后进行参数估计,对估计出来的参数进行显著性检验,残差分析,异常点检测,最后确定回归方程进行模型预测。(1)做个简单线性回归热热身

    women#使用自带的woman数据集

    73256c5d7cb5eb7f87086b59a6eee36e.png

    fit

    summary(fit)#展示拟合模型的详细信息

    f93a81ef002ab5822e7ee66fe145d423.png

    women$weight#列出真值

    fitted(fit)#列出拟合模型的预测值

    e0faf1b0472f636e172aa8712bda180a.png

    residuals(fit)#列出拟合模型的残差值

    coefficients(fit)#列出拟合模型的模型参数

    confint(fit)#列出拟合模型参数的置信区间

    anova(fit)#生成一个拟合模型的方差分析表,或者比较两个或更多拟合模型的方差分析表

    0f831a1975921a5cbbc98492840a245b.png

    vcov(fit)#列出拟合模型的协方差矩阵

    0a3d79292dc6282e3d0e0368f6c54b33.png

    par(mfrow=c(2,2))

    plot(fit)

    675e67d54477f104860cd83c14957059.png

    plot(women$height,women$weight,

         xlab="Height (in inches)",

         ylab="Weight (in pounds)")#生成观测,变量散点图

    abline(fit)#给散点图加上拟合曲线

    2fa029fce2461d7f0b16ed158834d30d.png

    (2)多项式回归

    fit2=lm(weight~height+I(height^2),data=women)#I(height^2)表示向预测等式添加一个平方项

    summary(fit2)

    plot(women$height,women$weight,

         xlab="Height (in inches)",

         ylab="Weight (in pounds)")

    lines(women$height,fitted(fit2))

    b02ba95c21a17fa09eb0e1934d43b829.png c7dbc2226bbf82ee55b5a47b379eaa7b.png

    fit3=lm(weight~height+I(height^2)+I(height^3),data=women)

    summary(fit3)

    lines(women$height,fitted(fit3),col="red")

    b43525dea3adb41fba3ffb197d84a8e3.png 87082649fe85ae4d3e19e86fbdd01fdc.png

    #使用car包的scatterplot()函数

    install.packages("car")

    library(car)

    library(carData)

    scatterplot(weight~height,data=women,

                spread=FALSE,smooth.args=list(lty=2),pch=19,

                main="Women Age 30-39",

                xlab="Height (in inches)",

                ylab="Weight (in pounds)")

    #该函数提供了身高与体重的散点图,线性拟合曲线以及平滑拟合曲线(loess),每个轴还展示了两个变量的箱线图。

    b313445f4f7457b14535b55d61cf481b.png

    (3)多元线性回归

    states

    cor(states)#检查一下各变量之间的相关性

    6c9f387aa09efadaaf3a72b327696939.png

    scatterplotMatrix(states,spread=FALSE,smooth.args=list(lty=2),pch=19,main="scatterplot matrix")

    #非对角线位置绘制变量间的散点图,并添加平滑和线性回归图

    #对角线区域绘制每个变量对应的密度图和轴须图

    ff72eb8cf2d8ab50fbcff97eb3ef7b62.png

    #使用lm函数进行没有交互项多元线性回归的拟合

    states

    fit=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    summary(fit)

    b52ccfdc2546bc10ff7ac0c02a18dcd6.png

    #使用lm函数进行有交互项多元线性回归的拟合

    fit

    summary(fit)

    e93a9eb6f4704bc44b9cb778134ea256.png

    交互项也是显著的,说明相应变量与其中一个预测变量之间的关系依赖于另一个预测变量。

    (4)回归诊断--常规方法

    fit

    par(mfrow=c(2,2))

    plot(fit)

    R vs F图:如果自变量和因变量线性相关,残差值和拟合值之间没有任何系统联系,如果是一条清楚的曲线,可能在暗示要在拟合的时候加上多次项

    正态QQ图:当自变量的值固定时,因变量应该成正态分布,残差值也应该是一个均值为0的正态分布,如果满足假设,图上的点应该都落在一条45度的直线上

    scale-location图:如果满足方差不变的假设,图中水平线周围的点应该随机分布

    Residuals vs leverage图:鉴别离群点,高杠杆值点,强影响点。

    675e67d54477f104860cd83c14957059.png

    加上多次项的拟合结果

    fit2

    par(mfrow=c(2,2))

    plot(fit2)

    879d9068a6b4f4cf39c1be79700947a5.png

    13和15是强影响点,可以去除强影响点。

    fit2

    再对数据集state.x77进行试验

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    par(mfrow=c(2,2))

    plot(fit)

    3e4544349ac2010a33a21617181aa01b.png

    (5)回归诊断--改进方法

    library(car)

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    par(mfrow=c(1,1))

    qqPlot(fit,labels=row.names(states),id.method="identify",simulate=TRUE,main="Q-Q Plot")

    states["Nevada",]

    fitted(fit)["Nevada"]

    residuals(fit)["Nevada"]

    rstudent(fit)["Nevada"]

    a1db86692e5eb2a2e6276dcd2136b67a.png c7614853096ffe75c77d2e1f7cda3bae.png

    学生化残差

    residplot

      z

      hist(z,breaks=nbreaks,freq=FALSE,

           xlab="Studentized Residual",

           main="Distribution of Errors")

      rug(jitter(z),col="brown")

     curve(dnorm(x,mean=mean(z),sd=sd(z)),add=TRUE,col="blue",lwd=2)

      lines(density(z)$x,density(z)$y,

            col="red",lwd=2,lty=2)

      legend("topright",

             legend=c("Normal Curve","Kernel Density Curve"),

             lty=1:2,col=c("blue","red"),cex=.8)

    }

    residplot(fit)

    c25bbd08dd5cf247c3e9e44a3a9aa732.png

    除了一个很明显的离群点,误差很好地服从了正态分布。

    误差的独立性

    durbinWatsonTest(fit)

    crPlots(fit)

    p值显著说明无自相关性,误差项之间独立。滞后项(lag=1)表明数据集中每个数据都是与其后一个数据进行比较。

    通过成分残差图可以看因变量和自变量之间是否成非线性关系。

    688dfebc360234a767c7fccc540f1880.png dc58e42a1e72c8b6bd2f120d55ec94f5.png

    同方差性

    ncvTest(fit)

    spreadLevelPlot(fit)

    分布水平图的点随机分布在直线的周围,如假设不正确,将看到曲线。

    下图说明P值不显著,满足方差不变假设

    d609d3435362504b718759ebe7f3c8e8.png

    线性模型假设的综合验证

    install.packages("gvlma")

    library(gvlma)

    gvmodel

    summary(gvmodel)

    下图表示P值都不显著,满足假设条件。

    5c49bb53a95f343fb597615aff0fd692.png

    多重共线性

    library(car)

    vif(fit)

    sqrt(vif(fit))#如果>2,表明存在多重共线性问题

    d5890fe2af78168a74c4e1dbebbda1fd.png

    (6)异常观测值

    a.离群点:预测效果不佳的观测,有很大的或正或负的残差值。正代表模型低估了响应值,负代表模型高估了响应值

    library(car)

    outlierTest(fit)

    返回值Nevada,P值小于0.05,判定为离群点。

           rstudent               unadjusted p-value     Bonferonni p

           Nevada 3.542929         0.00095088     0.047544

    b.高杠杆点:与其他变量相关的离群点

    hat.plot

      p

      n

      plot(hatvalues(fit),main="Index Plot of Hat Values")

      abline(h=c(2,3)*p/n,col="red",lty=2)

      identify(1:n,hatvalues(fit),names(hatvalues(fit)))

    }

    hat.plot(fit)

    5e41c6a6fdc0991d82b098e5d0f1a0d0.png

    c.强影响点:模型估计参数值影响有些比例失衡的点,方法是测量Cook距离,可通过变量添加图得出。

    一般来讲,Cook距离大于4/(n-k-1),表明是强影响点。

    n——样本量大小,K——预测变量数目

    cutoff

    plot(fit,which=4,cook,levels=cutoff)

    abline(h=cutoff,lty=2,col="red")

    下图中高于水平线的是强影响点

    d6de2a1b02945eb8095736f635ffe891.png

    d.变量添加图:三种点都可以显现出来

    library(car)

    avPlots(fit,ask=FALSE,id.method="identify")

    00ef59878d989f2c4b7f4d3a5a42e84f.png

    整合到一张图

    library(car)

    influencePlot(fit,id.method="identify",main="Influent Plot",

                  sub="Circle size is proportional to Cook's distance")

    纵坐标超过正负2的被认为是离群点,水平轴超过0.2或0.3的被认为是高杠杆点,圆圈大的被认为是强影响点。

    8d44b83dc3c51f0fa90d543607e26236.png

    (7)处理违背回归假设的问题

    a.删除变量:离群点和强影响点

    b.变量变换:当模型违反正态假设时

    library(car)

    summary(powerTransform(states$Murder))

    4ae3203ade0cd5dc426a1d48045c7e3e.png

    结果表明可以用Murder^0.6来正态化Murder,该函数使用极大似然法正态化变量

    library(car)

    boxTidwell(Murder~Population+Illiteracy,data=states)

               MLE of lambda  Score Statistic (z) Pr(>|z|)

    Population   0.86939             -0.3228   0.7468

    Illiteracy       1.35812              0.6194   0.5357

    iterations =  19 

    结果显示使用Population0.86939和Illiteracy1.35812可以大大改善线性关系。但对二者的记分检验又表明不会不需要变换。p值比较大。

    c.增删变量:改变模型的变量数目可以影响变量的拟合优度——多重共线的变量要删掉

    (8)选择最佳的回归模型

    a.模型比较:

    a1. anova()函数,需要模型嵌套

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit1=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    fit2=lm(Murder~Population+Illiteracy,data=states)

    anova(fit1,fit2)

    28adaeb8be5768a6a7d36dfdfabc182a.png

    anova将两个回归模型进行比较,p值(0.9939)不显著,所以不需要加到模型中。

    a2. AIC(赤池信息准则):考虑模型的统计拟合优度,AIC值小的要优先选择。

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit1=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    fit2=lm(Murder~Population+Illiteracy,data=states)

    AIC(fit1,fit2)

            df      AIC

    fit1  6   241.6429

    fit2  4   237.6565

    根据AIC值选择fit2,不需要模型嵌套。

    b.变量选择:

    b1. 逐步回归法:模型每次增加(向前)或者删除(向后)一个变量,直到达到某个判停条件为止。

    library(MASS)

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    stepAIC(fit,direction = "backward")

    40a876967664111af635eb9f6176a7f8.png

    开始模型删除一个变量之后,AIC值降低,再删除一个变量之后,AIC值变低,最后剩下两个变量。弊端:不能找到最佳的

    b2. 全子集回归法:所有可能的模型都会被检验。

    install.packages("leaps")

    library(leaps)

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    leaps=regsubsets(Murder~Population+Illiteracy+Income+Frost,data=states,nbest=4)

    leaps

    plot(leaps,scale="adjr2")

    7e304e6ab60be3cd9b09d5c631c45d79.png

    图中的0.33表示截距项与income变量模型调整R平方0.33,可以看出截距项和P和I的调整模型R平方和最大,模型最佳

    or:

    library(car)

    subsets(leaps,statistic="cp",main="Cp Plot for All Subsets Regression")

    abline(1,1,lty=2,col="red")

    d0c0349844c925d836381f3fd5d189cd.png

    越好的模型离截距和斜率都为1的红线最近。

    (9)深层次分析

    a.交叉验证:最小二乘法的目的时预测误差(残差)平方和最小,响应变量解释度(R平方)最大化,交叉验证法可以评定该回归模型的泛化能力。

    定义:将一定的数据挑选出来作为训练样本,其他的数据作为保留样本,现在训练样本中做回归,再在保留样本中做预测

    install.packages("bootstrap")

    library(bootstrap)

    shrinkage

      require(bootstrap)

      theta.fit

        lsfit(x,y)

      }

      theta.predict

      x

      y

      results

      r2

      r2cv

      cat("Original R-square=",r2,"\n")

      cat(k,"Fold Cross-Validated R-square=",r2cv,"\n")

      cat("Change=",r2-r2cv,"\n")

    }

    states

    fit

    shrinkage(fit)

    结果:

    Original R-square= 0.5669502 

    10 Fold Cross-Validated R-square= 0.4642092 

    Change= 0.1027411 

    验证后的R值更客观,验证前过于乐观,R值较大。

    fit2

    shrinkage(fit2)

    验证前后R方变化不大,说明模型预测较为精确。

    b.相对重要性:比较标准化回归系数,表示当其他预测变量不变时,该预测变量一个标准差的变化可yying引起响应值的变化。

    在回归分析前,先将数据集用scale函数标准化为均值为0,标准差1的矩阵,再转化为数据框进行回归分析。

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    zstates=as.data.frame(scale(states))

    zfit=lm(Murder~Population+Illiteracy+Income+Frost,data=ztates)

    coef(zfit)

    结果:

      (Intercept)    Population    Illiteracy        Income         Frost 

    -2.054026e-16  2.705095e-01  6.840496e-01  1.072372e-02  8.185407e-03 

    结果显示:人口和文盲率对谋杀率的影响很大,而Frost的影响率很小。

    c.相对权重法:将相对重要性看成是每个预测变量对R平方的贡献大小。

    relweight

      R

      nvar

      rxx

      rxy

      svd

      evec

      ev

      delta

      lambda

      lambdasq

      beta

      rsquare

      rawwgt

      import

      import

      row.names(import)

      names(import)

      import

      dotchart(import$Weights,labels = row.names(import),

               xlab="% of R-Square",pch=19,

               main="Relative Importance of Predictor Variables",

               sub=paste("Total R-Square=",round(rsquare,digit=3))

      )

    }

    states

    fit

    relweight(fit,col="grey")

    df64c82db953c3801711b61013dfa2ac.png

    结果显示,文盲率对谋杀率的影响最大,其次是结冰率。

    展开全文
  • 多元线性回归

    千次阅读 2018-04-05 13:30:55
    什么是多元线性回归?  在线性回归分析中,如果有两个或两个以上的自变量,就称为多元线性回归(multivariable linear regression)。如果我们要预测一套房子的价格,影响房子价格的因素可能包括:面积、卧室数量...
  • 参考书籍:1、《应用多元统计分析》高惠璇 1、表达式 用来研究因变量Y和m个自变量的相关关系(一共有n个样本,) 矩阵表示为: 记为或 2、回归方程和回归系数的显著性检验 2.1 回归方程的显著性检验(又...
  • 毕业时编的线性回归分析原程序,挺好用的,与大家分享享一下
  • 多元线性回归建模 文章大纲 (Article Outline) Dataset description 数据集描述 Exploratory data analysis 探索性数据分析 A simple linear regression model fitting 简单的线性回归模型拟合 Model interpretation...
  • R多元线性回归

    千次阅读 2016-05-31 15:56:18
    多元线性回归 统计建模与R软件-薛毅书p325 选择自变量 建立多元线性模型 > data(swiss) > s=lm(Fertility~ .,data=swiss) #除因变量...逐步回归: 向前引入法:从一元回归开始,逐步增加变量,使指标值达到最优为
  • 《模糊数学》实验报告实验名称: 多元线性回归与逐步回归实验目的熟练掌握现行回归模型的建模方法,掌握regress命令的使用方法。掌握编程求总离差平方和TSS、回归平方和RSS、残差平方和ESS等相关统计量。3. 掌握逐步...
  • 原始数据在这里 1.观察数据 首先,用Pandas打开数据,并进行观察... 以上这篇关于多元线性回归分析——Python&SPSS就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。 时间: 2020-02-23
  • 多元线性回归总结

    万次阅读 2018-10-26 10:51:45
    1.多元线性回归模型 1.1多元线性回归形式 相对上一篇文章之中的一元线性回归多元线性回归的主要特点是,自变量不再是一组数据,而是由多于一组以上的数据作为自变量。所以,多元线性回归的模型形式为: 其中...
  • 本文主要从概念上区分以下概念,详细原理详见参考附录。 ①插值 和 拟合 的区分;...③多元线性回归 和 多元逐步回归 的区分;④多元线性回归 和 逻辑回归 的区分;⑤回归分析 与 最小二乘法 的区分
  • SPSS多元线性回归输出结果的详细解释

    万次阅读 多人点赞 2017-06-27 17:41:05
    最近做了一些用SPSS进行线性回归的实验,还是感觉很多细节把握不好,这里结合我的实验结果,以及网上别人的介绍总结一下,先贴几张SPSS的输出: 下面简单解释一下这三张图中的结果: 第一个表模型汇总表中,...
  • 多元线性回归中,并不是所用特征越多越好;选择少量、合适的特征既可以避免过拟合,也可以增加模型解释度。这里介绍3种方法来选择特征:最优子集选择、向前或向后逐步选择、交叉验证法。 最优子集选择 这种方法的...
  • 多元线性回归分析

    2021-08-07 20:34:33
    多元线性回归分析 回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而...
  • 本文使用 R 语言,对各个影响因素的相关性进行了筛选分析,并采用逐步回归法得到了最优的多元线性回归模型。在讨论中,对线性回归模型的回归显著性以及拟合优度进行了检验,最后使用最优的多元线性回归模型对波士顿...
  • 多元线性回归方程原理及其推导

    万次阅读 多人点赞 2018-10-21 14:19:22
    多元线性方程原理及推导 概念 1.在统计学中,线性回归方程是利用最小二乘函数对一个或多个自变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况...
  • 多元线性回归-EViews

    千次阅读 2019-09-25 18:42:20
    分享经典书籍:A Modern Approach to Regression with R....多元线性回归 掌握多元线性回归模型的估计方法、掌握多重共线性模型的识别和修正。 多元线性回归模型,并识别和修正多重共线性。 普通最小二乘法、简单...
  • 经典线性模型自变量的线性预测就是因变量的估计值。 广义线性模型:自变量的线性预测的函数是因变量的...1.线性回归原理 其中,为偏置参数,M为特征数目,为基函数(径向基函数(rbf)、sigmoid基函数等), 特...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,431
精华内容 1,772
关键字:

多元线性逐步回归