R语言ISLR工资数据进行多项式回归和样条回归分析

本文主要是介绍R语言ISLR工资数据进行多项式回归和样条回归分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

执行多项式回归使用age预测wage。使用交叉验证为多项式选择最佳次数。选择了什么程度,这与使用ANOVA进行假设检验的结果相比如何?对所得多项式拟合数据进行绘图。

最近我们被客户要求撰写关于回归的研究报告,包括一些图形和统计输出。加载工资数据集。保留所有交叉验证误差的数组。我们执行K=10  K倍交叉验证。

 

  相关视频:非线性模型原理与R语言多项式回归、局部平滑样条、 广义相加模型GAM分析

非线性模型原理与R语言多项式回归、局部平滑样条、 广义相加模型GAM分析

,时长05:41

 

rm(list = ls())
set.seed(1)# 测试误差
cv.MSE <- NA# 循环遍历年龄
for (i in 1:15) {glm.fit <-  glm(wage ~ poly(age, i), data = Wage)# 我们使用cv.glm的交叉验证并保留cv误差cv.MSE[i] <-  cv.glm(Wage, glm.fit, K = 10)$delta[1]
}
# 检查结果对象
cv.MSE


##  [1] 1675.837 1601.012 1598.801 1594.217 1594.625 1594.888 1595.500
##  [8] 1595.436 1596.335 1595.835 1595.970 1597.971 1598.713 1599.253
## [15] 1595.332

我们通过绘制type = "b"点与线之间的关系图来说明结果。 

# 用线图说明结果
plot( x = 1:15, y = cv.MSE, xlab = "power of age", ylab = "CV error", type = "b", pch = 19, lwd = 2, bty = "n", ylim = c( min(cv.MSE) - sd(cv.MSE), max(cv.MSE) + sd(cv.MSE) ) )# 水平线
abline(h = min(cv.MSE) + sd(cv.MSE) , lty = "dotted")# 最小值
points( x = which.min(cv.MSE), y = min(cv.MSE), col = "red", pch = "X", cex = 1.5 )

我们再次以较高的年龄权重对模型进行拟合以进行方差分析。


## Analysis of Deviance Table
## 
## Model  1: wage ~ poly(age, a)
## Model  2: wage ~ poly(age, a)
## Model  3: wage ~ poly(age, a)
## Model  4: wage ~ poly(age, a)
## Model  5: wage ~ poly(age, a)
## Model  6: wage ~ poly(age, a)
## Model  7: wage ~ poly(age, a)
## Model  8: wage ~ poly(age, a)
## Model  9: wage ~ poly(age, a)
## Model 10: wage ~ poly(age, a)
## Model 11: wage ~ poly(age, a)
## Model 12: wage ~ poly(age, a)
## Model 13: wage ~ poly(age, a)
## Model 14: wage ~ poly(age, a)
## Model 15: wage ~ poly(age, a)
##    Resid. Df Resid. Dev Df Deviance        F    Pr(>F)    
## 1       2998    5022216                                   
## 2       2997    4793430  1   228786 143.5637 < 2.2e-16 ***
## 3       2996    4777674  1    15756   9.8867  0.001681 ** 
## 4       2995    4771604  1     6070   3.8090  0.051070 .  
## 5       2994    4770322  1     1283   0.8048  0.369731    
## 6       2993    4766389  1     3932   2.4675  0.116329    
## 7       2992    4763834  1     2555   1.6034  0.205515    
## 8       2991    4763707  1      127   0.0795  0.778016    
## 9       2990    4756703  1     7004   4.3952  0.036124 *  
## 10      2989    4756701  1        3   0.0017  0.967552    
## 11      2988    4756597  1      103   0.0648  0.799144    
## 12      2987    4756591  1        7   0.0043  0.947923    
## 13      2986    4756401  1      190   0.1189  0.730224    
## 14      2985    4756158  1      243   0.1522  0.696488    
## 15      2984    4755364  1      795   0.4986  0.480151    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

根据F检验,我们应该选择年龄提高到3次的模型,通过交叉验证 。

现在,我们绘制多项式拟合的结果。

plot(wage ~ age, data = Wage, col = "darkgrey",  bty = &

这篇关于R语言ISLR工资数据进行多项式回归和样条回归分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/719155

相关文章

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