R语言第七讲 线性回归分析案例

2023-11-04

题目

          MASS 库中包含 Boston (波士顿房价)数据集,它记录了波士顿周围 506 个街区的 medv (房价中位数)。我们将设法用 13 个预测变量如 rm (每栋住宅的平均房间数), age (平均房 龄), lstat (社会经济地位低的家庭所占比例)等来预测 medv (房价中位数)。

************************************************MASS是R语言自带的库********************************************************

library(MASS) #加载MASS程序包
library(ISLR) #加载ISLR程序包,确保事先已经下载install.packages("ISLR")
fix(Boston) #打开Boston房价数据,excel
names(Boston) #查看所有的数据特征,即:列属性
# [1] "crim"    "zn"      "indus"   "chas"    "nox"     "rm"     
# [7] "age"     "dis"     "rad"     "tax"     "ptratio" "black"  
# [13] "lstat"   "medv"  
?Boston#查看Boston的更多数据信息(帮助文档)

       准备好了数据集,我们开始用 lm ()函数拟合一个简单线性回归模型开始,将 lstat 作为预测变量, medv 作 为响应变量。基本句法是 lm (y ~ x , data) ,其中 y 是响应变量, x 是预测变量, data 是这 两个变量所属的数据集。

lm.fit=lm(medv~lstat)

       发现提示错误:Error in eval(predvars, data, env) : 找不到对象'medv'

因为 R 不知道哪里可以找到变量 medv 和 lstat。下一行命令告诉 R,变 量在 Bosto日数据集中。如果绑定 Boston 数据集, R 就能识别变量,此时第一行语句可以正 常工作。

lm.fit=lm(medv~lstat,data=Boston)
attach(Boston)
lm.fit=lm(medv~lstat)
lm.fit

# Call:
# lm(formula = medv ~ lstat)

# Coefficients : 系数
# (Intercept)        lstat  
#       34.55        -0.95 

       如果我们输入 lm. fit ,则会输出模型的一些基本信息,这给出了预测的线性函数的截距以及系数。那么预测的线性函数就已经出来了。

summary(lm.fit)
Call:
lm(formula = medv ~ lstat)

Residuals:      残差
    Min      1Q  Median      3Q     Max 
-15.168  -3.990  -1.318   2.034  24.500 

Coefficients: 
            Estimate Std. Error t value Pr(>|t|)   #估计标准误差t值 
(Intercept) 34.55384    0.56263   61.41   <2e-16 ***
lstat       -0.95005    0.03873  -24.53   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 6.216 on 504 degrees of freedom #预测的残差标准误 

#Coefficient of determination(有的译为“决定性系数”)。 
Multiple R-squared:  0.5441,	Adjusted R-squared:  0.5432  

#F统计量  P值
F-statistic: 601.6 on 1 and 504 DF,  p-value: < 2.2e-16

这一句会列出系数的p值和标准误,以及模型R^2统计量和F统计量。

Residuals:      残差
    Min      1Q  Median      3Q     Max 
-15.168  -3.990  -1.318   2.034  24.500 

上方的代表残差。 通过将预测结果(通过函数计算)  减去  对应的目标变量 (预测变量的真实值)的真实值,便可获得残差值。

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

       显著性标记   * * * 极度显著,* * 高度显著,*显著,圆点不太显著,没有记号不显著简而言之,*越多代表效果越好,下面估计的系数,代表就极度显著,就是很准确的意思。

Coefficients: 
            Estimate Std. Error t value Pr(>|t|)   #估计标准误差t值 
(Intercept) 34.55384    0.56263   61.41   <2e-16 ***
lstat       -0.95005    0.03873  -24.53   <2e-16 ***

      第一列代表34.55384代表的是截距,-0.95005代表斜率
      第二列:推算的系数的标准差
      第三列:t值,t统计量
      第四列:p值,是一个验证假设是否成立的值。比如身高体重模型,假设身高height与weight无关系,也就是在原始的模型中呢,体重=常数+0*height,height前面系数为0,由此我们可以通过R算出一个统计量t值,Pr表示t值以外的面积,也就是下面谈到的p值

    估计标准误差(Se)是说明实际值与其估计值之间相对偏离程度的指标,主要用来衡量回归方程的代表性。估计标准误差,即因变量y的实际值与回归方程求出的估计值之间的标准误差,估计标准误差越小,回归方程拟合程度越好。

