crops: Whole-plant biomass Data of 12 Species of Crops

cropsR Documentation

Whole-plant biomass Data of 12 Species of Crops

Description

The whole-plant biomass data of 12 species of crops growing in northern China in 2011.

Usage

data(crops)

Details

In the data set, there are six columns: Code, CommonName, Date, Time, FM, and DM. Code is used to save the codes of crops; CommonName is used to save the common names of crops; Date is used to save the investigation date; Time is used to save the ages of crops from the sowing date (27 June, 2011) in days; FM is used to save the whole-plant fresh mass of crops in g; DM is used to save the whole-plant dry mass of crops in g.

Code = 1 represents sunflowers;

Code = 2 represents peanuts;

Code = 3 represents black soybeans;

Code = 4 represents soybeans;

Code = 5 represents kidney beans;

Code = 6 represents garden peas;

Code = 7 represents adzuki beans;

Code = 8 represents mungbeans;

Code = 9 represents cottons;

Code = 10 represents sweet sorghums;

Code = 11 represents corns;

Code = 12 represents Mexican corns.

References

Shi, P., Fan, M., Ratkowsky, D.A., Huang, J., Wu, H., Chen, L., Fang, S. and Zhang, C. (2017) Comparison of two ontogenetic growth equations for animals and plants. Ecol. Model. 349, 1-10. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.ecolmodel.2017.01.012")}

Shi, P., Men, X., Sandhu, H.S., Chakraborty, A., Li, B., Ouyang, F., Sun, Y., Ge, F. (2013) The "general" ontogenetic growth model is inapplicable to crop growth. Ecol. Model. 266, 1-9. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.ecolmodel.2013.06.025")}

Examples

data(crops)
ind   <- 6
xv    <- crops$Time[crops$Code == ind]
yv    <- crops$DM[crops$Code == ind] 
xlab0 <- "Time (d)"
ylab0 <- "Dry mass (g)"

dev.new()
plot(xv, yv, cex=1.5, cex.lab=1.5, cex.axis=1.5, xlab=xlab0, ylab=ylab0)

# Define the beta sigmoid model (bsm)
bsm <- function(P, x){
  P  <- cbind(P)
  if(length(P) !=4 ) {stop("The number of parameters should be 4!")}
  ropt <- P[1]
  topt <- P[2]
  tmin <- P[3]
  tmax <- P[4]
  tailor.fun <- function(x){
    x[x < tmin] <- tmin
    x[x > tmax] <- tmax
    return(x)
  }
  x <- tailor.fun(x)   
  ropt*(x-tmin)*(x-2*tmax+topt)/(topt+tmin-2*tmax)*(
       (x-tmin)/(topt-tmin) )^((topt-tmin)/(tmax-topt))   
}

# For the original beta sigmoid model
ini.val0  <- c(60, 30, seq(0, 10, 20), 100)
fit1 <- fitIPEC( bsm, x=xv, y=yv, ini.val=ini.val0, xlim=NULL, ylim=NULL, 
                 xlab=xlab0, ylab=ylab0, fig.opt=TRUE, 
                 control=list(trace=FALSE, reltol=1e-20, maxit=50000) )
fit1$par

w    <- rep(1/as.numeric(tapply(yv, xv, var)), tapply(yv, xv, length))
fit2 <- fitIPEC( bsm, x=xv, y=yv, ini.val=ini.val0, weights=w, xlim=NULL,  
                 ylim=NULL, xlab=xlab0, ylab=ylab0, fig.opt=TRUE, 
                 control=list(trace=FALSE, reltol=1e-20, maxit=50000) )
fit2$par

dev.new()
xp  <- seq(0, 120, len=2000)
yp  <- bsm(P=fit2$par, x=xp)
xv2 <- as.numeric(tapply(xv, xv, mean))
yv2 <- as.numeric(tapply(yv, xv, mean))
sd2 <- as.numeric(tapply(yv, xv, sd))
Up  <- yv2+sd2
Low <- yv2-sd2
plot( xv2, yv2, xlab=xlab0, ylab=ylab0, cex.lab=1.5, 
      cex.axis=1.5, xlim=c(0,120), ylim=c(-5, 100), type="n" )
lines( xp, yp, col=4 )
points( xv2, yv2, pch=1, cex=1.5, col=2 )
for(i in 1:length(Up)){
  lines(c(xv2[i], xv2[i]), c(Low[i], Up[i]), col=6)
}  

IPEC documentation built on Nov. 2, 2023, 6:14 p.m.