用R语言 做回归分析
使用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语言 做回归分析的更多相关文章
- R语言建立回归分析,并利用VIF查看共线性问题的例子
R语言建立回归分析,并利用VIF查看共线性问题的例子 使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与 ...
- R语言 逐步回归分析
逐步回归分析是以AIC信息统计量为准则,通过选择最小的AIC信息统计量,来达到删除或增加变量的目的. R语言中用于逐步回归分析的函数 step() drop1() add1() #1.载 ...
- [译]用R语言做挖掘数据《四》
回归 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...
- R语言做相关性分析
衡量随机变量相关性的方法主要有三种:pearson相关系数,spearman相关系数,kendall相关系数: 1. pearson相关系数,亦即皮尔逊相关系数 pearson相关系数用来 ...
- [译]用R语言做挖掘数据《七》
时间序列与数据挖掘 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用 ...
- [译]用R语言做挖掘数据《六》
异常值检测 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...
- [译]用R语言做挖掘数据《五》
介绍 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...
- [译]用R语言做挖掘数据《三》
决策树和随机森林 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到 ...
- [译]用R语言做挖掘数据《二》
数据探索 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...
随机推荐
- 用RequireJS优化Wijmo Web页面
用RequireJS优化Wijmo Web页面 上周Wijmo 2014 V2版本刚刚发布(下载地址), 有网友下载后发现仅仅使用了40个Widgets的一小部分,还需要加载全部的jquery.wi ...
- validate大表单验证
Vaidate 插件 在前端开发中, 我们会遇到大表单的验证和组合成JSON, 这是一项巨大的任务, 如果都通过 手动编写低级代码来实现 50+ input类型的验证和复杂JSON的组装, 这无疑是异 ...
- Back to High School Physics - UVa10071
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/uva10071.html 题目描述 Pr ...
- C#中一些易混淆概念总结
C#中一些易混淆概念 这几天一直在复习C#基础知识,过程中也发现了自己以前理解不清楚和混淆的概念.现在给大家分享出来我的笔记: 一,.NET平台的重要组成部分都是有哪些 1)FCL (所谓的.NET框 ...
- 【GitHub】在Mac上配置/使用Github
以前一直听说过Github,但是自己一直不会用.最近不是太忙,于是想捣鼓捣鼓Github,没想到用了将近3个小时,才在Mac上配置成功. 首先简单介绍一下Git和Github 集中化的版本控制系统( ...
- Day1:T3 bfs T4 树形DP
T3:BFS 回看了一下Day1的T3...感觉裸裸的BFS,自己当时居然没有看出来... 同时用上升和下降两种状态bfs即可 这一题还要注意一个细节的地方,就是题目要求的是求往返的最优解 k=min ...
- Asp.Net Web API 2(入门)第一课
Asp.Net Web API 2(入门)第一课 前言 Http不仅仅服务于Web Pages.它也是一个创建展示服务和数据的API的强大平台.Http是简单的.灵活的.无处不在的.你能想象到几乎 ...
- seajs代码
打包并压缩seajs代码 背景 seajs是一款优秀的模块开发插件,但是当我们使用它来进行模块化开发的时候,由于它的每个模块的加载都会进行一次http请求,那么当模块数量倍增的时候,会拖慢页面的加载速 ...
- 长度为n的数组,有一个数重复出现了n/2+1次,找出(三种方法)
问题: 长度为n的数组,有一个数重复出现了n/2+1次,找出这个数: 解决: 比较直接的思路是遍历每个元素,让其与剩下其他元素比较,相等一次计数器sum++,直到sum=n/2+1为止: #inc ...
- 使ie6的漂浮栏滑动右侧滚动条的时候不抖动
body {_background-attachment: fixed;}html {_background-image: url(about:blank);}