乐趣区

关于数据挖掘:R语言非线性方程数值分析生物降解植物生长数据负指数方程幂函数曲线米氏方程逻辑曲线GompertzWeibull曲线

全文链接:https://tecdat.cn/?p=33742

原文出处:拓端数据部落公众号

简介

在抉择最佳拟合试验数据的方程时,可能须要一些教训。当咱们没有文献信息时该怎么办?咱们建设模型的办法通常是经验主义的。也就是说,咱们察看过程,绘制数据并留神到它们遵循肯定的模式。

例如,咱们的客户可能察看到一种动物对某种毒性物质的反馈是 S 形的。因而,咱们须要一个 S 形函数来拟合咱们的数据,然而,咱们如何抉择正确的方程呢?

我认为列出最常见的方程以及它们的次要个性和参数的意义可能会有用。因而,我还将给出相应的 R 函数。

非线性回归的一个问题是它以迭代形式工作:咱们须要提供模型参数的初始猜想值,算法逐渐调整这些值,直到(有心愿)收敛到近似最小二乘解。依据我的教训,提供初始猜想可能会很麻烦。因而,应用蕴含 R 函数十分不便,这能够极大地简化拟合过程。

让咱们加载必要的包。

library(nlme)

曲线形态

曲线能够依据其形态进行简略分类,这对于抉择正确的曲线来钻研过程十分有帮忙。咱们有:

  • 多项式

    1. 线性方程
    2. 二次多项式
  • 凹 / 凸曲线(无拐点)

    1. 指数方程
    2. 渐近方程
    3. 负指数方程
    4. 幂曲线方程
    5. 对数方程
    6. 矩形双曲线
  • Sigmoid 曲线

    1. 逻辑方程
    2. Gompertz 方程
    3. 对数 - 逻辑方程(Hill 方程)
    4. Weibull 类型 1
    5. Weibull 类型 2
  • 具备最大值的曲线

    1. Brain-Cousens 方程
    • *

多项式

多项式是形容生物过程的最灵便的工具。它们简略,并且尽管是曲线状的,但它们在参数上是线性的,并且能够通过应用线性回归来拟合。一个毛病是它们不能形容渐近过程,而这在生物学中十分常见。此外,它们容易适度拟合,因为咱们可能会试图增加项来改善拟合,而很少关怀生物现实性。


线性方程

显然,这不是一条曲线,只管值得在这里提到。方程为:

其中 b0 是当 X = 0 时 Y 的值,b1 是斜率,即 X 减少 / 缩小一个单位时 Y 的减少 / 缩小。当 b1>0 时,Y 随着 X 的减少而减少,否则随之缩小。

二次方程

该方程为:

其中,当 X=0 时,b0 是 Y 的值,当 X=0 时,b1和 b2 各自没有明确的生物学意义。然而,思考到一阶导数为:

它测量了在 X 减少一个单位时 Y 的减少 / 缩小。咱们能够看到这种减少 / 缩小不是恒定的,而是依据 X 的程度而变动。

在最大值 / 最小值处,响应为:

R 中的多项式拟合

在 R 中,能够应用线性模型函数 ‘lm()’ 进行多项式拟合。尽管这不是高效的办法,但在某些状况下,我发现自己须要应用 ‘nls()’ 或 ‘drm()’ 函数进行多项式拟合。


凹 / 凸曲线

让咱们进入非线性畛域。凹 / 凸曲线形容了非线性关系,通常带有渐近线和无拐点。咱们将列出以下最罕用的曲线类型。


指数方程

指数方程形容了递增 / 递加的趋势,具备恒定的绝对速率。最常见的参数化模式是:

其余可能的参数化模式包含:

上述参数化模式是等价的,能够通过设置

以及

参数的含意很明确:当 X=0 时,a 是 Y 的值,而 k 示意 X 减少一个单位对 Y 的绝对减少 / 缩小。如果咱们计算指数函数的一阶导数:

D(expression(a * exp(k * X)), "X")

从下面咱们能够得出结论:通过 X 绘制的切线的斜率为 k,也就是 (k, Y)。因而,Y 减少的量与其实际水平成比例。

moel <- dm(Cnc ~ ime fc = DRC.pDcay(),
             daa =eraion)
sumay(mdel)
plt(mdel, log="")

‘drc’ 包还蕴含 ‘EXD.2()’ 函数,它拟合了一个略微不同参数化的指数衰减模型:

其中,d 与上述模型中的 a 雷同,e=1/k。

我将同时展现 EXD.2(蓝色曲线)和 EXD.3(红色曲线)的示例。

cuve(EXD.fun(x, 0, 100, -1/0.05), co
      xlim = c(0, 100), ylim = c(0,100))
