5.1 Rendement photosynthétique

Afin d’avoir un premier aperçu de ce qu’est une régression non linéaire par les moindres carrés et comment on la calcule dans R, nous allons détailler un exemple concret. La posidonie Posidonia oceanica (L.) Delile (1813) est une plante à fleurs marine qui forme des herbiers denses en mer Méditerranée. Ses feuilles sont particulièrement adaptées à l’utilisation de la lumière qui règne à quelques dizaines de mètres en dessous de la surface où elle prospère en herbiers denses.

Herbier de posidonies par Frédéric Ducarme, wikimedia, license Creative Commons Attribution-Share Alike 4.0.
Herbier de posidonies par Frédéric Ducarme, wikimedia, license Creative Commons Attribution-Share Alike 4.0.

Pour étudier le rendement de sa photosynthèse, c’est-à-dire la part du rayonnement lumineux reçu qui est effectivement utilisée pour initier la chaîne de transport d’électrons au sein de son photosystème II, nous pouvons utiliser un appareil spécialisé : le diving PAM.

Diving PAM, photo par Arnaud Abadie.
Diving PAM, photo par Arnaud Abadie.

Cet appareil est capable de déterminer le taux de transfert des électrons (ETR en µmol électrons/m2/s) par l’analyse de la fluorescence réémise par la plante lorsque ses photosites sont excités par une lumière monochromatique pulsée (Walz 2018). Une façon de déterminer la réponse de la plante en rendement photosynthétique en fonction de l’intensité de la lumière reçue est de mesurer successivement l’ETR pour différentes intensités de lumière. En anglais cela s’appelle la “Rapid Light Curve” ou RLC en abrégé. Comme toutes les longueurs d’ondes lumineuses ne sont pas utilisables par la chlorophylle, l’intensité lumineuse est exprimée dans une unité particulière, le “PAR” ou “Photosynthetically Active Radiation” en µmol photons/m2/s. Une RLC représente donc la variation de l’ETR en fonction des PAR10. Une RLC typique commence par une relation quasi linéaire aux faibles intensités, pour s’infléchir et atteindre un plateau de rendement maximum. Au-delà, si l’intensité lumineuse augmente encore, des phénomènes de photoinhibition apparaissent et le rendement diminue dans une troisième phase. Voici une RLC mesurée à l’aide du diving PAM sur une feuille de P. oceanica.

rlc <- as_dtx(tribble(
  ~etr, ~par,
  0.0,  0,
  0.5,  2,
  3.2,  11,
  5.7,  27,
  7.4,  50,
  8.4,  84,
  8.9,  170,
  8.4,  265,
  7.8,  399
))
rlc <- labelise(rlc,
  label = list(
    etr = "ETR",
    par = "PAR"),
  units = list(
    etr = "µmol électrons/m^2/s",
    par = "µmol photons/m^2/s")
)
chart(data = rlc, etr ~ par) +
  geom_point()

Les trois phases successives sont bien visibles ici (linéaire pour des PAR de 0 à 25, plateau à des PAR de 150-200 et photoinhibition à partir de 200 PAR). Naturellement, une régression linéaire dans ces données n’a pas de sens. Une régression polynomiale d’ordre trois donne ceci :

rlc_lm <- lm(data = rlc, etr ~  par + I(par^2) + I(par^3))
chart(rlc_lm)

La régression polynomiale tente maladroitement de s’ajuster dans les données, mais est incapable de retranscrire les trois phases correctement. En particulier, la troisième est incorrecte puisque le modèle semble indiquer une reprise du rendement aux intensités les plus élevées. Une représentation incorrecte est à craindre lorsque le modèle mathématique utilisé ne représente pas les différentes caractéristiques du phénomène étudié. L’utilisation d’un modèle adéquat est possible ici seulement par régression non linéaire. En effet, aucune transformation monotone croissante ou décroissante ne peut linéariser ce type de données.