估计标准误差的值越小,则估计量与其真实值的近似误差越小,但不能认为估计量与真实值之间的绝对误差就是估计标准误差。估计标准误差与判定系数相反,se反映了预测值与真实值之间误差的大小,se越大说明拟合度越低。

Residual standard error: 6.216 on 504 degrees of freedom #预测的残差标准误

       残差标准误即计算标准误的样本是样本数值的残差。

       标准误,即样本均数标准差,是描述均数抽样分布离散程度及衡量均数抽样误差大小的尺度,反映的是样本均数之间的变异。标准误不是标准差,是多个样本平均数的标准差。

标准误用来衡量抽样误差。标准误越小,表明样本统计量总体参数的值越接近,样本对总体越有代表性,用样本统计量推断总体参数的可靠度越大。因此,标准误是统计推断可靠性的指标

#Coefficient of determination(有的译为“决定性系数”)。 
Multiple R-squared:  0.5441,	Adjusted R-squared:  0.5432  

       这里的决定性系数R方,我经常与函数的相关系数R弄混,今天将两者简单谈一下。

1、 相关系数 R

      定义: 变量之间线性相关的度量。

      计算:

                  

解释:

自变量X和因变量Y的协方差/标准差的乘积。
* 协方差:两个变量变化是同方向的还是异方向的。X高Y也高,协方差就是正,相反,则是负。
* 为什么要除标准差:标准化。即消除了X和Y自身变化的影响,只讨论两者之间关系。
* 因此,相关系数是一种特殊的协方差。


2、决定性系数 R方

      定义:对模型进行线性回归后,评价回归模型系数拟合优度。

      公式:R方=(TSS-RSS)/TSS=1-RSS/TSS 

                 TSS (total sum of squares):总平方和,即:用真实值-真实值的平均值的平方 

                                                               
                 RSS (regression sum of squares):残差平方和

                                                                 
          在简单回归模型中,R方是响应变量Y和预测变量X相关系数的平方.在多元线性回归中,是响应值Y和线性拟合值,相关系数的平方。

          综上:R方接近于1,则表明该模型能解释大部分响应变量的方差。

            

#F统计量  P值
F-statistic: 601.6 on 1 and 504 DF,  p-value: < 2.2e-16

 1、 P值

        P值即概率,反映某一事件发生的可能性大小。统计学根据显著性检验方法所得到的P 值,一般以P < 0.05 为有统计学差异, P<0.01 为有显著统计学差异,P<0.001为有极其显著的统计学差异。其含义是样本间的差异由抽样误差所致的概率小于0.05 、0.01、0.001。实际上,P值不能赋予数据任何重要性,只能说明某事件发生的几率。统计结果中显示Pr > F,也可写成Pr( >F),P = P{ F0.05 > F}或P = P{ F0.01 > F}。

      计算:

      一般呢,我们进行线性拟合时:拟合出来的公式为 Y(预测) =  b(预测) + a(预测)x  。

