前言:本次建模过程是基于RedHat6.8或者CentOS6.8,R3.1.2,Rstudio-server
关于R3.1.2,Rstudio-server的整个配置,原始数据(已经脱敏处理,不涉及泄密,如有侵权,请随时联系)以及本分析的源码均放置在GitHub上,通过click here访问

数据导入:

#install essential packages
install.packages("rJava",dependencies=TRUE)
install.packages("xlsx",dependencies=TRUE)
install.packages("corrplot",dependencies=TRUE)
install.packages("leaps",dependencies=TRUE)
install.packages("lmtest",dependencies=TRUE)library(rJava)
#setting workstation
setwd("/home/steven/workstation")
#source data loaded
library(xlsx)
src <- read.xlsx("/usr/local/workstation/test.xls",1,encoding="UTF-8")

数据处理:

#drop columns that is useless
src <- src[,-c(1)]
src <- src[,c(1:6,8:10,7)]
#1、description statistic
attach(src)
names(src)
mean=sapply(src,mean)
max=sapply(src,max)
min=sapply(src,min)
median=sapply(src,median)
sd=sapply(src,sd)
cbind(mean,max,min,median,sd)

建立回归模型步骤:


#1、参数全部默认情况下的相关系数图
#混合方法之上三角为圆形,下三角为黑色数字
library(corrplot)corr <- cor(src[,1:10])
corrplot(corr = corr,order="AOE",type="upper",tl.pos="tp")
corrplot(corr = corr,add=TRUE, type="lower", method="number",order="AOE", col="black",diag=FALSE,tl.pos="n", cl.pos="n")

输出结果如下:

1.                mean         max        min      median           sd
rs      1211.924227  14000.0000    10.0000   980.00000 1.595892e+03
cs         1.168495      6.0000     0.0000     1.00000 1.471799e+00
area       7.045862     11.0000     1.0000     7.00000 3.168251e+00
type       1.588235      2.0000     1.0000     2.00000 4.923985e-01
cg         2.251246      3.0000     1.0000     3.00000 9.289564e-01
h          1.395813      2.0000     1.0000     1.00000 4.892685e-01
tjg     7843.554775   8454.1182  6909.4630  8092.36154 3.942006e+02
ggjg   14147.557328  16600.0000 11700.0000 14600.00000 1.015608e+03
yyjg      94.608809    106.6788    86.6484    95.00923 3.467941e+00
target 29893.998495 145085.0000     4.9000 27700.00000 1.939754e+04
#1、参数全部默认情况下的相关系数图
#混合方法之上三角为圆形,下三角为黑色数字
library(corrplot)corr <- cor(src[,1:10])
corrplot(corr = corr,order="AOE",type="upper",tl.pos="tp")
corrplot(corr = corr,add=TRUE, type="lower", method="number",order="AOE", col="black",diag=FALSE,tl.pos="n", cl.pos="n")

结果如下:

#2.画相关图选择回归方程的形式
plot(target~cg);abline(lm(target~cg))
plot(target~h);abline(lm(target~h))
plot(target~type);abline(lm(target~type))
plot(target~tjg);abline(lm(target~tjg))
plot(target~ggjg);abline(lm(target~ggjg))
plot(target~area);abline(lm(target~area))
plot(target~cs);abline(lm(target~cs))
plot(target~yyjg);abline(lm(target~yyjg))
plot(target~rs);abline(lm(target~rs))



#3.do regression and check results
dim(src)[1]
lm.test<-lm(target~rs+cs+area+type+cg+h+tjg+ggjg+yyjg,data=src)
summary(lm.test)

结果如下:


Residuals:
   Min     1Q Median     3Q    Max
-45689  -8172   -999   5979  90290 Coefficients:
              Estimate Std. Error t value Pr(>|t|)
(Intercept)  9.678e+04  1.487e+04   6.507 1.22e-10 ***
rs           9.556e-02  2.643e-01   0.362  0.71777
cs          -5.617e+02  2.887e+02  -1.946  0.05195 .
area         2.137e+02  1.390e+02   1.537  0.12463
type        -3.414e+04  4.309e+03  -7.923 6.20e-15 ***
cg          -1.846e+03  2.136e+03  -0.864  0.38776
h            1.336e+04  1.158e+03  11.535  < 2e-16 ***
tjg         -1.198e+01  2.460e+00  -4.868 1.31e-06 ***
ggjg         7.148e+00  1.079e+00   6.625 5.66e-11 ***
yyjg        -3.731e+02  1.280e+02  -2.916  0.00363 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 12980 on 993 degrees of freedom
Multiple R-squared:  0.5564,    Adjusted R-squared:  0.5523
F-statistic: 138.4 on 9 and 993 DF,  p-value: < 2.2e-16
#4.delete variable which is not significant(rs,area)
lm.test<-lm(target~cs+type+cg+h+tjg+ggjg+yyjg,data=src)
summary(lm.test)
Residuals:
   Min     1Q Median     3Q    Max
