R语言曲线回归:多项式回归、多项式样条回归、非线性回归数据分析

news2024/11/20 21:26:25

最近我们被客户要求撰写关于曲线回归的研究报告,包括一些图形和统计输出。本文将使用三种方法使模型适合曲线数据:1)多项式回归;2)用多项式样条进行B样条回归;3) 进行非线性回归。在此示例中,这三个中的每一个都将找到基本相同的最佳拟合曲线。 

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

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

,时长05:41

多项式回归

多项式回归实际上只是多元回归的一种特殊情况。

对于线性模型(lm),调整后的R平方包含在summary(model)语句的输出中。AIC是通过其自己的函数调用AIC(model)生成的。使用将方差分析函数应用于两个模型进行额外的平方和检验。 

对于AIC,越小越好。对于调整后的R平方,越大越好。将模型a与模型b进行比较的额外平方和检验的非显着p值表明,带有额外项的模型与缩小模型相比,并未显着减少平方误差和。也就是说,p值不显着表明带有附加项的模型并不比简化模型好。



Data = read.table(textConnection(Input),header=TRUE)


### Change Length from integer to numeric variable
###   otherwise, we will get an integer overflow error on big numbers

Data$Length = as.numeric(Data$Length)


### Create quadratic, cubic, quartic variables

library(dplyr)

Data = 
mutate(Data, 
       Length2 = Length*Length,
       Length3 = Length*Length*Length,
       Length4 = Length*Length*Length*Length)

library(FSA)

headtail(Data)

 

   Length Clutch Length2  Length3     Length4

1     284      3   80656 22906304  6505390336

2     290      2   84100 24389000  7072810000

3     290      7   84100 24389000  7072810000

16    323     13  104329 33698267 10884540241

17    334      2  111556 37259704 12444741136

18    334      8  111556 37259704 12444741136

定义要比较的模型

model.1 = lm (Clutch ~ Length,                               data=Data)
model.2 = lm (Clutch ~ Length + Length2,                     data=Data)
model.3 = lm (Clutch ~ Length + Length2 + Length3,           data=Data)
model.4 = lm (Clutch ~ Length + Length2 + Length3 + Length4, data=Data)

 

生成这些模型的模型选择标准统计信息

summary(model.1)

 

Coefficients:

            Estimate Std. Error t value Pr(>|t|)

(Intercept)  -0.4353    17.3499   -0.03     0.98

Length        0.0276     0.0563    0.49     0.63

 

Multiple R-squared:  0.0148,  Adjusted R-squared:  -0.0468

F-statistic: 0.24 on 1 and 16 DF,  p-value: 0.631

 

 

AIC(model.1)

 

[1] 99.133

 

 

summary(model.2)

 

Coefficients:

             Estimate Std. Error t value Pr(>|t|)  

(Intercept) -9.00e+02   2.70e+02   -3.33   0.0046 **

Length       5.86e+00   1.75e+00    3.35   0.0044 **

Length2     -9.42e-03   2.83e-03   -3.33   0.0045 **

 

Multiple R-squared:  0.434,   Adjusted R-squared:  0.358

F-statistic: 5.75 on 2 and 15 DF,  p-value: 0.014

 

 

AIC(model.2)

 

[1] 91.16157

 

 

anova(model.1, model.2)

 

Analysis of Variance Table

 

  Res.Df    RSS Df Sum of Sq      F  Pr(>F)  

1     16 186.15                              

2     15 106.97  1    79.178 11.102 0.00455 **

 其余模型继续此过程

四个多项式模型的模型选择标准。模型2的AIC最低,表明对于这些数据,它是此列表中的最佳模型。同样,模型2显示了最大的调整后R平方。最后,额外的SS测试显示模型2优于模型1,但模型3并不优于模型2。所有这些证据表明选择了模型2。

模型

AIC

调整后的R平方

p

1

99.1

-0.047

2

91.2

   0.36

0.0045

3

92.7

   0.33

0.55

4

94.4

   0.29

0.64

对比与方差分析

AIC,AICc或BIC中的任何一个都可以最小化以选择最佳模型。



 

