文章目录

  • 实验思维导图
  • 1. 收集、探索和准备数据
    • 1.1 收集数据
    • 1.2 探索和准备数据
  • 2. 基于数据训练模型
    • 2.1 使用线性回归函数
    • 2.2 建立模型
  • 3. 评估模型的性能
  • 4. 提高模型的性能
    • 4.1 将年龄非线性化
    • 4.2 数值转换二进制
    • 4.3 改进模型
  • 资料
  • Reference

实验思维导图

1. 收集、探索和准备数据

1.1 收集数据

insurance <- read.csv("~\\insurance.csv",stringsAsFactors=TRUE)
#将character类型数据转换为factors类型(略)

1.2 探索和准备数据

str(insurance)
#查看变量及变量类型等

summary(insurance$charges)
#查看收入的分布:最小值/四分之一值/中位数/平均值/四分之三值/最大值

hist(insurance$charges)
#收入直方图,随着收入增多消费频率降低

table(insurance$region)
#查看region的统计,东南方居住的患者稍多一些

cor(insurance[c("age","bmi","children","charges")])
#age、bmi、children、charges四个变量的相关系数矩阵
#对称结构,其中age与charges两个变量相关系数最大

pairs(insurance[c("age","bmi","children","charges")])
#age、bmi、children、charges四个变量的散点图矩阵
#对称结构,其中age与charge呈正相关关系

2. 基于数据训练模型

2.1 使用线性回归函数

ins_model <- lm(charges~age+children+bmi+sex+smoker+region,data = insurance)
#lm()探索charges与其他变量的相关性

2.2 建立模型

ins_model <- lm(charges~.,data = insurance)
#lm()探索charges与除charges所有变量的相关性

3. 评估模型的性能

summary(ins_model)

#参数注释:
#1.Residuals(残差)部分提供了预测误差的主要统计量,其中有一些统计量明显是相当大的。
#由于残差是真实值减去预测值,所以最大误差值29992.8 表明该模型至少对一个案例的费用少预测了将近三万元
#2.星号表示模型中每个特征的预测能力。3 颗星的出现表示显著性水平为 0,即该特征极不可能是与因变量无关的变量
#而一个通常的做法局势使用 0.05 的显著性水平来表示统计意义上的显著变量。
#3.多元 R 方值(判定系数)提供了一种度量模型性能的方式,即从整体上,模型能多大程度解释因变量的值。#它类似于相关系数,因为它的值越接近于 1.0,模型解释数据的性能就越好。#1.Residuals(残差)这个案例中最大误差值为29992.8,预测值与实际值
#2.星号越多相关性越强
#3.R-squared(R²)越接近1模型性能越好

4. 提高模型的性能

4.1 将年龄非线性化

insurance$age2 <- insurance$age^2
#使年龄变为非线性数据

4.2 数值转换二进制

insurance$bmi30 <- ifelse(insurance$bmi >= 30,1,0)
#大于30岁的bmi替换为1,否则替换为0,即肥胖人士指标
#添加新属性

4.3 改进模型

ins_model2 <- lm(charges~age+age2+children+bmi+sex+bmi30*smoker+region,data = insurance)
#使用新参数非线性的age2、肥胖与吸烟的相互作用bmi30*smoker
summary(ins_model2)


#1.优化后的残差最小值及最大值都变小了;
#2.拥有表示模型中每个特征的预测能力的星号的变量也变多了;
#3.多元 R 方值由原来的 0.75 变为 0.86,更接近于 1,说明模型解释数据的性能变好了。

资料

实验资料

Reference

R语言数据框中的stringsAsFactors参数–刘小花花–CSDN

R语言之lm函数–cognize

