查看原文
其他

数据分析中常见的七种回归分析以及R语言实现(一)--简单线性模型

2016-12-29 夏尔康 R语言中文社区

刚刚学习数据分析的人应该知道回归分析是作为预测用的一种模型,它主要是通过函数来表达因变量(连续值)和自变量变量的关系,通俗的来说就是Y和X的关系通过公式表达出来;这样能够表明因变量和自变量之间的显著关系并且是函数关系,还可以表明多个自变量对一个因变量的影响强度,回归分析主要运用在预测分析上,虽然说是预测,但是有时候我们的回归模型只是被用来解释现场,并不需要去预测,例如,科学家猜想人的体重和某种特定的食物消耗有关;

1、线性回归

在古典的线性回归模型中是要满足几个假定:

A假设自变量和因变量存在线性关系,具体的说就是假设因变量Y,是一些自变量X1,X2,..,XN的一个线性函数它的表达式

B零均值假定,就是假定回归线通过X与Y的条件均值组成的点;

C同方差假定,就是各个随机误差项的离散程度是相同的,也就是说对于每个X,随机项相对均值的分散程度是相同

D无自相关,就是随机扰动项之间是互不相关的,互补影响,也就是说随机扰动项是完全随机分布的

E因变量和扰动项是完全不相关的假定;

F扰动项正态性假定,就是假定扰动项服从均值为零,方差为司格马的正太分布 

其中回归模型的表达式写法如下

其中e是随机扰动项,也有写法是这样,Y=a+bX+e,其中a是截距项,b是斜率,e是随机扰动项;   



参数最优---最小二乘法

竟然存在参数,那么如何获取到最佳的参数呢,简单线性模型使用的普通最小二乘法,这里就不写明写详细步骤了,这个可以利用搜索引擎查的得到,我就说说它的主要思想就好,因为我们在拟合过程的时候我们要使回归线尽量靠近所有的样本点,这时候我们就要使它们残差尽量小,因为残差是有负有正,所以我们就采用平方去处理,采用平方和最小原则,通过求导,使其导数为零,求解得到最优的参数,这样就能够使回归模型应该使所有观察值的残差平方和最小;大致就是这样,文字描述有些吃力,有什么问题可以评论一起交流

R语言实践

这里我使用的我最近读和做笔记的R语言核心技术手册的包nutshell中的team.batting.00to08数据,这个数据是2000年到2008年棒球队的数据,我们想要看看棒球队的得分和每个变量的关系;

载入数据

library(nutshell)

data("team.batting.00to08")

查看数据的前六行


这就说明了数据已经被我们完全的载入进来了,也知道有多少个变量以及变量的名字,这时候我们要大体的知道一下大体的概括,这时候使用的summary()函数

summary(team.batting.00to08)


在棒球中RUNS就是球队的得分,时间是从2000年到2008年等

这时候想看看各个变量之间相关性如何

,粗劣的使用cor函数得到它们之间的相关系数矩阵,因为数据框存在字符,所以我们要提出第一第二列

cor(team.batting.00to08[,3:10])



大致可以判断的出来得分和跑动距离和全垒打(homerus)相关系数较大;

这里我们经常使用R语言里面的Lm函数去拟合以上变量,然后得到模型,然后使用summary()函数打印更多关于模型的信息

runs.lm <- lm(runs~singles+doubles+triples+homeruns+walks+hitbypitch+sacrificeflies+stolenbases+caughtstealing,data=team.batting.00to08)

summary(runs.lm)


从上图结果可以知道,R的可决系数是0.9114,模型F值较大,通过显著性检验,其中变量caughtstealing和stolenbases和runs不显著的关系,这个需要剔除;

我们可以手动剔除也可以使用step函数自动剔除

runs.lm_a <- lm(runs~singles+doubles+triples+homeruns+walks+hitbypitch+sacrificeflies,data=team.batting.00to08)

runs.lm_b<-step(runs.lm)


这个就讲到这里,这个下面几篇文章会讲到用什么方法得到这样的结果

参考文献代码

R语言核心技术手册


End


号外:12月29日周四晚,甲骨文公司商务智能资深技术顾问赵昌明主讲《Oracle大数据分析之数据探索在金融业的应用》

报名方式 :扫描下方二维码 | 阅读原文


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存