-46131  -8655  -1038   5716  91466 Coefficients:
              Estimate Std. Error t value Pr(>|t|)
(Intercept) 101636.162  14537.438   6.991 4.99e-12 ***
cs            -572.037    288.600  -1.982  0.04774 *
type        -34143.617   4296.236  -7.947 5.14e-15 ***
cg           -1815.420   2127.549  -0.853  0.39370
h            12995.825   1132.191  11.478  < 2e-16 ***
tjg            -12.728      2.411  -5.279 1.59e-07 ***
ggjg             7.474      1.058   7.068 2.96e-12 ***
yyjg          -389.096    127.090  -3.062  0.00226 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 12980 on 995 degrees of freedom
Multiple R-squared:  0.5553,    Adjusted R-squared:  0.5522
F-statistic: 177.5 on 7 and 995 DF,  p-value: < 2.2e-16
#4.1.use residual analysis delete outlier points
plot(lm.test,which=1:4)
src = src[-c(12,765,788,790),]
dim(src)[1]

结果如下:



得到的四个图依次为:
4.1普通残差与拟合值的残差图
4.2正态QQ的残差图(若残差是来自正态总体分布的样本,则QQ图中的点应该在一条直线上)
4.3标准化残差开方与拟合值的残差图(对于近似服从正态分布的标准化残差,应该有95%的样本点落在[-2,2]的区间内。这也是判断异常点的直观方法)
4.4cook统计量的残差图(cook统计量值越大的点越可能是异常值,但具体阀值是多少较难判别)

从图中可见,12,765,788,790三个样本存在异常,需要剔除。
Residuals:
   Min     1Q Median     3Q    Max
-46131  -8655  -1038   5716  91466 Coefficients:
              Estimate Std. Error t value Pr(>|t|)
(Intercept) 101636.162  14537.438   6.991 4.99e-12 ***
cs            -572.037    288.600  -1.982  0.04774 *
type        -34143.617   4296.236  -7.947 5.14e-15 ***
cg           -1815.420   2127.549  -0.853  0.39370
h            12995.825   1132.191  11.478  < 2e-16 ***
tjg            -12.728      2.411  -5.279 1.59e-07 ***
ggjg             7.474      1.058   7.068 2.96e-12 ***
yyjg          -389.096    127.090  -3.062  0.00226 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 12980 on 995 degrees of freedom
Multiple R-squared:  0.5553,    Adjusted R-squared:  0.5522
F-statistic: 177.5 on 7 and 995 DF,  p-value: < 2.2e-16
#5.异方差检验
#5.1GQtest,H0(误差平方与自变量,自变量的平方和其交叉相都不相关),
#p值很小时拒绝H0,认为上诉公式有相关性,存在异方差
src.test<-residuals(lm.test)
library(lmtest)
gqtest(lm.test)#5.2BPtest,H0(同方差),p值很小时认为存在异方差
bptest(lm.test)

结果如下:

Goldfeld-Quandt testdata:  lm.test
GQ = 1.841, df1 = 494, df2 = 493, p-value = 8.865e-12
---------
studentized Breusch-Pagan testdata:  lm.test
BP = 93.9696, df = 7, p-value < 2.2e-16

两个检验的p值都很小时认为存在异方差,需要修正异方差


#6.修正异方差
#修正的方法选择FGLS即可行广义最小二乘
#6.1修正步骤
#6.1.1将y对xi求回归,算出res--u
#6.1.2计算log(u^2)
#6.1.3做log(u^2)对xi的辅助回归 log(u^2),得到拟合函数g=b0+b1x1+..+b2x2
#6.1.4计算拟合权数1/h=1/exp(g),并以此做wls估计lm.test2<-lm(log(resid(lm.test)^2)~cs+type+cg+h+tjg+ggjg+yyjg,data=src)
lm.test3<-lm(target~cs+type+cg+h+tjg+ggjg+yyjg,weights=1/exp(fitted(lm.test2)),data=src)
summary(lm.test3)

结果如下:

Weighted Residuals:
    Min      1Q  Median      3Q     Max
-5.0707 -1.3281 -0.2952  1.0471  9.3937 Coefficients:
              Estimate Std. Error t value Pr(>|t|)
