首页 > 其他分享 >R语言非线性方程数值分析生物降解、植物生长数据:多项式、渐近回归、负指数方程、幂函数曲线、米氏方程、逻辑曲线、Gompertz、Weibull曲线

R语言非线性方程数值分析生物降解、植物生长数据:多项式、渐近回归、负指数方程、幂函数曲线、米氏方程、逻辑曲线、Gompertz、Weibull曲线

时间:2024-01-29 21:23:34浏览次数:19  
标签:方程 函数 曲线 幂函数 参数 逻辑 拟合

全文链接: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 方程

多项式

多项式是描述生物过程的最灵活的工具。它们简单,并且虽然是曲线状的,但它们在参数上是线性的,并且可以通过使用线性回归来拟合。一个缺点是它们不能描述渐近过程,而这在生物学中非常常见。此外,它们容易过度拟合,因为我们可能会试图添加项来改善拟合,而很少关心生物现实性。


线性方程

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

image.png

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

二次方程

该方程为:

image.png

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

image.png

它测量了在 X 增加一个单位时 Y 的增加/减少。我们可以看到这种增加/减少不是恒定的,而是根据 X 的水平而变化。

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

image.png

R 中的多项式拟合

在 R 中,可以使用线性模型函数 'lm()' 进行多项式拟合。虽然这不是高效的方法,但在某些情况下,我发现自己需要使用 'nls()' 或 'drm()' 函数进行多项式拟合。


凹/凸曲线

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


指数方程

指数方程描述了递增/递减的趋势,具有恒定的相对速率。最常见的参数化形式是:

image.png

其他可能的参数化形式包括:

image.png

上述参数化形式是等价的,可以通过设置

image.png

image.png

以及

image.png

参数的含义很明确:当 X=0 时, a 是 Y 的值,而 k 表示 X 增加一个单位对 Y 的相对增加/减少。如果我们计算指数函数的一阶导数:

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

image.png

从上面我们可以得出结论:通过 X 绘制的切线的斜率为 k,也就是 (k, Y)。因此,Y 增加的量与其实际水平成比例。

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

image.png

   
plt(mdel, log="")

image.png

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

image.png

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

image.png

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

  R
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)

image.png

渐近回归模型

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

由于其生物学意义,最常见的参数化形式是:

image.png

其中a是最大可达到的Y,b是x=0时Y的值为0,c与Y随X增加而相对速率成比例。事实上,我们可以看出它的一阶导数是:

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

image.png

即:

image.png

我们可以看到生长的相对速率并不是常数(如指数模型中),而是在Y=0时最大,并随着Y的增加而减小。

让我们模拟一个示例。

  R

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

image.png

负指数方程

如果我们在上述方程中加上限制条件b=0,我们得到以下方程,通常被称为“负指数方程”:

image.png

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


幂函数曲线

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

image.png

这个曲线与X的对数上的指数曲线等效,实际上可以表示为:

image.png

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

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

image.png

我们可以看到两个参数与曲线的斜率有关,b决定了曲线的形状。当0<−b<1时,随着X的增加,Y也会增加,曲线呈现凸向上的形状。例如,这个模型可以用于根据采样面积来建模植物物种数量(Muller-Dumbois方法)。

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

image.png

   
plot(oel, log="")

image.png

如果b<0,曲线将呈现凹向上的形状,Y随着X的增加而减少。

   
curve

image.png