Quand passer à la régression non linéaire ?

Nous pouvons être amenés à utiliser une régression non linéaire pour l’une de ces deux raisons, voire les deux en même temps :

  • Lorsque le nuage de points est curvilinéaire, évidemment, mais après avoir tenté de le linéariser (et de résoudre un problème éventuel d’hétéroscédasticité ou de non-Normalité des résidus) par transformation sans succès,

  • En fonction de nos connaissances a priori du phénomène. Tout phénomène issu d’un mécanisme dont nous connaissons le mode de fonctionnement menant à une équation mathématique non linéaire. Cela se rencontre fréquemment en physique, en chimie, et même en biologie (courbes de croissance, effet de modifications environnementales, courbes dose-réponse, etc.)

Les spécialistes de la photosynthèse ont mis au point différents modèles pour représenter les RLC. (Platt, Gallegos, and Harrison 1980) ont proposé une formulation mathématique des phénomènes mis en jeu ici. Leur équation est la suivante :

\[ETR = ETR_{max} \cdot (1 - e^{-PAR \cdot \alpha/ETR_{max}}) \cdot e^{-PAR \cdot \beta/ETR_{max}}\]

avec \(PAR\) la variable indépendante, \(ETR\), la variable dépendante, et \(ETR_{max}\), \(\alpha\) et \(\beta\), les trois paramètres du modèle. \(ETR_{max}\) est le rendement maximum possible, \(\alpha\) est la pente de la partie initiale linéaire avant infléchissement vers le maximum et \(\beta\) est le coefficient de photoinhibition.

En matière de régression non linéaire, il est tout aussi important de bien comprendre les propriétés mathématiques de la fonction utilisée que de faire un choix judicieux du modèle. En particulier, il faut s’attacher à bien comprendre la signification (biologique) des paramètres du modèle. Non seulement, cela aide à en définir des valeurs initiales plausibles, mais c’est aussi indispensable pour pouvoir ensuite bien interpréter les résultats obtenus.

Nous pouvons facilement créer une fonction dans R qui représente ce modèle :

pgh_model <- function(x, etr_max, alpha, beta)
  etr_max * (1 - exp(-x * alpha/etr_max)) * (exp(-x * beta/etr_max))

Le premier argument de la fonction doit être la variable indépendante (notée de manière générique x, mais n’importe quel nom fait l’affaire ici) et les autres arguments correspondent aux paramètres du modèle, donc etr_max, alpha et beta. Ce modèle peut être ajusté dans R à l’aide de la fonction nls() pour “Nonlinear Least Squares” (regression). Par contre, nous devons fournir une information supplémentaire (l’explication sera détaillée plus loin) : des valeurs approximatives de départ pour les paramètres. Nous voyons sur le graphique que etr_max = 9 est une estimation plausible, mais il est difficile de déterminer alpha et beta rien qu’en regardant le graphique. Nous allons fixer alpha = 1 (rendement max), et partir d’un modèle sans photoinhibition en utilisant beta = 0. Voici comment la régression non linéaire par les moindres carrés avec notre fonction pgh_model peut être calculée :

rlc_nls <- nls(data = rlc, etr ~ pgh_model(par, etr_max, alpha, beta),
  start = list(etr_max = 9, alpha = 1, beta = 0))
# Note : tabularise() ne peut pas encore traiter les modèles non "self-start"
# (vous verrez ce que cela signifie plus loin) pour les équations. Donc,
# nous demandons le tableau SANS l'équation du modèle
summary(rlc_nls) |> tabularise(equation = FALSE)

Terme

Valeur estimée

Ecart type

Valeur de tobs.

Valeur de p

etr_max

9.35106

0.26197

35.70

3.22·10-08

***

alpha

0.32738

0.01342

24.40

3.11·10-07

***

beta

0.00398

0.00108

3.67

1.04·10-02

*

0 <= '***' < 0.001 < '**' < 0.01 < '*' < 0.05