$Fit.criteria

  Rank Df.res   AIC   AICc    BIC R.squared Adj.R.sq p.value Shapiro.W Shapiro.p

1    2     16 99.13 100.80 101.80   0.01478  -0.0468 0.63080    0.9559    0.5253

2    3     15 91.16  94.24  94.72   0.43380   0.3583 0.01403    0.9605    0.6116

3    4     14 92.68  97.68  97.14   0.44860   0.3305 0.03496    0.9762    0.9025

4    5     13 94.37 102.00  99.71   0.45810   0.2914 0.07413    0.9797    0.9474

 

 

  Res.Df    RSS Df Sum of Sq       F   Pr(>F)  

1     16 186.15                                

2     15 106.97  1    79.178 10.0535 0.007372 **  ## Compares m.2 to m.1

3     14 104.18  1     2.797  0.3551 0.561448     ## Compares m.3 to m.2

4     13 102.38  1     1.792  0.2276 0.641254     ## Compares m.4 to m.3

研究最终模型



Coefficients:

             Estimate Std. Error t value Pr(>|t|)  

(Intercept) -9.00e+02   2.70e+02   -3.33   0.0046 **

Length       5.86e+00   1.75e+00    3.35   0.0044 **

Length2     -9.42e-03   2.83e-03   -3.33   0.0045 **

 

Multiple R-squared:  0.434,   Adjusted R-squared:  0.358

F-statistic: 5.75 on 2 and 15 DF,  p-value: 0.014

 

 

 

Anova Table (Type II tests)

 

Response: Clutch

          Sum Sq Df F value Pr(>F)  

Length      79.9  1    11.2 0.0044 **

Length2     79.2  1    11.1 0.0045 **

Residuals  107.0 15                 

模型的简单图解

 

检查模型的假设

 

线性模型中残差的直方图。这些残差的分布应近似正态。

残差与预测值的关系图。残差应无偏且均等。 

###通过以下方式检查其他模型:

具有多项式样条的B样条回归

B样条回归使用线性或多项式回归的较小部分。它不假设变量之间存在线性关系,但是残差仍应是独立的。该模型可能会受到异常值的影响。

### --------------------------------------------------------------
### B-spline regression, turtle carapace example
 ### --------------------------------------------------------------


summary(model)                         # Display p-value and R-squared

 

Residual standard error: 2.671 on 15 degrees of freedom

Multiple R-squared:  0.4338,  Adjusted R-squared:  0.3583

F-statistic: 5.747 on 2 and 15 DF,  p-value: 0.01403

模型的简单图解

检查模型的假设

 

线性模型中残差的直方图。这些残差的分布应近似正态。

 

残差与预测值的关系图。残差应无偏且均等。 

  

非线性回归

非线性回归可以将各种非线性模型拟合到数据集。这些模型可能包括指数模型,对数模型,衰减曲线或增长曲线。通过迭代过程,直到一定的收敛条件得到满足先后找到更好的参数估计。

在此示例中,我们假设要对数据拟合抛物线。

数据中包含变量(ClutchLength),以及我们要估计的参数(LcenterCmaxa)。 

没有选择参数的初始估计的固定过程。通常,参数是有意义的。这里Lcenter 是顶点的x坐标,Cmax是顶点的y坐标。因此我们可以猜测出这些合理的值。 尽管我们知道参数a应该是负的,因为抛物线向下打开。

因为nls使用基于参数初始估计的迭代过程,所以如果估计值相差太远,它将无法找到解决方案,它可能会返回一组不太适合数据的参数估计。绘制解决方案并确保其合理很重要。

如果您希望模型具有整体p值,并且模型具有伪R平方,则需要将模型与null模型进行比较。从技术上讲,要使其有效,必须将null模型嵌套在拟合模型中。这意味着null模型是拟合模型的特例。

对于没有定义r平方的模型,已经开发了各种伪R平方值。

### --------------------------------------------------------------
### Nonlinear regression, turtle carapace example
### --------------------------------------------------------------


Data = read.table(textConnection(Input),header=TRUE)



 

Parameters:

         Estimate Std. Error t value Pr(>|t|)   