如果b>1且为负数,曲线将呈现凹向上的形状,Y随着X的增加而增加。

   
curve(powerC

image.png

对数方程

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

image.png

可以使用 'lm()' 函数来拟合对数方程。

   
# b 是正值

model <- lm(Y ~ log(X) )
summary(model)

image.png

   
summary(model)

image.png

   
plot(model, 

image.png

   
# b 是负值
X <- c(1,2,4,5,7,12)
a <- 2; b <- -0.5

summary(model)

image.png

   
plot(model, log="", 

image.png

Michaelis-Menten方程

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

image.png

这条曲线朝上凸起,随着X′ 的增加而增加,直到达到一个平台水平。参数a′ 表示高位渐近线(对于X→∞),而b′ 是使得响应等于a/2的X值。事实上,很容易证明:

image.png

由此可得,b=x50​=50。

斜率(一阶导数)为:

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

image.png

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

  {r}

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

# nls拟合
mol <- nls(Y ~ SSien(X, a, b))
summary(model)

image.png

  {r}
# drm拟合
summary(model)

image.png

  {r}
plot(model, log="", main = "Mic

image.png

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


产量损失/密度曲线

杂草与农作物竞争研究使用重新参数化的Michaelis-Menten模型。实际上,Michaelis-Menten的初始斜率可以被视为竞争的测量,即在首次添加杂草到系统中时产量(Y)的减少。因此,将Michaelis-Methen模型重新参数化以将i=a/b=α/β作为显式参数进行描述。重新参数化的方程为:

image.png

该模型可用于描述杂草密度对产量损失的影响。因此需要使用无杂草的产量和以下方程来计算产量损失(百分比):

image.png

其中,YW是观测到的产量,YWF是无杂草的产量。下面以日葵种植在增加密度的Sinapis arvensis杂草中的情况为例进行说明。

  {r}

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

# nls拟合

summary(model)

image.png

  {r}
# drm拟合

summary(model)

image.png

  {r}
plot(model, log="

image.png

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

确实,从上述方程我们推导出:

image.png

和所示:

image.png

   
model <- dr
summary(model)

image.png

   
plot(model

image.png

S 型曲线

S 型曲线具有 S 形状,可以是递增、递减、对称或非对称的。它们有许多参数化方法,有时可能让人困惑。因此,我们将展示一种常见的参数化方法,这在生物学方面非常有用。


逻辑曲线

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

image.png

其中,d 是上渐近线,c 是下渐近线,e 是在 d 和 c 之间产生响应的 X 值,而 b 是拐点附近的斜率。参数 b 可以是正数或负数,因此 Y 可以随着 X 的增加而增加或减少。

逻辑函数非常有用,例如用于植物生长研究。

   

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

image.png

   
plot(model, log="", 

image.png

Gompertz 曲线

Gompertz 曲线有许多参数化方法。我们倾向于使用与逻辑函数相似的参数化方法:

image.png

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

另一种不对称性

我们已经看到,相对于逻辑函数,Gompertz 函数在开始时呈现更长的延迟,但之后稳步上升。我们可以通过以下方式更改 Gompertz 函数来描述不同的模式:

image.png

该函数的自启动函数尚不可用,至少在我所知道的范围内。此外,我也不知道这个函数的特定名称。

通过在图表中比较这三个逻辑函数,我们可以看到它们在偏斜和对称性方面的差异。

   

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

unnamed-chunk-18-1.png

基于对数的 S 型曲线

在生物学中,测量的数值通常是严格为正的(时间、重量、高度、计数)。因此,使用对非正数也定义的函数可能看起来不现实。因此,通常更倾向于使用独立变量 X 被限制为正的函数。所有上述描述的 S 型曲线都可以基于 X 的对数进行,这样我们可以得到更现实的模型。


对数-逻辑曲线

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

image.png

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

image.png

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

image.png

确实:

image.png

对数-逻辑函数用于作物生长、种子萌发和生物测定,它们可以具有与逻辑函数相同的约束条件。

我们展示了一个基于对数-逻辑拟合的示例,涉及到对一个除草剂处理的甘蓝菜生物测定中不断增加剂量的关系。

   
mde <- dm(FW ~ Doe, fc = LL.4), data = baca)
smmay(moel)

image.png

   
plot(model, main = "对数-逻辑方程")

image.png

Weibull 曲线(类型 1)

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

image.png

参数与上述其他 S 型曲线的含义相同。

Weibull 曲线(类型 2)

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

image.png

参数与上述其他 S 型曲线的含义相同。

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

   

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

image.png


QQ截图20220925234806.png

最受欢迎的见解

1.R语言多元Logistic逻辑回归 应用案例

2.面板平滑转移回归(PSTR)分析案例实现

3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R语言泊松Poisson回归模型分析案例

5.R语言回归中的Hosmer-Lemeshow拟合优度检验

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

7.在R语言中实现Logistic逻辑回归

8.python用线性回归预测股票价格

9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标

标签:方程,函数,曲线,幂函数,参数,逻辑,拟合
From: https://www.cnblogs.com/tecdat/p/17995355

相关文章

  • 『学习笔记』重谈圆锥曲线
    定义第一定义:圆锥曲线,又称二次曲线,是由一平面截二次锥面得到的曲线。包括椭圆、抛物线和双曲线。二次曲线标准解析式为\(ax^2+bxy+cy^2+dx+ey+f=0\),在不同情况下会退化。第二定义:到定点(焦点)与到定直线(准线)的距离之比为常数\(e\)的点的轨迹。分类几何分类当平面与二次锥......
  • 【常微分方程】2.1.6
    [T020101]设\(f(x)\)满足\(f(x+y)=\frac{f(x)+f(y)}{1-f(x)f(y)}\),且\(f'(0)\)存在,求\(f(x)\)的表达式.解令\(x=y=0\),则\(f(0)=\frac{2f(0)}{1-f(0)^2}\),得\(f(0)=0\).注意到\[f(x+\Deltax)=\frac{f(x)+f(\Deltax)}{1-f(x)f(\Deltax)}\Lo......
  • 20240119方程图像研究
    事情起因:研究人员:csj、lqy、xzq、yjf方程图像研究要求:描点法画图(使用卡西欧),在\(x\)轴上任取值,对于给定\(x_0\),应在有限时间内求出所有对应的\(y\)。草图绘制(直接绘制):综合方程性质(如定义域、单调性、对称性),明确区间单调性及端点,利用对称性作图、或化归为已知方程并求出其......
  • 解等式方程,涉及要求出整数解
    问题描述小QQ今天做了最大公约数的题目,给定两个正整数a和b(a>b),用辗转相除很快就能得到a和b的最大公约数c,他做完心情大爽。小QQ跑去他的好朋友RED那里炫耀,但是RED告诉他,c可以用a*x+b*y=c表示,当x为正且最小时,表达式a*x+b*y=c是唯一的。小QQ想在RED面前表现一把,他夸下海口,......
  • 一阶微分方程的常数变易法/洛谷P6613
    一阶微分方程的常数变易法(1)一阶齐次线性微分方程\[\begin{aligned}F'(x)&=P(x)F(x)\\\dfrac{1}{F(x)}\timesF'(x)&=P(x)\\(\lnF(x))'&=P(x)\\\lnF(x)&=\intP(x)\textdx+\lnC\\F(x)&=Ce^{\intP(x)\textdx}\\\end{ali......
  • 偏微分方程数值解研究领域
    偏微分方程数值解研究领域:这是当代计算数学中最重要的一个分支,主要内容为求解偏微分方程近似解的各种数值方法。最常用的数值方法有:有限元方法,有限差分方法和谱方法,其应用几乎深入到现代科学技术的各个领域。本方向主要研究特色是将有限元方法对区域的灵活性和谱方法具有谱精度的......
  • 微分方程
    先导知识在学习微分(求导)的时候,对于以下几种常见函数的导数,大家一定不陌生,在接下里的微分方程求解的时候,也会利用到这些常见函数的求导以及求导运算的属性:•\((e^x)'=e^x\)•\((x^n)'=n{\cdot}x^{n-1}\)•\((\sin{x})'=\cos{x}\),\((\cos{x})'=-\sin{x}\)•\([f(x)g(x)]......
  • 使用Bootstrap方法在Python中绘制带有置信带的ROC曲线
    Bootstrap方法是一种统计学方法,在样本数据有限的情况下,通过随机重采样的方式来估计样本统计量的分布。通过应用Bootstrap方法,我们可以通过对训练数据进行多次重采样,并在每次重采样后重新拟合模型,得到多个ROC曲线。然后,我们可以使用这些ROC曲线的结果来计算置信带,以评估模型的稳定性......
  • 2.4 两类错误率、Neyman-Person决策与ROC曲线
    两类错误率灵敏度=真阳性(决策正确的阳性)/状态阳性(真阳性+假阴性)Sn=TP/TP+FN特异度=真阴性(决策正确的阴性)/状态阴性(真阴性+假阳性)Sp=TN/TN+FP第一类错误率(假阳......
  • 圆锥曲线9
    计算有技巧,却难在因式分解已知椭圆\(C:\dfrac{x^2}{8}+\dfrac{y^2}{4}=1\),过点\((1,0)\)的直线与\(C\)相交于\(A,B\)两点,过点\(C\)上的点\(P\)作\(x\)轴的平行线交线段\(AB\)于点\(Q\),直线\(OP\)的斜率为\(k^{\prime},\triangleAPQ\)的面积为\(S_1,\triangleBPQ\)的面积为\(S_2......