但是b(预测)与真实的b会有一定误差,a(预测)也如此,差距如何衡量?

      计算a,b的标准误差可以使用以下公式   

                                  

                                        

        σ 是变量 Y 的每个实现值 Yi 的标准差。

        计算p值,还需要引入t统计量。

        t统计量

         定义:用于测量 了 β1 偏离 0 的标准偏差。即:测量函数是一个常数函数还是一个一元函数。

         计算:  

         以0为中心,左右对称的单峰分布;t分布是一簇曲线,其形态变化与n(确切地说与自由度df)大小有关。自由度df越小,t分布曲线越低平;自由度df越大,t分布曲线越接近标准正态分布(u分布)曲线;随着自由度逐渐增大,t分布逐渐接近标准正态分布。

      (自由度:估计的样本数据中有n个点,其中有a个点的取值不受其他点的影响,则自由度为a,所谓受影响即:变量x的取值如果不会影响的变量z的取值,比如z不是根据x来计算出来的。那么称z与x没有关系,则没有影响)

        P值定义: 计算任意观测值大于等于 I t I 的概率就十分简单了,我们称这个概率为 p 值 。

        解释::一个很小的 p 值表示,在预测变量和响应变量之间的真实关系 未知的情况下,不太可能完全由于偶然而观察到预测变量和响应变量之间的强相关。因此,如 果看到一个很小的 p 值,就可以推断预测变量和响应变量问存在关联。

  2、F统计量

       F统计量定义:用来检测响应变量Y与预测变量X之间是否有关系。对于多元一次函数分析用了超过一个参数的统计模型,以                                 判断该模型中的全部或一部分参数是否适合用来估计母体。

       计算:     

               这里把选择忽略的变量放在了列表末尾。在这种情况下,我们用除最后 q 个变量 之外的所有变量建立第二个模型。假                   设该模型的残差平方为 RSSo 

       解释:当响应变量与预测变量时F统计量应该接近于1。

       回到实验,我们可以使用names ()函数找出 lm. fit 中存储的其他信息。虽然可以用名称提取这些量 例 如: lm. fit $ coefficients但用提取功能如 coef ()访问它们会更安全。

      

 > names(lm.fit)
 [1] "coefficients"  "residuals"     "effects"       "rank"         
 [5] "fitted.values" "assign"        "qr"            "df.residual"  
 [9] "xlevels"       "call"          "terms"         "model"    
> coef(lm.fit)#这样访问更加安全
(Intercept)       lstat 
 34.5538409  -0.9500494 

> confint(lm.fit)#得到系数估计值的置信区间
                2.5 %     97.5 %
(Intercept) 33.448457 35.6592247  #截距估计
lstat       -1.026148 -0.8739505  #一次项系数估计

> predict(lm.fit,data.frame(lstat=(c(5,10,15))), interval="confidence")#计算置信区间
       fit      lwr      upr
1 29.80359 29.00741 30.59978
2 25.05335 24.47413 25.63256
3 20.30310 19.73159 20.87461
> predict(lm.fit,data.frame(lstat=(c(5,10,15))), interval="prediction")#计算预测区间
       fit       lwr      upr
1 29.80359 17.565675 42.04151
2 25.05335 12.827626 37.27907
3 20.30310  8.077742 32.52846

         由以上数据可以看出:如当 lstat 等于 10 时,相应的 95% 置信区间为 (24. 47 , 25. 63) ,相应的 95% 预测区 间为 (12.828 , 37.28) 。正如预期的那样,置信区间和预测区间有相同的中心点(当 lstat 等于 10 时, medv 的预测值是 25.05) ,但后者要宽得多。 

       用函数 plot ()和 abline ()绘制 medv 和 lstat 的散点图以及最小二乘回归 直线。 

plot(lstat,medv)
abline(lm.fit)

       

abline(lm.fit,lwd=3)
abline(lm.fit,lwd=3,col="red")
plot(lstat,medv,col="red")
plot(lstat,medv,pch=20)
plot(lstat,medv,pch="+")
plot(1:20,1:20,pch=1:20)

  以上命令,分别是改变线条的宽度,线的颜色,散点图的点的形状,点的大小、颜色等。

     接下来我们检查一些诊断图。对lm ( )的输出直接用 plot ()命令将自动生成四幅诊断图。一般情况下,这个命令每次生成一幅图,按下回车键 (Enter) 将生成下一幅图。然而,同时查看所有 4 幅图通常比较方便。可以用 par ()函数做到 这一点,它指示 R 将显示屏分割成独立的面板,所以可以同时查看多个图。例如, par (mfrow = c (2 , 2)) 把绘图区域划分成 2 x2 的网格面板。

par(mfrow=c(2,2))
plot(lm.fit)#生成4幅诊断图
plot(predict(lm.fit), residuals(lm.fit))
plot(predict(lm.fit), rstudent(lm.fit))

