使用R做回归分析整体上是比较常规的一类数据分析内容,下面我们具体的了解用R语言做回归分析的过程。

首先,我们先构造一个分析的数据集

x<-data.frame(y=c(102,115,124,135,148,156,162,176,183,195),
var1=runif(10,min=1,max=50),
var2=runif(10,min=100,max=200),
var3=c(235,321,412,511,654,745,821,932,1020,1123))

接下来,我们进行简单的一元回归分析,选择y作为因变量,var1作为自变量。

一元线性回归的简单原理:假设有关系y=c+bx+e,其中c+bx 是y随x变化的部分,e是随机误差。可以很容易的用函数lm()求出回归参数b,c并作相应的假设检验。

model<-lm(y~var1,data=x)
summary(model)

Call:

lm(formula = x$y ~ x$var1 + 1)

Residuals:

Min 1Q Median 3Q Max

-47.630 -18.654 -3.089 21.889 52.326

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 168.4453 15.2812 11.023 1.96e-09 ***

x$var1 -0.4947 0.4747 -1.042 0.311

Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 30.98 on 18 degrees of freedom

Multiple R-squared: 0.05692, Adjusted R-squared: 0.004525

F-statistic: 1.086 on 1 and 18 DF, p-value: 0.3111

从回归的结果来看,p值为0.311,变量var1不不显著,正常情况下p值小于0.05则认为有高的显著性水平。

另外,R方位0.05692 距离1太远,说明两者之间不存在相关性。

我们进一步也对,y和var3做线性回归分析

model<-lm(y~var3,data=x)
summary(model)

Call:

lm(formula = y ~ var3, data = x)

Residuals:

Min 1Q Median 3Q Max

-3.0805 -0.9080 0.6566 1.0255 2.1451

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 81.431990 1.399442 58.19 8.45e-12 ***

var3 0.100632 0.001902 52.92 1.80e-11 ***

Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.73 on 8 degrees of freedom

Multiple R-squared: 0.9972, Adjusted R-squared: 0.9968

F-statistic: 2801 on 1 and 8 DF, p-value: 1.802e-11

从结果来看,常数项和var3的显著性水平都非常理想,同事R方达到0.99,整个模型的拟合度很高,可以说明两者间存在强的线性相关。

接下来,我们可以利用这个模型做些预测

pre<-data.frame(var3=c(56,36))
predict(model,pre,interval="prediction",level=0.95) fit lwr upr

1 87.06737 82.07491 92.05983

2 85.05474 80.01387 90.09560

以上是预测结果

接下来,我们进一步了解下多元线性回归,多元线性回归是在y与多个自变量之间建立模型,寻找他们之间的线性关系。

在多元回归分析过程中,由于我们不知道因变量和那几个自变量之间存在线性关系,如果一个一个的检验,整个过程将变得非常繁琐。

好在R中有自动进行逐步回归的函数,我们只要根据函数运行结果,选择合适模型,并检验各项参数就可以了。

接下来,看下具体的步骤,还是以之前的数据集作为分析样本,我们来了解下,如何进行逐步回归分析

model<-lm(y~.,data=x)
summary(model)

Call:

lm(formula = y ~ ., data = x)

Residuals:

Min 1Q Median 3Q Max

-2.6684 -1.0831 0.5114 1.1158 2.3292

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 83.620109 5.047503 16.567 3.08e-06 ***

var1 -0.028906 0.057383 -0.504 0.632

var2 -0.009072 0.027438 -0.331 0.752

var3 0.100484 0.002414 41.621 1.29e-08 ***

Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.936 on 6 degrees of freedom

Multiple R-squared: 0.9973, Adjusted R-squared: 0.996

F-statistic: 745.2 on 3 and 6 DF, p-value: 4.191e-08

这里我们对y与所有自变量进行回归的结果来看,var1和var2的效果不显著,var3的显著性水平较高,说明这个模型并不是最优解。

mstep<-step(model)

Start: AIC=16.11

y ~ var1 + var2 + var3

   Df Sum of Sq    RSS    AIC
  • var2 1 0.4 22.9 14.286
  • var1 1 1.0 23.4 14.520

    22.5 16.105
  • var3 1 6493.5 6516.0 70.794

Step: AIC=14.29

y ~ var1 + var3

   Df Sum of Sq    RSS    AIC
  • var1 1 1.0 23.9 12.727

    22.9 14.286
  • var3 1 8136.6 8159.5 71.044