Lcenter 310.72865    2.37976  130.57  < 2e-16 ***

Cmax     10.05879    0.86359   11.65  6.5e-09 ***

a        -0.00942    0.00283   -3.33   0.0045 **

确定总体p值和伪R平方



anova(model, model.null)

 

  Res.Df Res.Sum Sq Df  Sum Sq F value  Pr(>F) 

1     15     106.97                            

2     17     188.94 -2 -81.971   5.747 0.01403 *

 

 

$Pseudo.R.squared.for.model.vs.null

                             Pseudo.R.squared

McFadden                             0.109631

Cox and Snell (ML)                   0.433836

Nagelkerke (Cragg and Uhler)         0.436269

确定参数的置信区间




              2.5 %        97.5 %
Lcenter 305.6563154 315.800988774
Cmax      8.2180886  11.899483768
a        -0.0154538  -0.003395949




------
Bootstrap statistics
            Estimate  Std. error
Lcenter 311.07998936 2.872859816
Cmax     10.13306941 0.764154661
a        -0.00938236 0.002599385

------
Median of bootstrap estimates and percentile confidence intervals
               Median         2.5%         97.5%
Lcenter 310.770796703 306.78718266 316.153528168
Cmax     10.157560932   8.58974408  11.583719723
a        -0.009402318  -0.01432593  -0.004265714


 

模型的简单图解

 

检查模型的假设

 

线性模型中残差的直方图。这些残差的分布应近似正态。


plot(fitted(model), 
     residuals(model))

 

残差与预测值的关系图。残差无偏且均等。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/81705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序 | 一比一复刻世界杯点球大战

&#x1f4cc;个人主页&#xff1a;个人主页 ​&#x1f9c0; 推荐专栏&#xff1a;小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏&#xff01;从个人到商业的全套开发教程&#xff0c;实打实的干货分享&#xff0c;确定不来看看&#xff1f; …

Codeforces Round #837 (Div. 2) Hossam and Friends

原题链接&#xff1a;https://codeforces.com/contest/1771/problem/B 题意 &#xff1a;你总共有n个朋友编号1~n&#xff0c;其中m对互不认识&#xff0c;求1~n区间中没有互不认识的子段的总个数。 思路&#xff1a;总字段个数为每个编号前面的编号个数&#xff08;包括自己…

RK3568平台开发系列讲解(安卓适配篇)Android11 预安装应用功能

&#x1f680;返回专栏总目录 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2;Android11 上的应用预安装功能&#xff0c;主要是指配置产品时&#xff0c;需要将提前准备好的第三方应用 apk 放进 android 系统。在实际的研发过程…

【NumPy 数组连接、拆分、搜索、排序】

&#x1f935;‍♂️ 个人主页老虎也淘气 个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f44d;&#x1f3fb; 收藏…

[附源码]Python计算机毕业设计宠物领养系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等…

数学基础从高一开始5、充分必要条件

数学基础从高一开始5、充分必要条件 目录 数学基础从高一开始5、充分必要条件 概念复习 命题 真命题与假命题 命题的形式 概念定义 例1&#xff1a; 例2 练习 总结 概念复习 命题 命题:把用语言、符号或式子表达的&#xff0c;可以判断真假的陈述句称为命题。 真命题…

杨校老师课堂之MySQL数据库面试题【开发工程师面试前必看】

1.说一说三大范式 「第一范式」&#xff1a;数据库中的字段具有「原子性」&#xff0c;不可再分&#xff0c;并且是单一职责 「第二范式」&#xff1a;「建立在第一范式的基础上」&#xff0c;第二范式要求数据库表中的每个实例或行必须「可以被惟一地区分」。为实现区分通常需…

Rasa 基于规则的对话管理: 天气预报机器人

文章目录1. fallbackNLU fallback2. 意图触发动作3. 表单定义表单激活表单执行表单任务4. 天气预报机器人nlu.ymlstories.ymlrules.ymlcities.ymldomain.ymlconfig.ymlendpoints.ymlcredentials.ymlactions.py测试learn from https://github.com/Chinese-NLP-book/rasa_chinese…

Keras深度学习实战(40)——音频生成

