class: center, middle, inverse, title-slide # 使用 R 软件分析光合数据之三 ## 光响应曲线的拟合 ### 祝介东 ### 北京力高泰科技有限公司 技术部 ### 2020-04-02 修改 --- background-image: url("https://s1.ax1x.com/2020/03/30/GmT0oT.png") class: inverse, left, middle, animated, fadeIn # 1. 光响应曲线的模型 # 2. 模型的拟合 # 3. 补偿点和饱和点的计算 # 4. 步骤详解及演示 --- class: inverse, middle, center, animated, fadeIn # .large.bold[光响应曲线的模型] --- class: animated, fadeIn # 光响应曲线模型的类型 .large.bold[光响应曲线的模型有很多,常见的有四大类: - 直角双曲线模型 - 非直角双曲线模型 - 指数模型 - 直角双曲线修正模型 ] 其简单介绍可以参考:[光响应曲线拟合-github](https://zhujiedong.github.io/photoanalysis/lrc-fit.html) 或 [光响应曲线拟合-gitee](http://zhu_jie_dong.gitee.io/photoanalysis/lrc-fit.html) --- class: animated, fadeIn # 模型的拟合 不管哪个模型的拟合,都属于非线性拟合,可以使用下面几个函数来拟合: <br /> <br /> ```r stats::nls() minpack.lm::nlsLM() nls2::nls2() ``` <br /> <br /> 其中 `nls2` 基于 `nls`,但可以设定一个初值的范围,`minpack.lm` 基于 `MINPACK` 库,`nlsLM` 最大的特点就是对初值的敏感性较低,比较容易得到测量结果(同样的初值出现不收敛的概率相对低)。 关于非线性拟合初值确定的问题可参考:[非线性拟合初值的确定-github](https://zhujiedong.github.io/photoanalysis/start-con.html) 或 [非线性拟合初值的确定-gitee](http://zhu_jie_dong.gitee.io/photoanalysis/start-con.html) --- class: animated, fadeIn # 光补偿点的计算 <br /> <br /> 除了指数模型和直角双曲线修正模型外,其他模型因为模型参数本身不使用补偿点作为参数,无法通过拟合得到光补偿点,我们可以通过下面的方式计算: <br /> <br /> 当达到光补偿点时,净光合速率为零,我们可以通过计算出模型参数后,使得净光合速率为零,然后将模型作为光强未知的一元方程求解,在比较低的范围内(例如 1 ~ 50),得到方程的根即为光的补偿点。 --- class: animated, fadeIn # 光饱和点的计算 .pull-left[ 理论上可以使用下面的方式来计算:弱光条件下 ( `\(\leq 200 \mu mol\cdot m^{-2}\cdot s^{-1}\)` ) 的数据通过线性拟合得到表观量子效率(apparent quantum efficiency,AQE),利用非线性最小二乘法估算 `\(P_{nmax}\)` ,最后计算求解 `\(I_{sat}\)`, `$$P_{nmax}= AQE \times I_{sat} - R_{d}$$` 但此方法测得的光饱和点远小于实测值。 ] .pull-right[ <div class="figure" style="text-align: center"> <img src="./img/aqe.png" alt="引用自叶子飘等( 2010)" width="623" /> <p class="caption">引用自叶子飘等( 2010)</p> </div> ] --- class: animated, fadeIn # 光饱和点的计算 除了直角双曲线修正模型外,其他三种模型均不存在极大值,无光饱和点,我们可以根据计算补偿点相似的方法,将净光合速率达到最大光合速率一定比例时的值,作为刚刚达到光饱和点时的光合速率,此时也在一定范围内(例如400 ~ 2000)计算一元方程的根,将其作为光饱和点。可参考: Huang, HY, XY Dou, PY Sun, B Deng, GJ Wu, and CL Peng. 2009. “Comparison of Photosynthetic Characteristics in Two Ecotypes of Jatropha Curcas in Summer.” Acta Ecologica Sinica, no. 29: 2861–2867 Zhang, XS, SH Shen, and J Song. 2009. “The Vertical Distribution of Cotton Leaf Nitrogen Content and Photosynthetic Characteristics in the North China Plain.” Acta Ecologica Sinica, no. 29: 1893–1898. --- class: animated, fadeIn # 代码详解 ## 以直角双曲线为例的介绍 直角双曲线的形式为: `$$P_{n} = \frac{\alpha I\ P_{nmax}}{\alpha I + P_{nmax}}- R_{d}$$` * 其中 `\(P_{n}\)` 为净光合速率; * I 为光强; * `\(\alpha\)` 为光响应曲线的初始斜率,也称之为初始量子效率; * `\(P_{nmax}\)` 为最大净光合速率; * `\(R_{d}\)`:为暗呼吸速率。 `\(P_{n}\)` 和 I 是我们直接测量的数据,其他的为模型计算所需要的参数。 --- class: animated, fadeIn # 模型的公式化 我们要对直角双曲线模型进行拟合,必须将其写为 R 的数学表达形式,才能用于 formula,例如非直角双曲线写为 formula 为: ```r lrc_A ~ (alpha * lrc_Q * Am) * (1/(alpha * lrc_Q + Am)) - Rd ``` 其中 lrc_Q 为光强,lrc_A 为净光合速率 具体可参考帮助文档: ```r ?Arithmetic ?formula ``` --- class: animated, fadeIn # 数据的读取 数据的读取可以根据存储的形式,选择合适的方式,这是本系列第二讲的内容,此处不赘述。 # 非线性拟合 最开始可以选择 `minpack.lm` 中的 `nlsLM` 函数进行拟合。各个初值的设定原则为: - Am:最大光合速率可以使用测量的光合速率最大值与最小值之差。 - Rd:可以使用最小的光合速率的绝对值。 - `\(\alpha\)`: 初始斜率可以使用 0.05 等小数点后第二位的数字来作为尝试。 - 如果有一个大概的范围,可以使用 `nls2` 来构造一个初值的范围网格 可参考:[初值的确定-github](https://zhujiedong.github.io/photoanalysis/start-con.html) 或 [初值的确定-gitee](http://zhu_jie_dong.gitee.io/photoanalysis/start-con.html) --- class: animated, fadeIn # 拟合结果的查看和调用 - 使用 `summary` 查看拟合结果 - 返回的结果是一个列表,计算的参数存储于 coefficient 列表内 有用的帮助文档: ```r ?summary ?coef ``` 参数结果可以直接调用以方便计算。 --- class: animated, fadeIn # 补偿点和饱和点的计算 分为两步 - 调用拟合的参数,构造一元方程 - 使用 `uniroot` 求得一定范围内的解 参考: ```r ?uniroot ``` --- class: inverse, center, middle, animated, fadeIn # .large.bold[详细代码运行演示] --- background-image: url("https://s1.ax1x.com/2020/04/02/GJimlV.png") background-size: contain