文章目录

  • 普通最小二乘回归(OLS)
    • 简单线性回归
    • 多项式回归
    • 多元线性回归
  • 回归诊断
    • 标准方法
    • QQ图正态性检验
    • 残差图
    • 误差的独立性
    • 成分残差图(偏残差图) 线性
    • 同方差性
    • 线性模型假设综合验证
    • 异常观测值
      • 高杠杆值
      • 强影响点
      • 变量添加图
      • 气泡图
    • 选择最佳模型
      • 逐步回归
      • 全子集回归
      • k重交叉验证
      • 相对重要性

普通最小二乘回归(OLS)

OLS回归是通过预测变量的加权和来预测量化的因变量

简单线性回归

fit <- lm(weight~height,data = women)
summary(fit)     ## 模型拟合结果
fitted(fit)      ## 模型的拟合值
residuals(fit)   ## 拟合模型的残差plot(women$height,women$weight,  ## 简单做图xlab = "Height",ylab = "Weight")
abline(fit)
anova(fit)   ##生成拟合模型的方差分析表

多项式回归

fit <- lm(weight~height+I(height^2),data = women)  ## 一元二次回归
summary(fit)plot(women$height,women$weight,  ## 简单做图xlab = "Height",ylab = "Weight")
lines(women$height,fitted(fit))fit <- lm(weight~height+I(height^2)+I(height^3),data = women)  ## 一元三次回归
summary(fit)
library(car)
scatterplot(weight~height,data = women,spread=FALSE,smoother.arg=list(lty=2),pch=19,main="Women Age 30-39",xlab = "Height",ylab = "Weight")

多元线性回归

state <- as.data.frame(state.x77[,c(5,1,3,2,7)])
cor(state)
library(car)scatterplotMatrix(state,spread=FALSE,smoother.args=list(lty=2),main="Scatter Plot Matrix")fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)  ## 多元回归
summary(fit)fit <- lm(mpg~hp+wt+hp:wt,data = mtcars)  ##有显著交互的回归
summary(fit)library(effects)plot(effect("hp:wt",fit,,list(wt=c(2.2,3.2,4.2))),mutiline=TRUE)confint(fit)

回归诊断

标准方法

fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)par(mfrow=c(2,2))
plot(fit)


左上表示残差分布图
右上表示正态分布检验,落在线上表示符合正态分布
左下表示方差齐性检验,随机分布则表示方差齐性
右下是残差与杠杆图,表示可以从中鉴别离群点、高杠杆点和强影响点

QQ图正态性检验

library(car)fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)
par(mfrow=c(1,1))
qqPlot(fit)

残差图

fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)residplot <- function(fit,nbreaks=10){z <- rstudent(fit)hist(z,breaks = nbreaks,freq = FALSE,xlab = "Studentized Residual",main = "Distribution of Errors")rug(jitter(z),col = "brown")curve(dnorm(x,mean = mean(z),sd=sd(z)),add = TRUE,col="blue",lwd=2)lines(density(z)$x,density(z)$y,col="red",lwd=2,lty=2)legend("topright",legend = c("Normal Curve","Kernel Density Curve"),lty = 1:2,col = c("blue","red"),cex = .7)
}
residplot(fit)

误差的独立性

fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)
durbinWatsonTest(fit)

成分残差图(偏残差图) 线性

library(car)
fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)
crPlots(fit)


线性模型对该模型似乎是合适的

同方差性

library(car)
fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)ncvTest(fit)
spreadLevelPlot(fit)

线性模型假设综合验证

library(gvlma)
fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)gvmodel <- gvlma(fit)
summary(gvmodel)

异常观测值

library(car)fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)
outlierTest(fit)

高杠杆值

library(car)fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)hat.plot <- function(fit){p <- length(coefficients(fit))n <- length(fitted(fit))plot(hatvalues(fit),main = "Index Plot of Hat Value")abline(h=c(2,3)*p/n,col="red",lty=2)identify(1:n,hatvalues(fit),names(hatvalues(fit)))
}
hat.plot(fit)

强影响点

library(car)fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)cutoff <- 4/(nrow(state)-length(fit$coefficients)-2)
plot(fit,which = 4,cook.levels = cutoff)
abline(h=cutoff,lty=2,col="red")