Step: AIC=12.73

y ~ var3

   Df Sum of Sq    RSS    AIC

23.9 12.727

  • var3 1 8378.5 8402.4 69.337

从结果的AIC现象来看,最后一个只有y和var3进行回归时,AIC值最小,(注:逐步回归过程中,AIC值越小,说明模型的拟合度越好)

依据这个信息我们就可以建立模型model<-lm(y~var3,data=x)

当然,由于数据集的相对比较简单的关系,这里逐步回归的结果比较明显,现实的情况可能更为复杂,需要我们进行进一步的检验以及手动剔除参数等操作。

用R语言 做回归分析的更多相关文章

  1. R语言建立回归分析,并利用VIF查看共线性问题的例子

    R语言建立回归分析,并利用VIF查看共线性问题的例子 使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与 ...

  2. R语言 逐步回归分析

    逐步回归分析是以AIC信息统计量为准则,通过选择最小的AIC信息统计量,来达到删除或增加变量的目的. R语言中用于逐步回归分析的函数 step()    drop1()     add1() #1.载 ...

  3. [译]用R语言做挖掘数据《四》

    回归 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...

  4. R语言做相关性分析

    衡量随机变量相关性的方法主要有三种:pearson相关系数,spearman相关系数,kendall相关系数: 1.       pearson相关系数,亦即皮尔逊相关系数 pearson相关系数用来 ...

  5. [译]用R语言做挖掘数据《七》

    时间序列与数据挖掘 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用 ...

  6. [译]用R语言做挖掘数据《六》

    异常值检测 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...

  7. [译]用R语言做挖掘数据《五》

    介绍 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...

  8. [译]用R语言做挖掘数据《三》

    决策树和随机森林 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到 ...

  9. [译]用R语言做挖掘数据《二》

    数据探索 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...

随机推荐

  1. 数据结构二叉树的java实现,包括二叉树的创建、搜索、删除和遍历

    根据自己的学习体会并参考了一些网上的资料,以java写出了二叉树的创建.搜索.删除和遍历等操作,尚未实现的功能有:根据先序和中序遍历,得到后序遍历以及根据后序和中序遍历,得到先序遍历,以及获取栈的深度 ...

  2. 2014.3.4-C语言学习小结

    位操作: 知识点: 1.位运算符 2.位移运算符 1.将指定位设置为12.将指定位设置为03.获取指定位的内容 ==========================复习二进制 1.二进制转换 10-- ...

  3. 在线预览PDF

    FlexPaper+SWFTool+操作类=在线预览PDF   引言 由于客户有在线预览PDF格式的需求,在网上找了一下解决方案,觉得FlexPaper用起来还是挺方便的,flexpaper是将pdf ...

  4. linux网卡驱动安装及锐捷使用

    原创博文,转载请注明出处 先吐槽一下,以前装了个Centos win7双系统, 然后手贱一不小心把启动文件给删了,接下来就用grub恢复启动文件,整了一天也没搞出来还把win7的Boot Manage ...

  5. Linux环境进程间通信(二):信号(下)

    linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...

  6. .Net 异步随手记(二)

    Task.ContinueWith 这货,和 await 一样有“陷阱”.^^,因为写 ContinueWith 不能直观如人的“过程性”思维,写在 ContinueWith 括号里的部分不一定只在发 ...

  7. LinqToXml高级用法介绍

    LinqToXml高级用法介绍 一.函数构造 什么是函数构造?其是指通过单个语句构建XML树的能力. 那么它有什么作用呢? 作用1.用单个表达式快速创建复杂的XML树 见实例代码CreateXml( ...

  8. C# 对象池的实现

    C# 对象池的实现 对象池服务可以减少从头创建每个对象的系统开销.在激活对象时,它从池中提取.在停用对象时,它放回池中,等待下一个请求.我们来看下主线程中,如何与对象池打交道: static void ...

  9. C#代码搜索器

    WEBUS2.0 In Action - [源代码] - C#代码搜索器 最近由于工作的需要, 要分析大量C#代码, 在数万个cs文件中搜索特定关键词. 这是一项非常耗时的工作, 用Notepad++ ...

  10. CentOS_6.5_x64:VNC安装配置

    1.安装软件前首先检查下系统是否已经安装了这个软件:rpm -qa tigervnc-server 2.根据前面命令的查询,显示系统还是没有安装VNC服务器端软件,那么我们就使用命令进行安装一下:yu ...