cure(EXD.fun(x, 20, 100, -1/0.05), col="red", add = T)

渐近回归模型

渐近回归模型形容了无限增长,其中当 X 趋于无穷大时,Y 趋近于一个程度渐近线。这个方程有多种不同的参数化模式,也被称为单分子成长、Mitscherlich 定律或 von Bertalanffy 定律。

因为其生物学意义,最常见的参数化模式是:

其中 a 是最大可达到的 Y,b 是 x = 0 时 Y 的值为 0,c 与 Y 随 X 减少而绝对速率成比例。事实上,咱们能够看出它的一阶导数是:

D(exesion(a - (a - b) * exp (- c * X)), "X")

即:

咱们能够看到成长的绝对速率并不是常数(如指数模型中),而是在 Y = 0 时最大,并随着 Y 的减少而减小。

让咱们模仿一个示例。


moel <- rmY ~ X, fct = DC.syReg())
plot(odl, log="",

负指数方程

如果咱们在上述方程中加上限度条件 b =0,咱们失去以下方程,通常被称为“负指数方程”:

这个方程的形态与渐近回归相似,但当 X = 0 时,Y=0(曲线通过原点)。它通常用于建模排汇的光合无效辐射(Y=PARa)与入射光合无效辐射(a=PARi)、叶面积指数(X=LAI)和消光系数(c=k)之间的关系。


幂函数曲线

幂函数曲线也被称为弗洛伊德方程或者等比方程,最罕用的参数化模式如下:

这个曲线与 X 的对数上的指数曲线等效,实际上能够示意为:

对于 X→∞,曲线并没有渐近线。斜率(一阶导数)为:

D(expression(a * X^b), "X")

咱们能够看到两个参数与曲线的斜率无关,b 决定了曲线的形态。当 0 <−b<1 时,随着 X 的减少,Y 也会减少,曲线出现凸向上的形态。例如,这个模型能够用于依据采样面积来建模动物物种数量(Muller-Dumbois 办法)。

moel <- drm(nuSces ~ Aea, fct = DCowCurve(),
             data = spieAra)
summary(mdel)
plot(oel, log="")

如果 b <0,曲线将出现凹向上的形态,Y 随着 X 的减少而缩小。

curve

如果 b >1 且为正数,曲线将出现凹向上的形态,Y 随着 X 的减少而减少。

curve(powerC

对数方程

这的确是一个对数转化后的线性模型:

能够应用 ‘lm()’ 函数来拟合对数方程。

# b 是正值

model <- lm(Y ~ log(X) )
summary(model)
summary(model)
plot(model, 
# b 是负值
X <- c(1,2,4,5,7,12)
a <- 2; b <- -0.5

summary(model)
plot(model, log="", 

Michaelis-Menten 方程

这是一个双曲线形态的方程,通常参数化为:

这条曲线朝上凸起,随着 $X^{\prime}$ 的减少而减少,直到达到一个平台程度。参数 $a^{\prime}$ 示意高位渐近线(对于 $X\rightarrow \infty$),而 $b^{\prime}$ 是使得响应等于 $a/2$ 的 $X$ 值。事实上,很容易证实:

由此可得,$b=x_{50}=50$。

斜率(一阶导数)为:

D(expression( (a*X) / (b + X) ), "X")

从这里能够看出,初始斜率(在 $X=0$ 时)为 $i = a/b$。


res <- rnorm(8, 0, 0.1)
Y <- Ye + res

# nls 拟合
mol <- nls(Y ~ SSien(X, a, b))
summary(model)
# drm 拟合
summary(model)
plot(model, log="", main ="Mic

“drc” 包还蕴含自启动函数 “MM.3()”,其中当 X=0 时,容许 Y ≠ c ≠ 0。


产量损失 / 密度曲线

杂草与农作物竞争钻研应用从新参数化的 Michaelis-Menten 模型。实际上,Michaelis-Menten 的初始斜率能够被视为竞争的测量,即在首次增加杂草到零碎中时产量(Y)的缩小。因而,将 Michaelis-Methen 模型从新参数化以将 i =a/b=α/ β 作为显式参数进行形容。从新参数化的方程为:

该模型可用于形容杂草密度对产量损失的影响。因而须要应用无杂草的产量和以下方程来计算产量损失(百分比):

其中,YW 是观测到的产量,YWF 是无杂草的产量。上面以日葵种植在减少密度的 Sinapis arvensis 杂草中的状况为例进行阐明。


competition$YL <- (Ywf - competition$Yield) / Ywf * 100

# nls 拟合

summary(model)
# drm 拟合

summary(model)
plot(model, log="

上述拟合束缚了当杂草密度为 0 时,产量损失为 0。

的确,从上述方程咱们推导出:

和所示:

model <- dr
summary(model)
plot(model

S 型曲线

S 型曲线具备 S 形态,能够是递增、递加、对称或非对称的。它们有许多参数化办法,有时可能让人困惑。因而,咱们将展现一种常见的参数化办法,这在生物学方面十分有用。


逻辑曲线

逻辑曲线来源于累积逻辑散布函数;曲线在拐点处对称,并能够参数化为:

其中,d 是上渐近线,c 是下渐近线,e 是在 d 和 c 之间产生响应的 X 值,而 b 是拐点左近的斜率。参数 b 能够是负数或正数,因而 Y 能够随着 X 的减少而减少或缩小。

逻辑函数十分有用,例如用于动物成长钻研。


model <- dm(weightFree ~ DAE, fct =
sum
plot(model, log="", 

Gompertz 曲线

Gompertz 曲线有许多参数化办法。咱们偏向于应用与逻辑函数类似的参数化办法:

其中参数的含意与逻辑函数中的参数雷同。不同之处在于该曲线在拐点处不对称。

另一种不对称性

咱们曾经看到,绝对于逻辑函数,Gompertz 函数在开始时出现更长的提早,但之后稳步回升。咱们能够通过以下形式更改 Gompertz 函数来形容不同的模式:

该函数的自启动函数尚不可用,至多在我所晓得的范畴内。此外,我也不晓得这个函数的特定名称。

通过在图表中比拟这三个逻辑函数,咱们能够看到它们在偏斜和对称性方面的差别。


curve(E.fun(x, b, c, d, e), add = T, col = "blue" )
legen

基于对数的 S 型曲线

在生物学中,测量的数值通常是严格为正的(工夫、分量、高度、计数)。因而,应用对非负数也定义的函数可能看起来不事实。因而,通常更偏向于应用独立变量 X 被限度为正的函数。所有上述形容的 S 型曲线都能够基于 X 的对数进行,这样咱们能够失去更事实的模型。


对数 - 逻辑曲线

在许多利用中,S 型响应曲线在 x 的对数上是对称的,这须要一个对数 - 逻辑曲线(对数正态曲线实际上简直等效,但很少应用)。例如,在生物测定中(但也在萌生测定中),对数 - 逻辑曲线定义如下:

参数的含意与上述逻辑方程中的含意雷同。很容易看出上述方程等价于:

另一种可能的参数化办法是所谓的 Hill 函数:

的确:

对数 - 逻辑函数用于作物成长、种子萌生和生物测定,它们能够具备与逻辑函数雷同的约束条件。

咱们展现了一个基于对数 - 逻辑拟合的示例,波及到对一个除草剂解决的甘蓝菜生物测定中一直减少剂量的关系。

mde <- dm(FW ~ Doe, fc = LL.4), data = baca)
smmay(moel)
plot(model, main = "对数 - 逻辑方程")

Weibull 曲线(类型 1)

类型 1 Weibull 曲线与代替 Gompertz 曲线的对数 - 逻辑曲线类似。方程如下:

参数与上述其余 S 型曲线的含意雷同。

Weibull 曲线(类型 2)

类型 2 Weibull 曲线与 Gompertz 曲线的对数 - 逻辑曲线类似。方程如下:

参数与上述其余 S 型曲线的含意雷同。

咱们将对这些 Weibull 曲线拟合数据集。


plot(model, main = "Weibull functions")
plo

最受欢迎的见解

1.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e7%bb%98%e5%88%b6%e7%94…)R 语言多元 Logistic 逻辑回归 利用案例

2.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e7%94%9f%e5%ad%98%e5%88…)面板平滑转移回归 (PSTR) 剖析案例实现

3.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e5%a6%82%e4%bd%95%e5%9c…)matlab 中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e4%b8%ad%e4%bd%bf%e7%94…)R 语言泊松 Poisson 回归模型剖析案例

5.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e7%94%9f%e5%ad%98%e5%88…)R 语言回归中的 Hosmer-Lemeshow 拟合优度测验

6.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80ggplot2%e8%af%af%e5%b7%a…)r 语言中对 LASSO 回归,Ridge 岭回归和 Elastic Net 模型实现

7.[](https://tecdat.cn/r-%e8%af%ad%e8%a8%80%e7%bb%98%e5%88%b6%e5%8…)在 R 语言中实现 Logistic 逻辑回归

8.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e5%a6%82%e4%bd%95%e6%89…)python 用线性回归预测股票价格

9.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e4%b8%ad%e7%9a%84%e7%94…)R 语言如何在生存剖析与 Cox 回归中计算 IDI,NRI 指标

退出移动版