(Intercept)  61648.563  13382.003   4.607 4.62e-06 ***
cs            -320.525    153.174  -2.093   0.0366 *
type        -26556.135   4766.749  -5.571 3.26e-08 ***
cg           -4653.887   2430.178  -1.915   0.0558 .
h            11107.677    692.499  16.040  < 2e-16 ***
tjg            -14.767      2.224  -6.638 5.20e-11 ***
ggjg             7.919      1.049   7.548 9.96e-14 ***
yyjg            97.193    133.864   0.726   0.4680
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 1.868 on 995 degrees of freedom
Multiple R-squared:  0.7178,    Adjusted R-squared:  0.7159
F-statistic: 361.6 on 7 and 995 DF,  p-value: < 2.2e-16
#7.1计算解释变量相关稀疏矩阵的条件数k,k<100多重共线性程度很小,100<k<1000较强,>1000严重
src[1:9]
XX<-cor(src[1:9])
kappa(XX)

结果如下:

[1] 160.9175

K>100 and K<1000,说明共线性较强,接下来找出共线性强的变量

$values
[1] 3.4192494 1.3030312 1.1563047 0.9199288 0.9041041 0.7562702 0.4205589 0.1011783
[9] 0.0193744$vectors[,1]         [,2]       [,3]        [,4]        [,5]         [,6][1,] -0.05733512 -0.501899822  0.2026552 -0.50588080  0.52056535 -0.417997886[2,] -0.14763837  0.007109461  0.4116265 -0.46530338 -0.75069812 -0.163284493[3,] -0.05138859  0.665302345 -0.1293286 -0.01422961  0.11408507 -0.699971313[4,]  0.49655847 -0.112090220 -0.1278988  0.02167963 -0.16337262 -0.239671005[5,]  0.46448785 -0.167719865 -0.2352263  0.06705893 -0.20715145 -0.265202906[6,]  0.40186335 -0.218262940 -0.2471633 -0.09210826 -0.11794142  0.001433268[7,]  0.40615453  0.174700538  0.5215318  0.06040287  0.12878909  0.132238544[8,]  0.40635458  0.274603051  0.4469450 -0.07777933  0.20683789  0.127659436[9,] -0.13555751 -0.333404886  0.4101634  0.71008868 -0.09781406 -0.383530067[,7]         [,8]         [,9][1,] -0.02888533  0.034061964 -0.010937600[2,]  0.03865752 -0.008224625 -0.020908812[3,]  0.16651561  0.084133996  0.004735702[4,] -0.30629410 -0.209415519  0.708684433[5,] -0.36523446  0.094446587 -0.663876582[6,]  0.83587224  0.093172922  0.004206256[7,] -0.04882043  0.695383719  0.094120334[8,]  0.10362759 -0.660605287 -0.217813589[9,]  0.17586069 -0.101388052 -0.011659019
#8.修正多重共线性---逐步回归法
#ps2:step中可进行参数设置:
#direction=c("both","forward","backward")来选择逐步回归
#的方向,默认both,forward时逐渐增加解释变两个数,backward则相反。
step(lm.test)

结果如下:

Start:  AIC=19007.25
target ~ cs + type + cg + h + tjg + ggjg + yyjgDf  Sum of Sq        RSS   AIC
- cg    1 1.2269e+08 1.6778e+11 19006
<none>               1.6766e+11 19007
- cs    1 6.6200e+08 1.6832e+11 19009
- yyjg  1 1.5794e+09 1.6924e+11 19015
- tjg   1 4.6960e+09 1.7235e+11 19033
- ggjg  1 8.4171e+09 1.7608e+11 19054
- type  1 1.0643e+10 1.7830e+11 19067
- h     1 2.2201e+10 1.8986e+11 19130

Step:  AIC=19005.98
target ~ cs + type + h + tjg + ggjg + yyjgDf  Sum of Sq        RSS   AIC
<none>               1.6778e+11 19006
- cs    1 5.9084e+08 1.6837e+11 19008
- yyjg  1 1.5277e+09 1.6931e+11 19013
- tjg   1 5.3779e+09 1.7316e+11 19036
- ggjg  1 1.2972e+10 1.8075e+11 19079
- h     1 2.2083e+10 1.8986e+11 19128
- type  1 1.5438e+11 3.2216e+11 19658

Call:
lm(formula = target ~ cs + type + h + tjg + ggjg + yyjg, data = src)Coefficients:
(Intercept)           cs         type            h          tjg         ggjg  99781.026     -533.902   -37652.525    12909.485      -13.222        7.941  yyjg  -381.819  

所以最终入选的变量是:formula = target ~ cs + type + h + tjg + ggjg + yyjg