变量添加图

library(car)fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)avPlots(fit,ask=FALSE,id.method="identity")

气泡图

library(car)fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)
summary(fit)influencePlot(fit,id.method="identity",main="Influence Plot",sub="Circle size is proportional to Cook's distance")

选择最佳模型

fit1 <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)fit2 <- lm(Murder~Population+ Illiteracy,data = state)anova(fit1,fit2)AIC(fit1,fit2)  ## Aic 方法

逐步回归

library(MASS)fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)stepAIC(fit,direction = "backward")

全子集回归

library(leaps)fit <- lm(Murder~Population+ Illiteracy+Income+Frost,data = state)leaps <- regsubsets(Murder~Population+ Illiteracy+Income+Frost,data = state,nbest = 4)plot(leaps,scale = "adjr2")library(car)subsets(leaps,statistic = "cp",main="Cp Plot for All Subsets Regression")
abline(1,1,lty=2,col="red")

k重交叉验证


shrinkage <- function(fit, k=10){require(bootstrap)theta.fit <- function(x,y){lsfit(x,y)}theta.predict <- function(fit,x){cbind(1,x)%*%fit$coef}x <- fit$model[,2:ncol(fit$model)]y <- fit$model[,1]results <- crossval(x, y, theta.fit, theta.predict, ngroup=k)r2 <- cor(y, fit$fitted.values)^2r2cv <- cor(y, results$cv.fit)^2cat("Original R-square =", r2, "\n")cat(k, "Fold Cross-Validated R-square =", r2cv, "\n")cat("Change =", r2-r2cv, "\n")
}
states <- as.data.frame(state.x77[, c("Murder", "Population", "Illiteracy", "Income", "Frost")])
fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data = states)
fit2<-lm(Murder~Population+Illiteracy,data=states)
shrinkage(fit)
shrinkage(fit2)#R平方减少得越少,预测则越精确。

相对重要性


states <- as.data.frame(state.x77[,c("Murder", "Population","Illiteracy", "Income", "Frost")])
zstates <- as.data.frame(scale(states))
#scale()函数将数据标准化为均值为0、标准差为1的数据集,这样用R回归即可获得标准化的回归系数。
#(注意,scale()函数返回的是一个矩阵,而lm()函数要求一个数据框,你需要用一个中间步骤来转换一下。
zfit <- lm(Murder~Population + Income + Illiteracy + Frost, data=zstates)
coef(zfit)#Illiteracy是最重要的预测变量,而Frost是最不重要的
#相对重要性~相对权重法
relweights <- function(fit,...){R <- cor(fit$model)nvar <- ncol(R)rxx <- R[2:nvar, 2:nvar]rxy <- R[2:nvar, 1]svd <- eigen(rxx)evec <- svd$vectorsev <- svd$valuesdelta <- diag(sqrt(ev))lambda <- evec %*% delta %*% t(evec)lambdasq <- lambda ^ 2beta <- solve(lambda) %*% rxyrsquare <- colSums(beta ^ 2)rawwgt <- lambdasq %*% beta ^ 2import <- (rawwgt / rsquare) * 100import <- as.data.frame(import)row.names(import) <- names(fit$model[2:nvar])names(import) <- "Weights"import <- import[order(import),1, drop=FALSE]dotchart(import$Weights, labels=row.names(import),xlab="% of R-Square", pch=19,main="Relative Importance of Predictor Variables",sub=paste("Total R-Square=", round(rsquare, digits=3)),...)return(import)
}
states <- as.data.frame(state.x77[,c("Murder", "Population","Illiteracy", "Income", "Frost")])
fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)
relweights(fit, col="blue")#在这个模型中Illiteracy比Income相对更重要

R语言实战学习--回归相关推荐

  1. R:R语言实战学习一(基本统计分析)

    本学期的课程R语言实战只学了前六章的皮毛,实际上后面的知识用的更多,前面的是基础,这次学习第七章:基本统计分析. 1.描述性统计分析 主要关注分析连续型变量的中心趋势.变化性和分布形状的方法,为了便于 ...

  2. R语言实战学习笔记-高级数据管理

    本文将从以下几个方面介绍R语言中的数据管理,1.数据处理函数 2.控制流 3.用户自定义函数 4.整合和重构 1.数据的处理函数 #实例 x<-c(1,2,3,4,5,6,7,8,9) y< ...

  3. R语言实战 OLS回归

    第八章回归 OLS回归 这里演示的大部分内容中,都是利用OLS法通过一系列的预测变量来预测响应变量. OLS回归的大概介绍: OLS回归拟合模型的形式: n是观测的数目 k是也测变量的数目 第i次观测 ...

  4. r语言electricity数据集_R语言实战学习

    <R语言实战>中文电子版 提取码:lx35 已经学习打卡R语言22天了,可以说是初窥真容--基本了解R的数据和函数:作为程序语言,就是要多练习,多领悟,在实战中发现问题并解决问题. 所以, ...

  5. R语言构建ElasticNet回归模型实战:基于mtcars数据集

    R语言构建ElasticNet回归模型实战:基于mtcars数据集 目录 R语言构建ElasticNet回归模型实战:基于mtcars数据集 #ElasticNet回归

  6. 对比《学习R》PDF代码+《R语言实战第2版》PDF代码+《R数据科学》PDF代码分析

    R语言是世界上最流行的用于数据处理和统计分析的脚本语言.考古学家用它来跟踪古代文明的传播,医药公司用它来探索哪种药物更安全.更有效,精算师用它评估金融风险以保证市场的平稳运行.总之,在大数据时代,统计 ...

  7. R语言构建分位数回归(Quantile Regression)并计算R方指标实战

    R语言构建分位数回归(Quantile Regression)并计算R方指标实战 目录 R语言构建分位数回归(Quantile Regression)并计算R方指标实战 R方指标 调整的R方指标

  8. R语言可视化学习笔记之ggridges包绘制山峦图

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

  9. R语言实战:机器学习与数据分析源代码5

    本文辑录了<R语言实战--机器学习与数据分析>(电子工业出版社2016年出版)一书第6章至第7章前半部分(至136页)之代码.本书引言请见如下链接: http://blog.csdn.ne ...

最新文章

  1. 强生进军医疗机器人、Deepmind利用深度学习算法检查乳腺癌X光,AI医疗的风口已到来?...
  2. 牛客java面试题总结版(四)
  3. 我们为什么需要工作流
  4. 深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测-ECCV 2014
  5. Linux workqueue工作原理
  6. iOS6和iOS7代码的适配(1)
  7. 商品评价 - 信息脱敏
  8. Greenplum roaring bitmap与业务场景 (类阿里云RDS PG varbitx, 应用于海量用户 实时画像和圈选、透视)
  9. 布谷直播:仿富聊V聊、一对一社交APP、抖音短视频、社交APP源码
  10. ARCGIS 10.2全套资源下载地址
  11. 小甲鱼解密系列调试篇——OD使用教程笔记(持续更新中)
  12. 绕过校园网认证实现免费上网【三端】
  13. Vue路由守卫(通俗易懂)
  14. Face Paper: DSSD论文详解
  15. 博通Broadcom SDK源码学习与开发4——ECOS系统数据流
  16. RK3399平台开发系列讲解(以太网)5.11、PHY工作的代码流程
  17. 甘肃省陇南市谷歌卫星地图下载
  18. Ureport2分栏功能
  19. 求101-150的质数
  20. PM981/PM981a安装黑苹果——第八版

热门文章

  1. iOS--常见的几种数据存储方式
  2. 计算机开机启动过程详解
  3. i5 10400f和i5 11400f参数对比 哪个更好
  4. 抖音seo源码,抖音seo矩阵系统源码技术搭建
  5. 微生物组学研究手段概览2——宏基因组和宏转录组
  6. 机器人开发--pgv 视觉引导(Position Guided Vision)
  7. 超融合市场火爆,新华三因何蝉联第一?
  8. html+css+js+快速入门
  9. 计算机之父冯·诺依曼
  10. ffmpegguitool下载不了_FFmpeg GUI Tool下载-FFmpeg GUI Tool(视频处理)下载v1.2.4 安卓版-西西软件下载...