fitaci(data, varnames = list(ALEAF = "Photo", Tleaf = "Tleaf", Ci = "Ci", PPFD = "PARi", Rd = "Rd"), Tcorrect = TRUE, citransition = NULL, quiet = FALSE, startValgrid = TRUE, algorithm = "default", useRd = FALSE, ...)"print"(x, ...)"summary"(object, ...)"coef"(object, ...)"fitted"(object, ...)"plot"(x, what = c("data", "model"), xlim = NULL, ylim = NULL, whichA = c("Ac", "Aj", "Amin"), add = FALSE, pch = 19, addzeroline = TRUE, addlegend = !add, transitionpoint = TRUE, lwd = c(1, 2), ...)fitacis(data, group, progressbar = TRUE, quiet = FALSE, ...)"plot"(x, how = c("manyplots", "oneplot"), ...)"coef"(object, ...)
fitacis
, also requires a grouping variable.nls
, sets the algorithm for finding parameter values.fitaci
fitaci
fitacis
, the name of the grouping variable in the dataframe.fitacis
, whether to display a progress bar (default is TRUE).Photosyn
nls
, and contains more detail on the quality of the fitPhotosyn
function with the arguments adjusted for the current fit. That is, Vcmax, Jmax and Rd are set to those estimated in the fit, and Tleaf and PPFD are set to the mean value in the dataset.Fits the Farquhar-Berry-von Caemmerer model of photosynthesis to measurements of photosynthesis and intercellular $CO2$ concentration (Ci). Estimates Jmax, Vcmax, Rd and their standard errors. A simple plotting method is also included, as well as the function fitacis
which quickly fits multiple A-Ci curves. Temperature dependencies are taken into account, see Photosyn
.
Uses non-linear regression to fit an A-Ci curve. No assumptions are made on which part of the curve is Vcmax or Jmax limited. Three parameters are estimated, Jmax, Vcmax and Rd. When Tcorrect=TRUE
(the defualt), Jmax and Vcmax are re-scaled to 25C, using the temperature response parameters provided (but Rd is always at measurement temperature). When Tcorrect=FALSE
, estimates of all parameters are at measurement temperature.
When citransition
is set, it splits the data into a Vcmax-limited (where Ci < citransition), and Jmax-limited region (Ci > citransition). Both parameters are then estimated separately for each region (Rd is estimated only for the Vcmax-limited region). Note that the actual transition point as shown in the standard plot of the fitted A-Ci curve may be quite different from that provided, since the fitting method simply decides which part of the dataset to use for which limitation, it does not constrain the actual estimated transition point directly. See the example below.
When plotting the fit, the A-Ci curve is simulated using the Aci
function, with leaf temperature (Tleaf) and PPFD set to the mean value for the dataset. If PPFD is not provided in the dataset, it is assumed to equal 1800 mu mol m-2 s-1.
# Fit an A-Ci curve on a dataframe that contains Ci, Photo and optionally Tleaf and PPFD. # Here, we use the built-in example dataset 'acidata1'. f <- fitaci(acidata1)Warning message: PARi not in dataset; assumed PARi = 1800.# Note that the default behaviour is to correct Vcmax and Jmax for temperature, # so the estimated values are at 25C. To turn this off: f2 <- fitaci(acidata1, Tcorrect=FALSE)Warning message: PARi not in dataset; assumed PARi = 1800.# To use different T response parameters (see ?Photosyn), f3 <- fitaci(acidata1, Tcorrect=TRUE, EaV=25000)Warning message: PARi not in dataset; assumed PARi = 1800.# Make a standard plot plot(f)
# Look at a summary of the fit summary(f)Result of fitaci. Data and predictions: Ci Ameas Amodel Ac Aj Rd VPD Tleaf PPFD Patm 1 72.81690 -0.6656991 -0.7314450 0.6051437 1.233113 1.33653 1.5 33.36515 1800 101 2 89.33801 0.6089389 0.5060348 1.8427683 3.513934 1.33653 1.5 33.34065 1800 101 3 119.73218 2.4030110 2.7087383 4.0458383 6.918011 1.33653 1.5 33.31123 1800 101 4 163.84422 5.5908708 5.7507500 7.0887122 10.595420 1.33653 1.5 33.29358 1800 101 5 219.61709 9.2532753 9.3634009 10.7035039 13.904585 1.33653 1.5 33.29326 1800 101 6 259.24215 12.0213403 11.7820582 13.1252916 15.686053 1.33653 1.5 33.27833 1800 101 7 416.48659 19.3715508 18.8005073 21.7606990 20.162012 1.33653 1.5 33.32764 1800 101 8 861.70294 24.0843514 23.8113161 39.8881944 25.152137 1.33653 1.5 33.35583 1800 101 9 1105.20222 24.7927750 25.0045543 47.2964494 26.344396 1.33653 1.5 33.42005 1800 101 10 1356.10582 25.3376665 25.8021661 53.9109296 27.141448 1.33653 1.5 33.55434 1800 101 Estimated parameters: Estimate Std. Error Vcmax 46.84660 1.4748353 Jmax 105.23915 1.3586480 Rd 1.33653 0.2413795 Note: Vcmax, Jmax are at 25C, Rd is at measurement T. Parameter settings: alpha = 0.24 theta = 0.85 EaV = 82620.87 EdVC = 0 delsC = 645.1013 EaJ = 39676.89 EdVJ = 2e+05 delsJ = 641.3615# Extract coefficients only coef(f)Vcmax Jmax Rd 46.84660 105.23915 1.33653# The object 'f' also contains the original data with predictions. # Here, Amodel are the modelled (fitted) values, Ameas are the measured values. with(f$df, plot(Amodel, Ameas))abline(0,1)
# The fitted values can also be extracted with the fitted() function: fitted(f)[1] -0.7314450 0.5060348 2.7087383 5.7507500 9.3634009 11.7820582 18.8005073 23.8113161 25.0045543 [10] 25.8021661# The non-linear regression (nls) fit is stored as well, summary(f$nlsfit)Formula: ALEAF ~ acifun_wrap(Ci, PPFD = PPFD, Vcmax = Vcmax, Jmax = Jmax, Rd = Rd, Tleaf = Tleaf) Parameters: Estimate Std. Error t value Pr(>|t|) Vcmax 46.8466 1.4748 31.764 7.92e-09 *** Jmax 105.2392 1.3586 77.459 1.57e-11 *** Rd 1.3365 0.2414 5.537 0.000872 *** --- Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 Residual standard error: 0.3514 on 7 degrees of freedom Number of iterations to convergence: 3 Achieved convergence tolerance: 2.806e-06# The curve generator is stored as f$Photosyn: # Calculate photosynthesis at some value for Ci, using estimated parameters and mean Tleaf, # PPFD for the dataset. f$Photosyn(Ci=820)Ci ALEAF GS ELEAF Ac Aj Rd VPD Tleaf Ca PPFD Patm 1 820 23.54216 -0.08800282 -1.306973 38.48883 24.88323 1.33653 1.5 33.35401 400 1800 101# Photosynthetic rate at the transition point: f$Photosyn(Ci=f$Ci_transition)$ALEAF[1] 17.35755# Set the transition point; this will fit Vcmax and Jmax separately. Note that the *actual* # transition is quite different from that provided, this is perfectly fine : # in this case Jmax is estimated from the latter 3 points only (Ci>800), but the actual # transition point is at ca. 400ppm. g <- fitaci(acidata1, citransition=800)Warning message: PARi not in dataset; assumed PARi = 1800.plot(g)
g$Ci_transition[1] 379.9176# Use measured Rd instead of estimating it from the A-Ci curve. # The Rd measurement must be added to the dataset used in fitting, # and you must set useRd=TRUE. acidata1$Rd <- 2 f2 <- fitaci(acidata1, useRd=TRUE)Warning message: PARi not in dataset; assumed PARi = 1800.f2Result of fitaci. Data and predictions: Ci Ameas Amodel Ac Aj Rd VPD Tleaf PPFD Patm 1 72.81690 -0.6656991 -1.35292721 0.6471405 1.265786 2 1.5 33.36515 1800 101 2 89.33801 0.6089389 -0.02958143 1.9706558 3.607041 2 1.5 33.34065 1800 101 3 119.73218 2.4030110 2.32594377 4.3266181 7.101311 2 1.5 33.31123 1800 101 4 163.84422 5.5908708 5.57892425 7.5806663 10.876157 2 1.5 33.29358 1800 101 5 219.61709 9.2532753 9.44169947 11.4463232 14.273001 2 1.5 33.29326 1800 101 6 259.24215 12.0213403 12.02670022 14.0361822 16.101670 2 1.5 33.27833 1800 101 7 416.48659 19.3715508 18.67972605 23.2708838 20.696230 2 1.5 33.32764 1800 101 8 861.70294 24.0843514 23.81462288 42.6564209 25.818580 2 1.5 33.35583 1800 101 9 1105.20222 24.7927750 25.03933794 50.5788062 27.042444 2 1.5 33.42005 1800 101 10 1356.10582 25.3376665 25.85805509 57.6523289 27.860660 2 1.5 33.55434 1800 101 Estimated parameters: Estimate Std. Error Vcmax 50.09774 1.181665 Jmax 108.26249 1.095321 Rd 2.00000 NA Note: Vcmax, Jmax are at 25C, Rd is at measurement T. Note: measured Rd was provided, only Vcmax and Jmax were fit. Parameter settings: alpha = 0.24 theta = 0.85 EaV = 82620.87 EdVC = 0 delsC = 645.1013 EaJ = 39676.89 EdVJ = 2e+05 delsJ = 641.3615