Ecart type des résidus : 0.1729 pour 6 degrés de liberté

Nombre d'itérations pour converger : 7

Tolérance atteinte à la convergence : 3.814e-06

# Une autre solution est de fournir l'équation en LaTeX à tabularise()
#summary(rlc_nls) |> tabularise(equation = "ETR = ETR_{max} \\cdot (1 - e^{-PAR \\cdot \\alpha/ETR_{max}}) \\cdot e^{-PAR \\cdot \\beta/ETR_{max}}")

La dernière ligne, “tolérance atteinte à la convergence” indique que le modèle a pu être calculé. Nous avons un tableau des paramètres qui ressemble très fort à celui de la régression linéaire, y compris les tests t de Student sur chacun des paramètres (H0: paramètre = 0, H1: paramètre ≠ 0). Nous obtenons etr_max = 9.4, alpha = 0.33 et beta = 0.0040, avec tous les paramètres significativement différents de zéro au seuil \(\alpha\) de 5%, mais pas \(\beta\) au seil \(\alpha\) de 1%, ce qui montre qu’il est calculé avec le moins de précision des trois11. Pour l’instant, nous allons conserver ce modèle tel quel. Notre modèle paramétré donne donc (ici, il faut écrire l’équation LaTeX soi-même) :

\[ETR = 9.4 \cdot (1 - e^{-PAR \cdot 0.33/9.4}) \cdot e^{-PAR \cdot 0.0040/9.4}\]

Voyons ce que cela donne sur le graphique. Nous utiliserons pour ce faire une petite astuce qui consiste à utiliser as.function() pour transformer l’objet nls obtenu en une fonction utilisable par stat_function() pour le graphique ggplot2 réalisé à l’aide de chart()12.

chart(data = rlc, etr ~ par) +
  geom_point() +
  stat_function(fun = as.function(rlc_nls), col = "skyblue3", linewidth = 1)

# On peut aussi faire simplenet (mais c'est moins flexible) :
#chart(rlc_nls)

Ce modèle représente bien mieux le phénomène étudié, et il s’ajuste d’ailleurs beaucoup mieux également dans les données que notre polynôme. Une comparaison sur base du critère d’Akaike est également en faveur de ce dernier modèle non linéaire (pour rappel, plus la valeur est faible, mieux c’est) :

AIC(rlc_lm, rlc_nls)
#         df       AIC
# rlc_lm   5 31.834047
# rlc_nls  4 -1.699078

Super ! Nous venons de réaliser ensemble notre première régression non linéaire par les moindres carrés. Étudions un petit peu plus dans le détail cette technique dans la section suivante. En effet, il est utile de connaitre et comprendre les différents pièges qui peuvent se présenter à nous pour les éviter.

À vous de jouer !
h5p

Références

Platt, T., C. L. Gallegos, and W. G. Harrison. 1980. “Photoinhibition of Photosynthesis in Natural Assemblages of Marine Phytoplankton.” Journal of Marine Research 38: 687–701.
Walz, Heinz. 2018. Saturation Pulse Analysis.” In DIVING-PAM-II: Underwater Chlorophyll Fluorometer Manual, edited by Heinz Walz GmbH, 49:81–94. February. https://walz.com/downloads/manuals/diving-pam-II/DIVING_PAM_II_02.pdf.

  1. Techniquement, l’ETR nécessite d’effectuer des mesures après stabilisation de la photosynthèse, ce qui prend plusieurs minutes. Donc, une courbe rapide est discutable de ce point de vue, mais reste un outil utile en écophysiologie où la comparaison de différentes RLCs indique un changement de capacité photosynthétique de la plante.↩︎

  2. Il faut faire attention ici, cela peut aussi signifier que nous n’avons pas assez de points après le plateau pour pouvoir estimer correctement \(\beta\) !↩︎

  3. Il est également possible de l’utiliser avec curve() pour un graphique de base dans R.↩︎