R软件做线性回归分析
做回归的一般步骤为:
1、确定回归方程中的解释变量和被解释变量
2、确定回归模型
通过观察散点图确定是建立线性回归模型还是非线性回归模型
3、建立回归模型
4、对回归方程进行各种检验
5、利用回归方程进行预测
下面就对线性回归模型的建立进行详细的阐述
一、获取数据
R软件里面有很内置的数据集,用data()函数可以查看到各种数据集
这里我们使用的是R软件自带的swiss数据集,这个数据集记录了瑞典1888年的生产力和其他各个社会经济指标的数据
首先对该数据集进行一个初步的了解
由运行结果可知该数据集有47行6列,每个变量都是数值型的
二、数据探索
1、数据质量分析
(1)缺失值分析:查看数据集中包含缺失值的记录数 sum(!complete.cases(swiss))
统计缺失值的个数 sum(is.na(swiss))
结果显示该数据集中没有缺失值,原因是因为该数据集是R自带的数据集,现实生活中我们的数据肯定是含有很多缺失值和异常值的,这时我们应该先对数据集有一个大致的了解,之后选择相应的处理办法。
(2)异常值分析:查看各个变量是否存在异常值,这里采用的是画箱型图的方式
box=boxplot(swiss)
由上图可知,Fertility中包含2个异常值,Education中包含4个异常值,Infant.Mortality中包含1个异常值,结合实际情况,把这些值都归为正常值。
实际生活中,建模的数据中会包含很多的缺失值和异常值,在建模之前,我们首先应该对这些值进行处理之后才能开始建模。
2、各个变量之间的相关性分析:
(1)图形法:画散点图观察各个变量之间的关系
画散点图的函数有很多,这里使用的是car包里面的scatterplotMatrix函数,该函数相比plot()添加了很多功能
(各种散点图函数的介绍:http://www.statmethods.net/graphs/scatterplot.html)
scatterplotMatrix(swiss,main="SWISS")
上图展示了各变量的密度图和各变量之间的散点图,有上图可知,Fertility和其他变量有相关性。
(2)计算相关系数: 这里用到的是psych包里面的 corr.test函数
有上图可知,在0.05的显著性水平下,Fertility和其他变量的线性相关性能通过显著性检验。
三、建模
lmswiss=lm(Fertility~Agriculture+Examination+Education+Catholic+Infant.Mortality,data=swiss)
summary(lmswiss)
上图显示Examination的系数通不过显著性检验,
所以用逐步回归
lm.step=step(lmswiss)
summary(lm.step)
四、模型的检验
1.拟合优度检验:上图显示,调整的R平方为67%,说明生产力的波动有67%可以有这些自变量解释
2.显著性检验:F检验的p值接近于0,回归方程具有显著性
3.回归系数的显著性检验:在0.05的显著性水平下,各回归系数都能通过显著性检验
4.残差分析
获得回归方程的残差值:lm.res=resid(lm.step)
(1)正态性检验:回归方程的残差必须服从均值为0的正态分布
用shapiro.test函数检验残差是否服从正态分布,原假设为:服从正态分布
上图显示,我们不能拒绝残差服从正态分布的假设
(2)异方差检验:残差的方差不能随着Y值的变化而变化
----画残差和拟合值的散点图
lm.res=resid(lm.step) #计算残差
lm.fit=predict(lm.step) #计算拟合值
散点图显示残差并没有随拟合值的变化而变化,而是随机的散落在X轴附近
----Breusch-Pagan 检验
----得分检验
2种检验的p值都大于0.05,说明残差不存在异方差
对于存在异方差的情况,我们可以使用WLS估计法(加权最小二乘法)、对数变换法等重新建立模型
(3)自相关检验
这里使用的函数是lmtest包里面的bgtest()函数
上图表明残差之间不存在自相关
在存在自相关的情况下,我们可以使用广义差分法消除自相关
5.变量之间无多重共线性
首先计算出自变量之间的相关系数:x=cor(swiss[2:6])
----求出变量相关系数x的特征值,如果某个特征值很小,或所有特征值的倒数之和为自变量数目的5倍以上,表明自变量间存在多重共线性
---用kappa函数检验多重共线性,如果值大于1000,说明变量之间存在严重的多重共线性
kappa值小于100,说明不存在多重共线性
逐步回归可以消除多重共线性的现象
R软件做线性回归分析相关推荐
- python二手房价格预测_Python爬取赶集网北京二手房数据R对爬取的二手房房价做线性回归分析...
前言:本文主要分为两部分:Python爬取赶集网北京二手房数据&R对爬取的二手房房价做线性回归分析.文章思路清晰,代码详细,特别适合刚刚接触Python&R的同学学习参考. Part1 ...
- Excel 2016 做线性回归分析【高尔顿数据集】与【Anscombe四重奏数据集】
目录 一.高尔顿数据集回归分析 1.1 父子身高(一元线性回归) 1.2 母子身高(一元线性回归) 1.3 多元线性回归方程 二.Anscombe四重奏数据集回归分析 三.总结 四.参考资料 根据上一 ...
- Excel做线性回归分析
Excel做线性回归分析 概要 一.身高体重线性分析 二.父母子女身高线性分析 1.母亲身高与子女的回归分析 2.父亲身高与子女的回归分析 3.结果分析 三.总结与参考资料 1.总结 2.参考资料 此 ...
- 用R进行多元线性回归分析建模
概念:多元回归分析预测法,是指通过对两个或两个以上的自变量与一个因变量的相关分析,建立预测模型进行预测的方法.当自变量与因变量之间存在线性关系时,称为多元线性回归分析. 下面我就举几个例子来说明一下 ...
- R语言与线性回归分析
文章目录 1. 原始数据的分析 2. 回归模型的拟合(参数估计和检验) 3. 变量选择 4. 回归诊断 5. 改进措施 6. 岭回归 8. 其他 基本假设:正态性.独立性.线性.同方差性 常用R包:c ...
- 用R进行一元线性回归分析建模
概念:一元线性回归预测是指成对的两个变量数据的散点图呈现出直线趋势时,采用最小二乘法,找到两者之间的经验公式,即一元线性回归预测模型.根据自变量的变化,来估计因变量变化的预测方法. 我用的是R内置数据 ...
- 基于Python和R的多元线性回归分析实例
文章目录 实验目的 实验内容 分析影响因变量Y的主要影响因素及经济意义 建立散点图考察Y与每一个自变量之间的相关关系 Python R语言 建立多元回归模型,并计算回归系数和统计量 Python R语 ...
- 【R】【线性回归分析实验】
文章目录 实验思维导图 1. 收集.探索和准备数据 1.1 收集数据 1.2 探索和准备数据 2. 基于数据训练模型 2.1 使用线性回归函数 2.2 建立模型 3. 评估模型的性能 4. 提高模型的 ...
- 使用eviews做线性回归分析
[b]Glossary:[/b] ls(least squares)最小二乘法 R-sequared样本决定系数(R2):值为0-1,越接近1表示拟合越好,>0.8认为可以接受,但是R2随因变量 ...
- Python Statistical model: 用Scipy做线性回归分析 (一步实现p value、标准差计算)
点赞发Nature 关注中Science p-value表示线性回归中的斜率.截距的显著性,p-value越小,表示得到的结果越显著. 之前我用curve fit的方法实现了线性函数的拟合,但是这有些 ...
最新文章
- 宏基因组-微生物组文章目录索引(1803)
- 浏览器左上角的小图标怎么整不掉_Honeyview:蜂蜜浏览器
- android开发分享到微信,Android开发之微信分享到好友,朋友圈(示例代码)
- thymeleaf 中文文档
- 集群e家:O2O电商服务平台上云
- ajax怎么发送数据给php,ajax怎么发送数据给php
- 和渠道商成为真朋友,CDEC大会做对了什么?
- azure云数据库_Microsoft Azure SQL数据库-分步创建教程
- java实现rabbitmq动态路由/话题模型(topic queues), 生产者 消费者 交换机 消息队列
- [SCOI2016]萌萌哒
- FISCO BCOS(五)———部署安装jdk1.8
- Office2016专业增强版与Visio2016专业版不能共存的解决办法
- 跨过野蛮生长的直播电商下一步该走向何方?
- 在职复习考研计算机408,考研初试复习经验分享(计算机408)
- 动态 Probit 模型及 Stata 实现
- ipad、iphone 怎么真机调试
- 【Java 8 新特性】Java Stream 通过min()和max()获取列表最小值和最大值
- REmap包介绍及使用
- matlab三维立体图
- HEVC编码器设计实战-梅奥-专题视频课程
热门文章
- JS 0.1+0.2的理解
- python求三重积分_三重积分的Python数值计算
- 计算机组装在线作业_1,中石油华东《计算机维护技术》2018年秋学期在线作业(三).doc...
- 前端学习路线(详细)
- 在编写网站的时候,给一个div设置背景图片,怎么让这个图片随着div大小的改变,而等比例的缩放。
- 【编程题】【Scratch一级】2019.12 小狗长大记
- 如何搭建IPv6测试你的APP
- idea创建maven项目失败, Failed to create a Maven project
- 黑帆第一季/全集Black Sails迅雷下载
- python输入一个人的名字_把一个人的名字分成名字和姓