1
$\begingroup$

I have the data from Li et al. 2003 paper "Belowground biomass dynamics in the Carbon Budget Model of the Canadian Forest Sector". I am trying to recreate equation 6 in R so that I can produce the same parameter estimates. (eq. 6), however, Pf has a maximum value of 0.426, as values greater will produce a 0. The paper doesn't state whether a linear or non linear model is used so I am having trouble figuring out how to go about coding this is R.

At first I was thinking something like model3<-lm(log(fine_prop)~log(total_roots),data=Li2003_root_proportion) But this isn't correct as it won't match the parameters stated in the table 3 for equation number 6.

I know this isn't much to go on but I would appreciate any help. Thanks!

relationship for this data

Equation for the figure

enter image description here

$\endgroup$

1 Answer 1

3
$\begingroup$

At first I was thinking something like model3<-lm(log(fine_prop)~log(total_roots),data=Li2003_root_proportion). But this isn't correct as it won't match the parameters

What you fitted was

$$\log(P_f) = a + b \log(RB)$$

which relates to a power law instead of an exponential distribution

$$P_f = e^{\log P_f} = e^{a + b \log(RB)} = (e^a) RB^b$$

To fit the exponential function $Pf = a+b \exp(c RB)$ you use a non-linear fitting method instead.

however, Pf has a maximum value of 0.426, as values greater will produce a 0.

To impose a maximum for the function you can impose limits on the parameters. The easiest is if you can reparameterize the function in terms of the maximum. In the case that $RB>0$ and the exponential term is decaying, we have for the function $P_f(RB) = a+b \exp(c RB)$ the maximum

$$m = \max(P_f) = a+b$$

So we could rewrite $a$ as

$$a = m-b$$ and fit the equation

$$P_f(RB) = m-b+b \exp(c RB) = m(1-b \exp(c RB))$$

while imposing a maximum restriction on $m$. For these restrictions see the lower and upper parameters of the function nls in R (https://stat.ethz.ch/R-manual/R-devel/library/stats/html/nls.html).

$\endgroup$
2
  • $\begingroup$ Thank you very much for your answer, I really appreciate you taking the time to help. Would you be able to help with how to code this in R, especially if the Pf has a max value of 0.426. Forgive my ignorance, I am a bit of a novice. $\endgroup$
    – James
    Feb 25, 2022 at 4:29
  • $\begingroup$ Thank you very much for your thorough explanation. Forgive my ignorance but I am a novice with R at least when it comes to nls. Would it be possible give me an example of how I would code Pf=m(1-b exp(cRB) with the limit. I usually try and learn from previous examples but the few examples I have found are beyond me. $\endgroup$
    – James
    Feb 25, 2022 at 17:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.