【R】【线性回归分析实验】相关推荐

  1. ”父母子女身高“数据集(高尔顿数据集)进行线性回归分析实验

    "父母子女身高"数据集(高尔顿数据集)进行线性回归分析实验 一.配置Excel 二.对数据做线性回归分析 三.父亲母亲分别与儿子做回归方程分析 1.父亲与儿女数据分析 2.母亲与儿 ...

  2. 线性回归分析——高尔顿数据集更正版

    线性回归分析--高尔顿数据集更正版 一."父亲-儿子"身高数据回归分析 1.做数据处理,将数据重复项删除:完成'儿子'分类 2.做回归处理 二."母亲-儿子"身 ...

  3. 手把手教线性回归分析(附R语言实例)

    本文长度为8619字,建议阅读15分钟 本文为你介绍线性回归分析. 通常在现实应用中,我们需要去理解一个变量是如何被一些其他变量所决定的. 回答这样的问题,需要我们去建立一个模型.一个模型就是一个公式 ...

  4. R语言计量(一):一元线性回归与多元线性回归分析

    文章目录 一.数据调用与预处理 二.一元线性回归分析 三.多元线性回归分析 (一)解释变量的多重共线性检测 (二)多元回归 1. 多元最小二乘回归 2. 逐步回归 (三)回归诊断 四.模型评价-常用的 ...

  5. 多元线性回归分析(R语言)

    ▼多元线性回归分析▼ 一.多元线性回归模型 设变量Y与X1,X2,--,Xp之间有线性关系 其中    , 和  是未知参数,p≥2,称上公式为多元线性回归模型. 二.参数估计 我们根据多元线性回归模 ...

  6. R假设检验与一元线性回归分析

    假设检验   相关系数 cor(x,y) cor.test(x,y)  相关系数越接近1,x与y越相关 > data("iris") > plot(iris) > ...

  7. (生物信息学)R语言与统计学入门(七)—— 一元线性回归分析

    我们之前讲过相关性分析,生物信息学常见的相关性分析是pearson相关和spearman相关. (生物信息学)R语言与统计学入门(六)-- Pearson和Spearman相关性分析_Lijingxi ...

  8. python二手房价格预测_Python爬取赶集网北京二手房数据R对爬取的二手房房价做线性回归分析...

    前言:本文主要分为两部分:Python爬取赶集网北京二手房数据&R对爬取的二手房房价做线性回归分析.文章思路清晰,代码详细,特别适合刚刚接触Python&R的同学学习参考. Part1 ...

  9. 用R进行多元线性回归分析建模

    概念:多元回归分析预测法,是指通过对两个或两个以上的自变量与一个因变量的相关分析,建立预测模型进行预测的方法.当自变量与因变量之间存在线性关系时,称为多元线性回归分析. 下面我就举几个例子来说明一下 ...

最新文章

  1. Interview Q A 小明一家5口如何过桥
  2. activemq无账户密码登录配置修改
  3. MATLAB利用串口接收数据,并实时显示图形
  4. 2.Hadoop的学习(Ubuntu的目录及权限)
  5. error和exception
  6. 通过百度 vs 奇虎,来谈博客搜索
  7. iphone数据迁移到新iphone_Mac专业iPhone数据恢复软件----Omni Recover
  8. 力扣—— 36. 有效的数独/37. 解数独
  9. Spectra Logic磁带库成SGI方案中标准化产品
  10. 哈哈哈,看着问题一个个解决,很有满足感哦
  11. T-SQL常用日期函数
  12. 用计算机表白的数字,数字表白密码 表白密码大全
  13. 视觉SLAM十四讲笔记-6-1
  14. bzoj5394 [Ynoi2016]炸脖龙 树状数组+拓展欧拉定理
  15. 电脑休眠后无法唤醒怎么办?
  16. 阿里云配置二级域名与nginx代理踩坑
  17. Letsencrypt简单教程调整
  18. 80端口进不去问题解析
  19. 剑三连接服务器未响应,剑三帮会联赛启航!武林争霸赛鹿死谁手,可能要看投资人谁更舍得...
  20. 带你认识 flask 国际化和本地化

热门文章

  1. if···else,switch-路程折扣题目
  2. 用C/C++编程实现挖金子游戏「含项目源码」
  3. 点状字符的一种简便识别方式
  4. 动态┃彼岸花资本、加密资本等宣布与Filenet达成战略合作,并参与Filenet打包节点竞选
  5. 学平面设计能做什么?平面设计都有哪些内容
  6. B2B 手动客户端网络上传数据报错:由于目标机器积极拒绝,无法连接,解决办法
  7. 在Quatrus 9.0环境下实现4位比较器(bdf文件实现)
  8. 听说 Flutter 最近要多火爆就有多火爆,那就推荐一个不错的系列文章吧
  9. 番外篇2.3 图像处理与深度学习 - 模式识别
  10. python 帮助命令的快捷键_Python有哪些常用的快捷键?python开发