Keras深度学习实战&#xff08;40&#xff09;——音频生成0. 前言1. 模型与数据集分析1.1 数据集分析1.2 模型分析2. 音频生成模型2.1 数据集加载与预处理2.2 模型构建与训练小结系列链接0. 前言 我们已经在《文本生成模型》一节中学习了如何利用深度神经网络生成文本&#x…

智能、人机融合智能和深度态势感知

内容摘要&#xff1a;人工智能的符号主义、联结主义和行为主义三大学派&#xff0c;分别从不同角度切入智能的本质&#xff0c;其研究观点相互补充但各有局限。在人机融合过程中&#xff0c;怎样进行人机功能分配&#xff0c;人机怎样融合学习、理解、决策、推理乃至感知。数据…

获取微信公众号token

access_token是公众号的全局唯一接口调用凭据&#xff0c;公众号调用各接口时都需使用access_token 接口调用请求说明 https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appidAPPID&secretAPPSECRET参数说明 参数是否必填说…

牛!单表千万行数据库: LIKE 搜索优化手记

我们可以在 txt 列上建立索引&#xff0c;用于优化该查询&#xff1a; CREATE INDEX tbl_like_txt_idx ON [tbl_like] ( [txt] ) 应用索引后&#xff0c;查询速度大大加快&#xff0c;仅需 5 毫秒&#xff1a; 由此可知&#xff1a;对于左前缀匹配&#xff0c;我们可以通过增…

市政工控典型安全解决方案

汽车制造业 MES系统 DNC系统 生产 安全域1 管理层 工控安全隔离装置 交换机 安全配置核查系统 HMI 历史数据库 运行监控系统 实时数据库 打印机过程 安全域2 监控层 工控漏洞扫描系统 安全交换机 工控安全审计系统 工控入侵检测系统工程师站 A 操作员站 A 实时数据库A 操作员站…

Linux中的文件传输命令(scp、rsync)、Linux之间通过sshkey公钥免密登录

scp测试环境&#xff1a;centos7.7 最小化安装&#xff0c;默认是有scp命令 -r 递归复制整个目录 -p 保留源文件的修改时间、访问时间和权限 -v 详细方式显示输出 -P&#xff08;大写&#xff09;指定port&#xff08;端口&#xff09;输出scp命令使用格式 scp /filename 目…

Linux 程序开发 之 库打桩机制

目录前言一、库打桩定义二、编译时打桩三、链接时打桩四、运行时打桩五、处理目标文件的工具前言 Linux 链接器支持一个很强大的技术&#xff0c;称为库打桩(library interpositioning)&#xff0c;它允许你截获对共享库函数的调用&#xff0c;取而代之执行自己的代码。使用打桩…

m基于ACO蚁群优化的货车运输路线规划matlab仿真,考虑车辆载重,单位运输成本等因素

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 蚁群算法是通过对自然界中真实蚂蚁的集体行为的观察,模拟而得到一种仿生优化算法,它具有很好的并行性,分布性.根据蚂蚁群体不同的集体行为特征,蚁群算法可分为受蚂蚁觅食行为启发的模型和受孵化分…

渗透学习-靶场篇-WebGoat靶场(JWT攻击)

文章目录前言一、介绍JWTJWT令牌结构获取的令牌的基本过程二、攻击方式以及靶场的搭建1.安装cWebGoat2.空加密验证攻击3.字典爆破三、认证-键值逻辑前言 本次主要学习了javaweb项目方面任意出现的一些安全问题&#xff0c;最主要的是有关于JWT身份认证上的攻击&#xff0c;并利…

es的搜索服务

1、在项目中&#xff0c;创建一个搜索服务的模块&#xff1a;search-service 2、在新创建的搜索模块中添加依赖&#xff1a; <dependencies><!--nacos--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-start…

MyBatis-Plus中的逻辑删除使用

系列文章目录 Mybatis-PlusSpringBoot结合运用_心态还需努力呀的博客-CSDN博客MyBaits-Plus中TableField和TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus分页查询&#xff08;快速上手运用&#xff09;_心态还需努力呀的博客-CSDN博客_mybatis plus分页查询 MyBa…