plot(hatvalues(lm.fit))
which.max(hatvalues(lm.fit))
375 
375 


      以用 residuals ()函数计算线性回归拟合的残差。函数 rstudent ()可计算学生化 残差,我们也可以用这个函数绘制残差对拟合值的散点图。

      残差图中的一些证据表明数据有非线性。杠杆统计量可以由 hatva1ues ()函数为任意多 个预测变量来计算。

      which. max ()函数可识别出向量中最大元素的索引。在本例中,它告诉我们哪个观测具 有最大的杠杆统计量。


                 

     

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言第七讲 线性回归分析案例 的相关文章

  • PCE投稿要求

    进入PCE的投稿网址 http mc manuscriptcentral com pce 查了一下 大家都建议创建ORCID号 于是按照指示创建了 蓝色笔圈起来的是一些投稿指导 于是打开Instructions Forms Instruct
  • R语言数据拆分

    博主的话 大家好 这里是bio 先赞后看养成习惯 还没关注的小伙伴点点关注不迷路 今天是南方的小年 祝福大家小年快乐 目录 博主的话 前言 一 split 函数 二 subset 函数 总结 前言 今天继续学习R语言 我们之前已经介绍过了数
  • r语言写九九乘法表并保存为txt文件

    r语言写九九乘法表并保存为txt文件 代码 for i in 1 9 for j in 1 i cat j x i i j t file 九九乘法表 txt append TRUE cat n file 九九乘法表 txt append T
  • R语言 Scale函数

    在我们做数据的时候 一个数据会有很多特征 比如在描述影响房价的因素 有房子面积 房间数量等 而不同的特征存在不同的量纲 为了消除量纲 数值差异等 我们就需要对数据进行中心化和标准化 那什么是中心化 什么是标准化呢 所谓中心化就是将数据减去均
  • 如何用R分析CNKI文献关键词词频?

    疑惑 如何用VOSviewer分析CNKI数据 一文发布后 有同学问我 王老师 我有个问题 我用cnki导出关键词后 想统计关键词的词频 我应该用什么样的工具 如果不利用citespace和python 做出excel那种的统计表格 该怎么
  • 802.11K/V/R协议介绍

    802 11K V R协议介绍 1 传统无线漫游介绍 1 1 什么是无线漫游 一台无线终端备 STA 通过连接Wi Fi获取上网体验 Wi Fi名称 又称为SSID 是由无线接入网 AP 提供的 因为一台AP设备的覆盖范围有限 所以无线网络
  • 数据挖掘实验(四):决策树归纳 R语言

    一 实验目的 决策树分类算法 decision tree 通过树状结构对具有某特征属性的样本进行分类 其典型算法包括ID3算法 C4 5算法 C5 0算法 CART算法等 本次实验掌握用ID3的信息增益来实现决策树归纳 二 实验软件 Rst
  • ggplot2作图之系统发育树

    library ape tree lt read tree text A B C D E F G H I J K L M N O P library ggtree ggtree tree branch length none ladderi
  • SQL中去掉字符串中最后一个字符(小技巧)

    长度减一就可以了 select left 字段名 len 字段名 1 from 表名
  • 使用R语言中的survival包进行生存分析是一种常见的统计方法

    使用R语言中的survival包进行生存分析是一种常见的统计方法 在生存分析中 我们经常需要创建一个生存对象来存储事件发生时间和事件状态 在本文中 我们将介绍如何使用survival包中的Surv函数来创建生存对象 并解读其结果 Surv函
  • 机器学习-线性回归总结

    最近学习了线性回归的模型 也是机器学习中最基础的一种模型 在此 总结一下线性回归的模型介绍 梯度下降以及正规方程 回归问题 线性回归 顾名思义 属于回归问题 既然是回归问题 那必然属于监督学习 在这里简单再介绍一下什么是回归问题 回归用于预
  • R语言实现文本情感分析

    在本博客中 我们将介绍如何使用R语言进行文本情感分析 我们将介绍如何处理文本数据 构建模型 训练模型并进行情感预测 这里我们将使用IMDb电影评论数据集进行示例分析 数据准备 首先 我们需要下载并加载IMDb电影评论数据集 可以从这里下载数
  • 使用R语言构建泊松回归模型

    使用R语言构建泊松回归模型 泊松回归是一种广泛应用于计数数据分析的回归模型 它是基于泊松分布的概率模型 用于描述事件在一定时间或空间范围内发生的次数 在本文中 我们将学习如何使用R语言构建泊松回归模型 并提供相应的源代码示例 1 数据准备
  • R语言 write.xlsx() 写入同一excel,及同一sheet注意

    write xlsx x file sheetName Sheet1 col names TRUE row names TRUE append FALSE showNA TRUE 1 想要将data1写da xlsx的sheet1 data
  • R语言聚类分析

    本文首发于公众号 医学和生信笔记 完美观看体验请至公众号查看本文 文章目录 系统聚类 层次聚类 Hierarchical clustering 快速聚类 划分聚类 partitioning clustering K means聚类 围绕中心
  • 机器学习分类模型-线性回归Linear regression

    Linear regression module from collections import Counter import numpy as np import pandas as pd from imblearn over sampl
  • Coding and Paper Letter(六十一)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 资源整理 1 Coding 1 航拍影像的土地覆盖分类 CAS机器学习人工智能2019 ZHAW 中ML DL分配的仓库 ml dl assignment 2019 2 跨
  • 不同kNN模型在R语言中的比较

    不同kNN模型在R语言中的比较 k近邻 k Nearest Neighbors 简称kNN 是一种常见的机器学习算法 被广泛用于分类和回归问题 它基于一个简单的假设 与某个样本集中距离最近的k个样本具有相似的特征和标签 本文将探讨在R语言中
  • 吴恩达机器学习笔记1:手写linear regression

    最近手写了linear regression 有以下几点收获 做batch gradient descent时 注意每一轮迭代要使用同一个error同时更新所有参数 归一化的时候 要注意记录相应的均值和方差 后续对新样本做预测时也需要使用这
  • R语言——基本操作(一)

    目录 一 基本操作 二 R包的安装及使用 三 获取帮助 四 内置数据集 五 数据结构 六 向量索引 七 向量运算 参考 Rstudio 控制台常用快捷键 Ctrl 查看所有历史记录 比直接使用 查找更方便 Esc 中断操作 可中断未完成的操

