最近我们被客户要求撰写关于曲线回归的研究报告,包括一些图形和统计输出。本文将使用三种方法使模型适合曲线数据: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 numbersData$Length = as.numeric(Data$Length)### Create quadratic, cubic, quartic variableslibrary(dplyr)Data =
mutate(Data, Length2 = Length*Length,Length3 = Length*Length*Length,Length4 = Length*Length*Length*Length)library(FSA)headtail(Data)Length Clutch Length2  Length3     Length41     284      3   80656 22906304  65053903362     290      2   84100 24389000  70728100003     290      7   84100 24389000  707281000016    323     13  104329 33698267 1088454024117    334      2  111556 37259704 1244474113618    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.98Length        0.0276     0.0563    0.49     0.63Multiple R-squared:  0.0148,  Adjusted R-squared:  -0.0468F-statistic: 0.24 on 1 and 16 DF,  p-value: 0.631AIC(model.1)[1] 99.133summary(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.358F-statistic: 5.75 on 2 and 15 DF,  p-value: 0.014AIC(model.2)[1] 91.16157anova(model.1, model.2)Analysis of Variance TableRes.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.criteriaRank Df.res   AIC   AICc    BIC R.squared Adj.R.sq p.value Shapiro.W Shapiro.p1    2     16 99.13 100.80 101.80   0.01478  -0.0468 0.63080    0.9559    0.52532    3     15 91.16  94.24  94.72   0.43380   0.3583 0.01403    0.9605    0.61163    4     14 92.68  97.68  97.14   0.44860   0.3305 0.03496    0.9762    0.90254    5     13 94.37 102.00  99.71   0.45810   0.2914 0.07413    0.9797    0.9474Res.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.13     14 104.18  1     2.797  0.3551 0.561448     ## Compares m.3 to m.24     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.358F-statistic: 5.75 on 2 and 15 DF,  p-value: 0.014Anova Table (Type II tests)Response: ClutchSum 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-squaredResidual standard error: 2.671 on 15 degrees of freedomMultiple R-squared:  0.4338,  Adjusted R-squared:  0.3583F-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.nullPseudo.R.squaredMcFadden                             0.109631Cox and Snell (ML)                   0.433836Nagelkerke (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 statisticsEstimate  Std. error
Lcenter 311.07998936 2.872859816
Cmax     10.13306941 0.764154661
a        -0.00938236 0.002599385------
Median of bootstrap estimates and percentile confidence intervalsMedian         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))

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

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

  1. r语言岭回归参数选择_数据分析中常见的七种回归分析以及R语言实现(三)---岭回归...

    在我们平时做回归的时候,大部分都是假定自变量和因变量是线性,但有时候自变量和因变量可能是非线性的,这时候我们就可能需要多项式回归了,多项式回归就是自变量和因变量是非线性所做的一个回归模型,其表达式: ...

  2. R语言小代码6(股票数据分析)

    任务:一:请举例说明R语言如何读取Excel中不同工作表中的文件 创建一个excel文件,给不同的sheet命名:下载readxl包,使用read_xlsx方法,注明路径和sheet名字,就能读取不同 ...

  3. R语言处理非线性回归模型C-D方程,使用R语言进行多项式回归、非线性回归模型曲线拟合...

    对于线性关系,我们可以进行简单的线性回归.对于其他关系,我们可以尝试拟合一条曲线.曲线拟合是构建一条曲线或数学函数的过程,它对一系列数据点具有最佳的拟合效果. 使用示例数据集#我们将使Y成为因变量,X ...

  4. R语言学习笔记3_探索性/描述性数据分析

    目录 三.探索性/描述性数据分析 3.1 直方图与密度函数的估计 3.1.1 直方图 3.1.2 核密度估计 3.2 单组数据的描述性统计分析 3.2.1 单组数据的图形描述 直方图 hist( ) ...

  5. R语言——(五)、探索性数据分析

    文章目录 一.分析工具 1.图形的展示和解释 2.数据的类型 二.单变量数据探索性分析 1.分类数据的探索性分析 1.1 分类频数表 1.2 条形图(Barplot) 1.3 饼图(Pie Graph ...

  6. R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

    全文下载链接:http://tecdat.cn/?p=20531 当线性假设无法满足时,可以考虑使用其他方法(点击文末"阅读原文"获取完整代码数据). 相关视频 多项式回归 扩展可 ...

  7. 数据分析-R语言资料整理

    独家分享--48页PPT解密数据可视化! Excel图表快捷操作小技巧 基于随机森林的分类与回归 R语言制作网页 ggplot2:可视化设计师的神器,了解一下 [译]R包介绍:Online Rando ...

  8. R语言限制性立方样条回归

    前面用了2篇推文,帮大家梳理了从线性拟合到非线性拟合的常用方法,包括多项式回归.分段回归.样条回归.限制性立方样条回归,以及它们之间的区别和联系,详情请看: 多项式回归和样条回归1 多项式回归和样条回 ...

  9. 《R语言游戏数据分析与挖掘》一导读

    前 言 为什么要写这本书 随着大数据的概念越来越流行,越来越多的企业开始重视数据,期待从数据中寻找有价值的结论,以指导公司管理层决策,最终创造更大的价值.但是在游戏行业,数据分析的发展相对缓慢,很多游 ...

最新文章

  1. Win64 驱动内核编程-24.64位驱动里内嵌汇编
  2. android中如何实现UI的实时更新---需要考虑电量和流量
  3. 关于大型站点技术演进的思考(七)--存储的瓶颈(7)
  4. [bzoj3489]A simple rmq problem
  5. Leetcode题库234.回文链表(递归 类似双指针 c实现)
  6. SVN中Revert changes from this revision 跟Revert to this revision
  7. VS2008和VS2010水晶报表版本冲突的问题解决
  8. 年仅 5 岁的 Rust 如何成为最受欢迎的编程语言?
  9. Hinton胶囊网络代码正式开源,5天GitHub fork超1.4万
  10. 无法定位软件包python-pip
  11. dct变换编码研究课设实验报告_信息隐藏实验3
  12. 自动布局神器 -- ZXPAutoLayout框架的使用
  13. python实现广义线性模型_「原理」机器学习算法入门—广义线性模型(线性回归,逻辑回归)...
  14. 互联网企业实习面试经验分享(谷歌微软hulu阿里腾讯字节美团百度等等)
  15. 微信小程序,获取农历日期方法
  16. mac电脑最好用的图片浏览器,没有之一
  17. 计算机一级基础及msoffice应用,全国计算机等级考试教程一级计算机基础及MS Office应用...
  18. 新课程上线 | 学习使用 Kotlin 进行 Android 开发的最佳时机!
  19. 抖音搬运被限流评级怎么办,什么是有效申诉和无效申诉丨国仁网络资讯
  20. 阿里员工发帖吐槽人不如驴,“阿里驴学”究竟是什么?

热门文章

  1. 基于Boostrap的H+ 后台主题UI框架(开源)
  2. Java连接数据库(自学笔记)
  3. STM32 HAL库 驱动 MT6701 磁编码器
  4. Python数学建模系列(二):规划问题之整数规划
  5. [ASP.NET]下载txt格式的文件
  6. python计算器小数点功能_Python 简单计算器实现
  7. 启动nacos-server报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null
  8. 数据库原理课程设计 — 学业课程预警系统
  9. CODEVS1214
  10. 从多变形面积到多面体体积:鞋带公式的3D版本