R语言采用多元回归建模的基本步骤相关推荐

  1. R语言采用优化方法拟合曲线并计算AIC,BIC,LRT

    文章目录 前言 一.R代码实现 1.导入库 2.随机生成原始数据 3.RMSD 4.梯度下降 5.最大似然估计 6.做出优化后图像 7.求AIC,BIC 8.求LRT 二.运行结果 1.图像输出 2. ...

  2. 『R语言Python』建模前的准备:连续型与离散型变量探索,离散型变量转为虚拟变量

    在建立模型之前,我们常要先对数据的类型作出判断,连续型数据可以不做处理,而离散型数据则可能需要转为虚拟变量.下文使用R语言中的经典数据集 mtcarsmtcarsmtcars 进行演示 Python: ...

  3. R语言语法及建模合集

    点击下列超链接可进入博客: 一.语法篇: R语言常用包分类 R语言数据导入导出总结 R语言数据探索功能总结 R语言中的离群点检测方法 R语言中的向量使用合集 R语言中的因子类型 R语言中的对象以及它的 ...

  4. 使用R语言进行决策树建模

    关于决策树的理解及自定义代码实现请参考我的另一个博客: 数据挖掘常用算法理解与R语言实现(系列待完成) 本次技能点: 训练集和测试集的选取 决策树构建与减值 决策树的print和plot 预测值与实际 ...

  5. 时间序列模型R语言实现-批量建模,预测(ARIMA, 随机森林)

    时间序列预测首先要确定预测的内容. 本文预测共享单车的日租借量 使用的是每日数据 预测的时间范围是需要提前一个月.半年还是一年?根据预测范围,会使用到不同的模型. 首先安装加载本文所需要的包 inst ...

  6. R语言入门——多元回归交叉验证的实现

    目录 引言 1.主要函数编写 1.1 随机数据的产生 1.2 CV.lm的编写 1.2 CV.lm的调用 2.数值模拟 2.1 CV模拟 2.2 MCMC模拟 3.总结 引言 随着模型复杂度的提高和数 ...

  7. R语言tidyverse数据处理建模案例

    管道%>% 左连接left_join() 筛选行 filter(条件) 行排序arrange() 选择列select() 修改(计算)列mutate() 分组汇总group_by().%> ...

  8. pvrect r语言 聚类_R语言一条命令实现基于样本和距离的聚类分析

    上一篇文章给大家介绍了利用 R语言的 hclust()进行聚类分析的步骤,已经很简单了,但是依然有不少小伙伴来问 "老师,还有更简单的方法吗,最好是一条命令那种",为了满足的大家的 ...

  9. python调用r语言加载包错误_Python调用R语言

    网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不 ...

最新文章

  1. RDB 和 AOF 持久化的原理是什么?我应该用哪一个?它们的优缺点?
  2. 卷积神经网络(CNN)简介
  3. Paddle中的自动微分功能测试
  4. 阿里巴巴DevOps实践指南 | 为什么DevOps的必然趋势是BizDevOps?
  5. 第六章:Java_异常处理
  6. 信息学奥赛一本通(1410:最大质因子序列)
  7. 初始化参数之memory_target
  8. (十六)K-Means聚类
  9. 按要求编写Java程序(阶乘)
  10. 鸿蒙系统电脑模拟运行,安卓游戏在鸿蒙运行被识别为PC端模拟器,鸿蒙生态依然欠缺!...
  11. 会员测试环境治理之路
  12. 计算机全键在线使用说明书,最全的电脑键盘所有键的功能说明,建议收藏!
  13. QQ2009SP5和SP6后台会疯狂的访问qqlogo.qq.com:80
  14. matlab中axis square与axis equal区别
  15. Assert.assertNotNull()断言是否是空
  16. 安全断路器市场现状及未来发展趋势分析
  17. 水晶报表的中文版下载
  18. 一个清华大学生几天猎头生活的感想---很有感触的一篇文章(zz)
  19. 效率源希捷自校准配套专修软件 v1.0 绿色
  20. java判断日期是否节假日_java 判断日期是否是节假日

热门文章

  1. HM2101NL车规级隔离变压器的哪里经销
  2. thymeleaf入门基础语法笔记
  3. 软件工程概论学习进度表第一周
  4. 阿里云虚拟主机使用.htaccess绑定多域名多网站
  5. html设编码为中文简体,node.js将html字符实体编码转化成可识别的简体中文汉字
  6. java设计person类_定义一个Person类,含姓名、性别、年龄等字段;继承Person类设计...
  7. 中国喷管装置市场趋势报告、技术动态创新及市场预测
  8. 9个高效学习方法,MAX你的工作效率
  9. WiFi的一些连接信息
  10. java 声音技术浅析