随机推荐

  • 量化术语速查表(持续更新)

    本文介绍一些量化投资相关术语 帮助大家更好地了解该行业 作者 bigquant 阅读时间 15分钟 本文由BigQuant宽客学院推出 难度标签 以下术语没有先后顺序 并将持续更新 金融相关 股票 股份公司发行的所有权凭证 债券 承诺按一定
  • GDB+Jlink调试注意事项

    1 在汇编调用C的一步要用 Step in 不要用 Step Over 因为main对于汇编来说只是一个函数 会造成程序全速运行 不能单步调试 对于汇编代码 Step in Step Over 是一样的效果 所以在进行main函数之前最好都
  • 表白代码大全_隐藏表白系列都在这里了

    点击上方 搞siao君 右上角找到 立刻设置我为 星标 置顶 每天第一时间推送给你 每天都有不一样的精彩 喜欢就多多分享哦 一 微信隐藏表白代码大全 爱你我爱你我爱你我爱你我爱你我爱你我
  • List与ArrayList的区别

    在刷题的时候发现ArrayList初始化时 有下面两种情况 List
  • 2023五大自动化测试的 Python 框架

    自2018年被评选为编程语言以来 Python在各大排行榜上一直都是名列前茅 目前 它在Tiobe指数中排名第三个 仅次于Java和C 随着该编程语言的广泛使用 基于Python的自动化测试框架也应运而生 且不断发展与丰富 因此 开发与测试
  • Nacos和Zookeeper对比

    主要平时用的较多是配置中心和服务注册中心 所以也是结合这两点功能做出对应的对比 主要比对集群模式 以下仅仅整理了个人理解后的观点 如有疑问欢迎咨询讨论 1 Zookeeper 其实明白一点Zookeeper的功能主要是它的树形节点来实现的
  • GIT Please, commit your changes or stash them before you can merge. Aborting

    用git pull来更新代码的时候 遇到了下面的问题 C error Your local changes to the following files would be overwritten by merge xxx xxx xxx p
  • Qt通过读取XML文件,绘制图形界面

    最近需要实现通过读取xml文件的形式动态绘制界面的需求 这样会很方便 在外界修改xml文件就可以了 不需要重新编译程序 一 XML文件 XML的格式和一些说明 本文就不在介绍了 菜鸟教程有更清晰的入门介绍 菜鸟教程 XML 二 QT中读取X
  • React兄弟组件之间的通讯

    案例要求 达到这样一个效果 组件拆分 搜索框是一个组件 传递状态 下面的展示列表是一个组件 使用状态 方式一 状态存在父组件之间 父组件传递给子组件消息可以使用props 子组件给父组件之间传递消息可以使用函数实现 APP组件代码 impo
  • 计算机D盘无法读取,解决Mac上的USB错误“此计算机无法读取您插入的磁盘”

    尽管USB驱动器是最紧凑 最可靠的存储解决方案 但遇到它们的问题并不少见 您可能会发现该设备不可访问 或者在连接设备时可能会遇到诸如 此计算机无法读取您插入的磁盘 之类的错误消息 您如何解决此类错误 是否可以再次访问无法读取的USB上的数据
  • 一文搞懂vue的$attrs和$listeners,和react props的对比后更容易记忆

    近期编写vue组件 用到vue新增的api attrs和 listeners 看了网上很多帖子 感觉介绍的都不直观 并不能让使用者快速了解二者到底是什么作用 本文结合实际使用场景 给出 attrs和 listeners的使用方法 并且引入引
  • gemm c++

    http www pittnuts com 2015 08 gemm of caffe 转载于 https www cnblogs com Wanggcong p 5281521 html
  • SpringBoot>16 - 使用 @Scheduled 实现定时任务

    简介 实现定时任务的方式很多 基于JDK的Timer Quartz等等 本章介绍 SpringBoot1 5 中Spring Task实现定时任务 非常方便 个人学习总结 链接 springboot springcloud docker 等
  • 【STM32】【HAL库】遥控关灯2 分机

    相关连接 STM32 HAL库 遥控关灯0 概述 STM32 HAL库 遥控关灯1主机 STM32 HAL库 遥控关灯2 分机 STM32 HAL库 遥控关灯3 遥控器 需求 接收RF433和红外信号 根据信号内容控制舵机 硬件设计 主控采
  • 什么是DevOps的三步工作法?

    作者介绍 张乐 DevOps时代联合创始人 高效运维社区合伙人 DevOpsDays大会 GOPS全球运维大会金牌讲师 国内首批DevOps Master 前百度资深敏捷教练 架构师 超过十四年敏捷转型 工程效能提升和大型项目管理实践经验
  • 电源篇 -- 降压电路(DCDC,非隔离)

    感谢阅读本文 在接下来很长的一段时间里 我将陆续分享项目实战经验 从电源 单片机 晶体管 驱动电路 显示电路 有线通讯 无线通信 传感器 原理图设计 PCB设计 软件设计 上位机等 给新手综合学习的平台 给老司机交流的平台 所有文章来源于项
  • 通过python实现局域网内传输大文件

    通过微信 网盘等进行传输速度很慢而且浪费流量 身旁又没有U盘等便携存储设备 那有没有一个方便的而且不用编程的局域网内传输的方式 那肯定有 step1 打开cmd cd进入需要分享的文件夹下 或者打开文件夹下 在当前路径下 打开cmd ste
  • Linux系统安装mysql

    1 卸载残留 如果服务器之前安装过mysql请先卸载 我这里是用yum安装的 现在通过yum去卸载 yum remove y mysql find name mysql 找到所有残留的文件 再通过rm rf去删除 2 卸载完成后 使用以下命
  • 乘积尾零

    如下的10行数据 每行有10个整数 请你求出它们的乘积的末尾有多少个零 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 443
  • R语言第七讲 线性回归分析案例

    题目 MASS 库中包含 Boston 波士顿房价 数据集 它记录了波士顿周围 506 个街区的 medv 房价中位数 我们将设法用 13 个预测变量如 rm 每栋住宅的平均房间数 age 平均房 龄 lstat 社会经济地位低的家庭所占比