Skip to content

Should models agree more? #73

@rBatt

Description

@rBatt

@lawinslow : we've talked about this a bit.

Using the simulated data at the end of ?metab produces the following:

funnymetabolizer copy

And here is the associated R code:

# =============
# = Data No K =
# =============
# fake data
    datetime <- seq(as.POSIXct("2014-06-16 00:00:00", tz="GMT"), as.POSIXct("2014-06-17 23:55:00", tz="GMT"), length.out=288*2)
    do.obs <- 2*sin(2*pi*(1/288)*(1:(288*2))+0.75*pi) + 8 #+ rnorm(288*2, 0, 0.5)
    wtr <- 3*sin(2*pi*(1/288)*(1:(288*2))+pi) + 17 #+ rnorm(288*2, 0, 0.15)
    do.sat <- LakeMetabolizer:::o2.at.sat.base(wtr, 960)
    irr <- (1500*sin(2*pi*(1/288)*(1:(288*2))+1.5*pi) +650) *ifelse(is.day(datetime, 42.3), 1, 0) #+ rnorm(288*2, 0, 0.25)) *ifelse(is.day(datetime, 42.3), 1, 0)
    k.gas <- 0
    z.mix <- 1

# put data in a data.frame
    data.noK <- data.frame(datetime=datetime, do.obs=do.obs, do.sat=do.sat, k.gas=k.gas,
     z.mix=z.mix, irr=irr, wtr=wtr)

# run each metabolism model
    m.bk.noK <- metab(data.noK, "bookkeep", lake.lat=42.6)
    m.ols.noK <- metab(data.noK, "ols", lake.lat=42.6)
    m.mle.noK <- metab(data.noK, "mle", lake.lat=42.6)
    m.kal.noK <- metab(data.noK, "kalman", lake.lat=42.6)
    m.bay.noK <- metab(data.noK, "bayesian", lake.lat=42.6)


    noK0 <- rbind(
        cbind(m.bk.noK, model="BK"),
        cbind(m.ols.noK, model="OLS"),
        cbind(m.mle.noK, model="MLE"),
        cbind(m.kal.noK, model="Kal"),
        cbind(m.bay.noK, model="Bay")
        )

    noK <- melt(noNoise.noK0, id=c("year","doy","model"), measure.vars=c("R","NEP","GPP"), value.name="metabolism")







# ===============
# = Data with K =
# ===============
    # fake data
        k.gas <- 0.4

    # put data in a data.frame
        data.withK <- data.frame(datetime=datetime, do.obs=do.obs, do.sat=do.sat, k.gas=k.gas,
         z.mix=z.mix, irr=irr, wtr=wtr)

    # run each metabolism model
        m.bk.withK <- metab(data.withK, "bookkeep", lake.lat=42.6)
        m.ols.withK <- metab(data.withK, "ols", lake.lat=42.6)
        m.mle.withK <- metab(data.withK, "mle", lake.lat=42.6)
        m.kal.withK <- metab(data.withK, "kalman", lake.lat=42.6)
        m.bay.withK <- metab(data.withK, "bayesian", lake.lat=42.6)


        withK0 <- rbind(
            cbind(m.bk.withK, model="BK"),
            cbind(m.ols.withK, model="OLS"),
            cbind(m.mle.withK, model="MLE"),
            cbind(m.kal.withK, model="Kal"),
            cbind(m.bay.withK, model="Bay")
            )

        withK <- melt(withK0, id=c("year","doy","model"), measure.vars=c("R","NEP","GPP"), value.name="metabolism")




        # ========
        # = Plot =
        # ========
        bp.at <- c(1:5, 8:12, 15:19)
        bp.cols <- rep(rainbow(5,),3)

        dev.new(width=7, height=3.5)
        par(mfrow=c(1,2), mar=c(2,2,1,1), ps=9, cex=1, mgp=c(1.5, 0.25, 0), tcl=-0.25)

        # No Noise, No K
        boxplot(metabolism~model+variable, data=noK, at=bp.at, lwd=5, pars=list(boxfill=bp.cols, medcol=bp.cols, staplecol=bp.cols), xaxt="n", main="No noise, no K")
        legend("topleft", legend=c("BK","OLS","MLE","Kal","Bay"), pch=22, pt.bg=bp.cols, inset=c(-0.025, -0.05), ncol=1)
        axis(1, at=c(3, 10, 17), labels=c("R","NEP","GPP"))


        # No Noise, with K
        boxplot(metabolism~model+variable, data=withK, at=bp.at, lwd=5, pars=list(boxfill=bp.cols, medcol=bp.cols, staplecol=bp.cols), xaxt="n", main="No noise, with K")
        legend("topleft", legend=c("BK","OLS","MLE","Kal","Bay"), pch=22, pt.bg=bp.cols, inset=c(-0.025, -0.05), ncol=1)
        axis(1, at=c(3, 10, 17), labels=c("R","NEP","GPP"))

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions