定义:

  回归是统计学的核心,它其实是一个广义的概念,通常指那些用一个或多个预测变量来预测响应变量.既:从一堆数据中获取最优模型参数

1.线性回归

  1.1简单线性回归

  案例:女性预测身高和体重的关系

  结论:身高和体重成正比关系

  1. fit <- lm(weight ~ height,data = women)
  2. summary(fit)
  3. plot(women$height,women$weight,xlab = 'Height inches',ylab = 'Weight pounds')
  4. abline(fit)

  1.2添加多项式来提升预测精度

   结论:模型的方差解释率提升到99.9%,表示二次项提高了模型的拟合度

  1. fit2 <- lm(weight ~ height + I(height^2),data = women)
  2. summary(fit2)
  3. plot(women$height,women$weight,xlab = 'Height inches',ylab = 'Weight pounds')
  4. lines(women$height,fitted(fit2))

  1.3多元线性回归

  案例探究:探究美国州的犯罪率和其他因素的关系,包括人口,文盲率,平均收入,天气

  结论:谋杀率和人口,文盲率呈正相关,和天气,收入呈负相关

  1. states <- as.data.frame(state.x77[,c("Murder", "Population",
  2. "Illiteracy", "Income", "Frost")])
  3. cor(states)
  4. library(car)
  5. scatterplotMatrix(states,spread = F,smoother.args = list(lty=2),main='Scatter Plot Matrix')

  结论:文盲率的回归系数是4.14,说明在控制其他变量不变的情况下,文盲率提升1%,谋杀率就会提高4.14%

  1. # 多元线性回归
    1 fit3 <- lm(Murder~Population+Illiteracy+Income+Frost,data = states)
  2. summary(fit3)

  1.4回归诊断

  结论:文盲率改变1%,谋杀率在95%的置信区间[2.38,5.9]之间变化,因为frost的置信区间包含0,所以可以认为温度的改变与谋杀率无关

  1. confint(fit3)

  结论:除了Nevada一个点,其余的点都很好的符合了模型

  1. par(mfrow=c(2,2))
  2. plot(fit3)

  学生化残差分布图展示了除了Nevada一个离群点,其他点都很好的符合了模型

  1. residplot <- function(fit,nbreaks=10){
  2. z <- rstudent(fit)
  3. hist(z,breaks = nbreaks,freq = F,xlab = 'Studentized Residual',main = 'Distribution of Errors')
  4. rug(jitter(z),col = 'brown')
  5. curve(dnorm(x,mean=mean(z),sd=sd(z)),add=T,col='blue',lwd=2)
  6. lines(density(z)$x,density(z)$y,col='red',lwd=2,lty=2)
  7. legend('topright',legend = c('Normal Curve','KernelDensity Curve'),lty = 1:2,col = c('blue','red'),cex = .7)
  8. }
  9.  
  10. residplot(fit3)

  1.5 异常观测值

    1.5.1 离群点:指的是模型预测观测效果

       此处可以看到Nevada是数据集中的离群点

  1. library(car)
  2. outlierTest(fit3)

    1.5.2 高杠杆值点:与其他观测变量有关的离群点

        可以通过以下的帽子图进行观测,,一般来说若帽子值的均值大于帽子均值的2倍或者3倍,就是高杠杆点

  1. hat.plot <- function(fit){
  2. p <- length(coefficients(fit3))
  3. n <- length(fitted(fit3))
  4. plot(hatvalues(fit3),main = 'Index Plot of Hat Values')
  5. abline(h=c(2,3)*p/n,col='red',lty=2)
  6. identify(1:n,hatvalues(fit3),names(hatvalues(fit3)))
  7. }
  8. hat.plot(fit3)

    1.5.3强影响点:对模型参数影响有比例失调的点

          使用cook's D值大于4/(n-k-1)表示是强影响点

  1. cutoff <- 4/(nrow(states)-length(fit3$coefficients)-2)
  2. plot(fit3,which=4,cook.levels=cutoff)
  3. abline(h=cutoff,lty=2,col='red')

      1.5.4还可以通过气泡图来展示哪些是离群点,强影响点和高杠杆值点

  1. influencePlot(fit3,id.method='identify',main='Infulence Plot',sub='Circle size is proportional to cook distance')

  1.6选择最佳的模型

    1.6.1使用anova比较

      结论:由于检验不显著,不需要吧Income和Forst加入到变量中

  1. fit5 <- lm(Murder ~ Population+Illiteracy,data = states)
  2. anova(fit3,fit5)

    1.6.2使用AIC比较

      结论:同上

  1. fit5 <- lm(Murder ~ Population+Illiteracy,data = states)
  2. AIC(fit3,fit5)

    1.6.3变量选择

           结论:开始时模型包含4个变量,在每一步中,AIC列提供了一个删除变量后的AIC值第一次删除AIC从97.75下降到95.75,第二次从93.76,再删除变量会增加AIC所以回归停止

  1. library(MASS)
  2. stepAIC(fit3,direction = 'backward')

    1.6.4使用自定义韩式计算相对权重

      结论:可以看到每个预测变量对模型方差的解释程度和影响权重

  1. relweights <- function(fit,...){
  2. R <- cor(fit$model)
  3. nvar <- ncol(R)
  4. rxx <- R[2:nvar,2:nvar]
  5. rxy <- R[2:nvar,1]
  6. svd <- eigen(rxx)
  7. evec <- svd$vectors
  8. ev <- svd$values
  9. delta <- diag(sqrt(ev))
  10. lambda <- evec %*% delta %*% t(evec)
  11. lambdasq <- lambda ^ 2
  12. beta <- solve(lambda) %*% rxy
  13. rsquare <- colSums(beta ^ 2)
  14. rawwgt <- lambdasq %*% beta ^ 2
  15. import <- (rawwgt / rsquare) * 100
  16. import <- as.data.frame(import)
  17. row.names(import) <- names(fit$model[2:nvar])
  18. names(import) <- 'Weights'
  19. import <- import[order(import),1,drop=F]
  20. dotchart(import$Weights,labels = row.names(import),xlab = '% of R-Square',pch=19,
  21. main = 'Relative Importance of Predictor Variables',
  22. sub=paste('Total R-Square=',round(rsquare,digits = 3)),...)
    return(import)
    # 调用
    24 relweights(fit3,col='blue')

R语言-回归的更多相关文章

  1. 用R语言的quantreg包进行分位数回归

    什么是分位数回归 分位数回归(Quantile Regression)是计量经济学的研究前沿方向之一,它利用解释变量的多个分位数(例如四分位.十分位.百分位等)来得到被解释变量的条件分布的相应的分位数 ...

  2. 如何在R语言中使用Logistic回归模型

    在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价.身高.GDP.学生成绩等,发现这些被预测的变量都属于连续型变量.然而有些情况下,被预测变量可能是二元变量,即成功或失败.流失或 ...

  3. R语言实战(四)回归

    本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

  4. R语言︱XGBoost极端梯度上升以及forecastxgb(预测)+xgboost(回归)双案例解读

    XGBoost不仅仅可以用来做分类还可以做时间序列方面的预测,而且已经有人做的很好,可以见最后的案例. 应用一:XGBoost用来做预测 ------------------------------- ...

  5. logistic逻辑回归公式推导及R语言实现

    Logistic逻辑回归 Logistic逻辑回归模型 线性回归模型简单,对于一些线性可分的场景还是简单易用的.Logistic逻辑回归也可以看成线性回归的变种,虽然名字带回归二字但实际上他主要用来二 ...

  6. 【数据分析】线性回归与逻辑回归(R语言实现)

    文章来源:公众号-智能化IT系统. 回归模型有多种,一般在数据分析中用的比较常用的有线性回归和逻辑回归.其描述的是一组因变量和自变量之间的关系,通过特定的方程来模拟.这么做的目的也是为了预测,但有时也 ...

  7. 分类-回归树模型(CART)在R语言中的实现

    分类-回归树模型(CART)在R语言中的实现 CART模型 ,即Classification And Regression Trees.它和一般回归分析类似,是用来对变量进行解释和预测的工具,也是数据 ...

  8. R 再也不用愁变量太多跑回归太麻烦!R语言循环常用方法总结

    在高维数据分析过程中,为了筛选出与目标结局相关的变量,通常会用到回归分析,但是因为自变量较多,往往要进行多次回归.这就是统计编程语言发挥作用的时候了 有些大神们认为超过3次的复制粘贴就可以考虑使用循环 ...

  9. 【机器学习与R语言】6-线性回归

    目录 1.理解回归 1)简单线性回归 2)普通最小二乘估计 3)相关系数 4)多元线性回归 2.线性回归应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理 ...

随机推荐

  1. UIWebView 无缝切换到 WKWebView

    WKWebView 是IOS8新增的 Web浏览视图 长处:   载入速度  比UIWebView提升差点儿相同一倍的, 内存使用上面,反而还少了一半. 缺点:   WKWebView 不支持缓存 和 ...

  2. win系统下的eclipse连接和使用linux上的hadoop集群

    准备工作 先在win系统的hosts文件中加入下面内容 10.61.6.164master     //hadoop集群的master节点 一.首先在eclipse上安装hadoop插件 下载hado ...

  3. openstack-dashboard开发环境搭建

    1,在开发过程中,一般都要,将dashboard这个组件单独执行在自己的本地的linux系统中(Ubuntu或centos),那个比較顺手用哪个.假设不习惯,能够用vmwareworkstation安 ...

  4. jquery源码03 (3184 , 3295) support : 功能检测

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  5. dfs算法中求数列的组合

    /* 从13个书中挑选5个值,他们的组合可能是 什么, 如下代码 dfs深度遍历, 和全排列是一种方法,但是思路不同 */ public class Main { static int count = ...

  6. 学大伟业Day解题报告

    预计分数:30+30+0=60 实际分数:30+20+0=50 题解部分全部来自http://www.cnblogs.com/TheRoadToTheGold/p/7723564.html T1htt ...

  7. PCA and Whitening on natural images

    Step 0: Prepare data Step 0a: Load data The starter code contains code to load a set of natural imag ...

  8. Checkpoint & cache & persist

    checkpoint checkpoint(检查点)是Spark为了避免长链路,大计算量的Rdd不可用时,需要长时间恢复而引入的.主要就是将通过大量计算而获得的这类Rdd的数据直接持久化到外部可靠的存 ...

  9. python2 pip安装包等出现各种编码错误UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2...

    1.问题描述: python2环境,pip安装包时报错UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2... 类似如 ...

  10. sleep---暂停指定的时间

    sleep命令可以用来将目前动作延迟一段时间. 使用权限:所有使用者. 语法 sleep [--help] [--version] number[smhd] 参数说明: --help : 显示辅助讯息 ...