Commit 9797c8f3 authored by Kunstler Georges's avatar Kunstler Georges
Browse files

process new AIC

parent 14663bf0
......@@ -1290,14 +1290,14 @@ fun.param.descrip <- function(seq.jitter, n.param, x.line = -0.73, intra.TF =
y.at.2.lb <- 4
}
mtext("Trait independant", side=2,
mtext("Trait independent", side=2,
at = y.at.1,
cex =1.6,
line = 13, col = '#377eb8')
lines(c(x.line+0.12, x.line+0.12),
c(y.at.1.la - abs(min(seq.jitter)-0.15), y.at.1.lb + abs(min(seq.jitter))+0.15), col = '#377eb8',
lwd = 2.5)
mtext("Trait", side=2, at = y.at.2,
mtext("Trait dependent", side=2, at = y.at.2,
cex =1.6,
line = 13, col = '#a65628')
lines(c(x.line+0.12, x.line+0.12),
......@@ -1480,39 +1480,39 @@ rm(out)
gc()
}
fun.mai.plot.param <- function(t, p, big.m, small.m, first.p = 'alpha0', last.p = 'maxG'){
fun.mai.plot.param <- function(t, p, big.m, small.m, first.p = 'alpha0', last.p = 'maxG', min.m = 0.05){
if(t == 'Wood density'){
if(p == first.p){
mai.v <- c(0.1, big.m,small.m,0.1)
mai.v <- c(min.m, big.m,small.m,min.m)
}else{
if(p == last.p){
mai.v <- c(big.m, big.m,0.1,0.1)
mai.v <- c(big.m, big.m,min.m,min.m)
}else{
mai.v <- c(0.1, big.m,0.1,0.1)
mai.v <- c(min.m, big.m,min.m,min.m)
}
}
}
if(t == 'Specific leaf area'){
if(p == first.p){
mai.v <- c(0.1, small.m,small.m,0.1)
mai.v <- c(min.m, min.m,small.m,min.m)
}else{
if(p == last.p){
mai.v <- c(big.m, small.m,0.1,0.1)
mai.v <- c(big.m, min.m,min.m,min.m)
}else{
mai.v <- c(0.1, small.m,0.1,0.1)
mai.v <- c(min.m, min.m,min.m,min.m)
}
}
}
if(t == 'Maximum height'){
if(p == first.p){
mai.v <- c(0.1, small.m,small.m,small.m)
mai.v <- c(min.m, min.m,small.m,small.m)
}else{
if(p == last.p){
mai.v <- c(big.m, small.m,0.1,small.m)
mai.v <- c(big.m, min.m,min.m,small.m)
}else{
mai.v <- c(0.1, small.m,0.1,small.m)
mai.v <- c(min.m, min.m,min.m,small.m)
}
}
}
......@@ -1549,11 +1549,12 @@ traits <- c('Wood.density', 'SLA', 'Max.height')
require(dplyr)
# Layout
min.m <- 0.05
m <- matrix(c(1:15), 5, 3)
wid <- c(big.m+0.1, small.m+0.1 , 2*small.m+0.1) +
rep((6-big.m-3*small.m-0.3)/3, each= 3)
hei <- c(small.m+0.1, 0.2, 0.2 , 0.2, big.m) +
rep((10-big.m-small.m- 0.5)/5, each= 5)
wid <- c(big.m+min.m, min.m+min.m , small.m+min.m) +
rep((6-big.m-small.m-4*min.m)/3, each= 3)
hei <- c(small.m+min.m, 2*min.m, 2 *min.m , 2*min.m, min.m+big.m) +
rep((10-big.m-small.m- 8*min.m)/5, each= 5)
layout(m, heights=hei, widths= wid )
traits.exp <- list(expression(paste('Wood density (mg m', m^-3, ')')),
......@@ -1596,6 +1597,7 @@ if(p == 'maxG'){
fun.plot.param.tf(df = df.t,
p = p, names.param = names.param,
xlab = traits.exp[[t]],
labels.x = TRUE, labels.y = TRUE,
col.vec = col.vec,
expr.param = expr.p.vec[p], cex.lab = 1.1,
cex.axis =0.85, cex = 1, ylim = ylim.list[[p]])
......@@ -1603,13 +1605,15 @@ if(p == 'maxG'){
if(p == 'alpha0.inter'){
fun.plot.param.tf(df = df.t,
p = p, names.param = names.param,
xaxt= 'n',xlab = NA,
xlab = NA,
labels.x = FALSE, labels.y = FALSE,
col.vec = col.vec,
expr.param = NA, cex.lab = 1.1, cex.axis =0.85, cex = 1, add = TRUE, add.ylab.TF = FALSE)
}else{
fun.plot.param.tf(df = df.t,
p = p, names.param = names.param,
xaxt= 'n',xlab = NA,
xlab = NA,
labels.x = FALSE, labels.y = TRUE,
col.vec = col.vec,
expr.param = expr.p.vec[p], cex.lab = 1.1, cex.axis =0.85, cex = 1,
ylim = ylim.list[[p]])
......@@ -1622,6 +1626,7 @@ if(p == 'maxG'){
fun.plot.param.tf(df = df.t,
p = p, names.param = names.param,
xlab = traits.exp[[t]],
labels.x = TRUE, labels.y = FALSE,
col.vec = col.vec,
expr.param = expr.p.vec[p], add.ylab.TF = FALSE,
cex.lab = 1.1, cex.axis =0.85, cex = 1,
......@@ -1630,14 +1635,16 @@ if(p == 'maxG'){
if(p == 'alpha0.inter'){
fun.plot.param.tf(df = df.t,
p = p, names.param = names.param,
xaxt= 'n',xlab = NA,
xlab = NA,
labels.x = FALSE, labels.y = FALSE,
col.vec = col.vec,
expr.param = expr.p.vec[p], add.ylab.TF = FALSE, cex.lab = 1.1, cex.axis =0.85,
cex = 1, add =TRUE)
}else{
fun.plot.param.tf(df = df.t,
p = p,names.param = names.param,
xaxt= 'n',xlab = NA,
xlab = NA,
labels.x = FALSE, labels.y = FALSE,
col.vec = col.vec,
expr.param = expr.p.vec[p], add.ylab.TF = FALSE,
cex.lab = 1.1, cex.axis =0.85, cex = 1,
......@@ -1680,11 +1687,12 @@ traits <- c('Wood.density', 'SLA')
require(dplyr)
# Layout
min.m <- 0.05
m <- matrix(c(1:6), 3, 2)
wid <- c(big.m+0.1, 2*small.m+0.1) +
rep((6-big.m-2*small.m-0.3)/2, each= 2)
hei <- c(small.m+0.1, 0.2, big.m) +
rep((10-big.m-small.m- 0.5)/3, each= 3)
wid <- c(big.m+min.m, small.m+min.m) +
rep((6-big.m-small.m-2*min.m)/2, each= 2)
hei <- c(small.m+min.m, min.m*2, min.m +big.m) +
rep((10-big.m-small.m- 4*min.m)/3, each= 3)
layout(m, heights=hei, widths= wid )
traits.exp <- list(expression(paste('Wood density (mg m', m^-3, ')')),
......@@ -1727,13 +1735,15 @@ if(p == 'alphae'){
fun.plot.param.tf(df = df.t,
p = p, names.param = names.param,
xlab = traits.exp[[t]],
labels.x = TRUE, labels.y = TRUE,
col.vec = col.vec,
expr.param = expr.p.vec[p], cex.lab = 1.1,
cex.axis =0.85, cex = 1, ylim = ylim.list[[p]])
}else{
fun.plot.param.tf(df = df.t,
p = p, names.param = names.param,
xaxt= 'n',xlab = NA,
xlab = NA,
labels.x = FALSE, labels.y = TRUE,
col.vec = col.vec,
expr.param = expr.p.vec[p], cex.lab = 1.1, cex.axis =0.85, cex = 1,
ylim = ylim.list[[p]])
......@@ -1745,6 +1755,7 @@ if(p == 'alphae'){
fun.plot.param.tf(df = df.t,
p = p, names.param = names.param,
xlab = traits.exp[[t]],
labels.x = TRUE, labels.y = FALSE,
col.vec = col.vec,
expr.param = expr.p.vec[p], add.ylab.TF = FALSE,
cex.lab = 1.1, cex.axis =0.85, cex = 1,
......@@ -1752,7 +1763,8 @@ if(p == 'alphae'){
}else{
fun.plot.param.tf(df = df.t,
p = p,names.param = names.param,
xaxt= 'n',xlab = NA,
xlab = NA,
labels.x = FALSE, labels.y = FALSE,
col.vec = col.vec,
expr.param = expr.p.vec[p], add.ylab.TF = FALSE,
cex.lab = 1.1, cex.axis =0.85, cex = 1,
......@@ -1777,7 +1789,7 @@ add.alpha <- function(col, alpha=0.5){
rgb(x[1], x[2], x[3], alpha=alpha))
}
fun.plot.param.tf <- function(df, p, xlab,
fun.plot.param.tf <- function(df, p, xlab, labels.x, labels.y,
col.vec, expr.param,names.param,
add.ylab.TF = TRUE,
cex.lab = 1.3, cex.axis = 1,
......@@ -1786,10 +1798,13 @@ df.t <- df[df$param.type == p, ]
if(!add){
plot(df.t[ , 'Tf'],
df.t[, 'pred'],
xaxt='n', yaxt = 'n',
xlab = xlab, ylab = NA,
lwd = 3, cex.lab = cex.lab, cex.axis = cex.axis,
col = col.vec[names.param[p]], type = 'l',...)
polygon(c(df.t[, 'Tf'],
axis(1, labels = labels.x)
axis(2, labels = labels.y)
polygon(c(df.t[, 'Tf'],
rev(df.t[, 'Tf'])),
c(df.t[, 'upr'],
rev(df.t[, 'lwr'])),
......@@ -2085,8 +2100,8 @@ fun.plot.all.rho <- function(list.res,
require(dplyr)
# Layout
m <- matrix(c(1:3), 1, 3)
wid <- c(big.m+0.1, small.m+0.1 , 2*small.m+0.1) +
rep((6-big.m-3*small.m-0.3)/3, each= 3)
wid <- c(big.m+0.1, small.m+0.1 , 2*small.m) +
rep((6-big.m-3*small.m-0.2)/3, each= 3)
hei <- 1
layout(m, heights=hei, widths= wid )
......@@ -2105,11 +2120,11 @@ df.t <- data.param[data.param$traits == t, ]
if(t == 'Wood density'){
par(mai=c(big.m, big.m,small.m,0.1))
par(mai=c(big.m, big.m,0.1,0.1))
}
if(t == 'Specific leaf area'){
par(mai=c(big.m, small.m,small.m,0.1))
par(mai=c(big.m, small.m,0.1,0.1))
}
if(t == 'Maximum height'){
......@@ -2123,6 +2138,7 @@ if(t == 'Wood density'){
p = p, names.param = names.param,
ylim = range(filter(df.t,
param.type == p)%>% select(upr,lwr)),
labels.x = TRUE, labels.y = TRUE,
xlab = expression(paste(Delta, ' Wood density (mg m', m^-3, ')')),
col.vec = col.vec,
expr.param = expr.p.vec[p], cex.lab = 1.1, cex.axis =0.85, cex = 1)
......@@ -2134,6 +2150,7 @@ if(t == 'Specific leaf area'){
ylim = range(filter(df.t,
param.type == p)%>% select(upr,lwr)),
xlab = expression(paste(Delta, ' Specific leaf area (m', m^2, ' m', g^-1, ')')),
labels.x = TRUE, labels.y = TRUE,
col.vec = col.vec,
expr.param = expr.p.vec[p], add.ylab.TF = FALSE, cex.lab = 1.1, cex.axis =0.85, cex = 1)
}
......@@ -2143,6 +2160,7 @@ if(t == 'Maximum height'){
p = p, names.param = names.param,
ylim = range(filter(df.t,
param.type == p)%>% select(upr,lwr)),
labels.x = TRUE, labels.y = TRUE,
xlab = expression(paste(Delta, ' Maximum height (m)')),
col.vec = col.vec,
expr.param = expr.p.vec[p], add.ylab.TF = FALSE, cex.lab = 1.1, cex.axis =0.85, cex = 1)
......
......@@ -294,10 +294,12 @@ Two main data types were used: national forest inventories -- NFI, large permane
# Supplementary Results
![**Global trait effects and trait-independent effects on maximum growth and competition and their variation among biomes for a model without separation of $\alpha_0$ between intra and interspecific competition.** Standardized regression coefficients for growth models, fitted separately for each trait (points: mean estimates and lines: 95\% confidence intervals). Black points and lines represent global estimates and coloured points and lines represent the biome level estimates. The parameter estimates represent: effect of focal tree's trait value on maximum growth ($m_1$), the competitive effect independent of traits ($\alpha_{0}$), the effect of competitor trait values on their competitive effect ($\alpha_e$) (positive values indicate that higher trait values lead to a stronger reduction in growth of the focal tree), the effect of the focal tree's trait value on its tolerance of competition($\alpha_t$) (positive values indicate that greater trait values result in greater tolerance of competition), and the effect on competition of trait dissimilarity between the focal tree and its competitors ($\alpha_d$) (negative values indicate that higher trait dissimilarity leads to a stronger reduction of the growth of the focal tree). Tropical rainforest and tropical seasonal forest were merged together as tropical forest, tundra was merged with taiga, and desert was not included as too few plots were available (see Fig 1a for biome definition).](../../figs/figres12_TP.pdf)
![**Trait-dependent and trait-independent effects on
maximum growth and competition across the globe and their variation among biomes for a model without separation of $\alpha_0$ between intra and interspecific competition.** See Figure 2 in the main text for parameters description and see Fig 1a in the main text for biome definition.](../../figs/figres12_TP.pdf)
![**Global trait effects and trait-independent effects on maximum growth and competition and their variation among biomes for a model with random structure in the parameters including the data set and the Koppen-Geiger ecoregion.** See Figure 2 in the main text for parameters description and see Fig 1a in the main text for biome definition.](../../figs/figres12_ecocode_TP_intra.pdf)
![**Trait-dependent and trait-independent effects on
maximum growth and competition across the globe and their variation among biomes for a model with random structure in the parameters including the data set and the Koppen-Geiger ecoregion.** See Figure 2 in the main text for parameters description and see Fig 1a in the main text for biome definition.](../../figs/figres12_ecocode_TP_intra.pdf)
\newpage
......
......@@ -93,10 +93,12 @@ writeLines(unlist(list.t[dat[["Country"]]]))
# Supplementary Results
![**Global trait effects and trait-independent effects on maximum growth and competition and their variation among biomes for a model without separation of $\alpha_0$ between intra and interspecific competition.** Standardized regression coefficients for growth models, fitted separately for each trait (points: mean estimates and lines: 95\% confidence intervals). Black points and lines represent global estimates and coloured points and lines represent the biome level estimates. The parameter estimates represent: effect of focal tree's trait value on maximum growth ($m_1$), the competitive effect independent of traits ($\alpha_{0}$), the effect of competitor trait values on their competitive effect ($\alpha_e$) (positive values indicate that higher trait values lead to a stronger reduction in growth of the focal tree), the effect of the focal tree's trait value on its tolerance of competition($\alpha_t$) (positive values indicate that greater trait values result in greater tolerance of competition), and the effect on competition of trait dissimilarity between the focal tree and its competitors ($\alpha_d$) (negative values indicate that higher trait dissimilarity leads to a stronger reduction of the growth of the focal tree). Tropical rainforest and tropical seasonal forest were merged together as tropical forest, tundra was merged with taiga, and desert was not included as too few plots were available (see Fig 1a for biome definition).](../../figs/figres12_TP.pdf)
![**Trait-dependent and trait-independent effects on
maximum growth and competition across the globe and their variation among biomes for a model without separation of $\alpha_0$ between intra and interspecific competition.** See Figure 2 in the main text for parameters description and see Fig 1a in the main text for biome definition.](../../figs/figres12_TP.pdf)
![**Global trait effects and trait-independent effects on maximum growth and competition and their variation among biomes for a model with random structure in the parameters including the data set and the Koppen-Geiger ecoregion.** See Figure 2 in the main text for parameters description and see Fig 1a in the main text for biome definition.](../../figs/figres12_ecocode_TP_intra.pdf)
![**Trait-dependent and trait-independent effects on
maximum growth and competition across the globe and their variation among biomes for a model with random structure in the parameters including the data set and the Koppen-Geiger ecoregion.** See Figure 2 in the main text for parameters description and see Fig 1a in the main text for biome definition.](../../figs/figres12_ecocode_TP_intra.pdf)
\newpage
......
......@@ -5,7 +5,7 @@
## ```
## ![Map of the plot locations of all data sets analysed. LPP plots are represented with a large points and NFI plots with small points (The data set of Panama comprises both a 50ha plot and a network of 1ha plots).](../../figs/world_map.pdf)
## ![Map of the plot locations of all data sets analysed. LPP plots are represented with a large points and NFI plots with small points (The data set of Panama comprises both a 50ha plot and a network of 1ha plots).](../../figs/world_map.pdf)
......@@ -123,6 +123,133 @@ mat.param[!row.names(mat.param) %in% c("(Intercept)", "logD",
'MAT', 'MAP',
"sumTfBn"),]
fun.plot.rho <- function(i, mat.param, T = seq(0.1, 1, length.out = 50)){
param <- mat.param[, i]
exp((param['sumBn.inter'] - param['sumBn.intra'] +param['sumTnTfBn.abs'] *abs(T -min(T))))
}
generate.random.param <- function(trait,
list.res, n = 500,
model= 'lmer.LOGLIN.ER.AD.Tf.MAT.MAP.intra.r.set.species',
data.type = 'intra',
param.name = c('sumBn.inter', 'sumBn.intra',
'sumTfBn', 'sumTnBn', 'sumTnTfBn.abs')){
require(mvtnorm)
mean.param <- list.res[[paste0(data.type, "_", trait ,
"_", model)]]$lmer.summary$fixed.coeff.E
vcov <- list.res[[paste0(data.type, "_", trait ,
"_", model)]]$vcov
mean.param.s <- mean.param[param.name]
vcov.s <- as.matrix(vcov[param.name, param.name])
res <- rmvnorm(n, mean=mean.param.s, sigma=vcov.s, method="chol")
return(res)
}
ratio.dan <- function(i, T1, T2, mat.param,list.sd){
param <- mat.param[i, ]
aer <- param['sumBn.inter']/list.sd[['sd.sumBn.inter']]
ara <- param['sumBn.intra']/list.sd[['sd.sumBn.intra']]
at <- param['sumTfBn']/list.sd[['sd.sumTfBn']]
ae <- param['sumTnBn']/list.sd[['sd.sumTnBn']]
ad <- param['sumTfTnBn.abs']/list.sd[['sd.sumTfTnBn.abs']]
dan <-(aer at *T1 + ae *T2 + ad *abs(T2 -T1))*
(aer +at *T2 + ae *T1 + ad *abs(T2 -T1))/
((ara +at *T1 + ae *T1) *
(ara + at *T2 + ae *T2))
return(dan)
}
fun.plot.dan <- function(i, mat.param, T1 = 0.1,
T2 = seq(0.1, 1, length.out = 50)){
list.sd <- list.res[[paste0(data.type, "_", trait ,
"_", model)]]$list.sd
dan <- outer(T1, T2, ratio.dan, i, mat.param, list.sd)
return(dan)
}
fun.dan.ci <- function(trait, list.res, alpha= 0.05, T1 = 1,
T2 = seq(0.1, 1, length.out = 50), n = 500){
mat.param.r <- generate.random.param(trait, n = n, list.res = list.all.results)
res.ci <- sapply(1:n, ratio.dan, T1, T2, mat.param.r)
mean.p <- apply(res.ci, MARGIN = 1, median)
ci.p <- apply(res.ci, MARGIN = 1, quantile, probs = c(alpha/2, 1-alpha/2))
return(cbind(mean.p, t(ci.p)))
}
get.predict.var.scaled <- function(trait, dir.root='../..', log.TF = FALSE, N.pred = 100){
if(log.TF) {file.type <- ''}
else{file.type <- 'no.log'}
dir.read <- 'output/processed'
sd.traits <-
readRDS(file.path(dir.root, dir.read,
paste0('data.sd.traits.', file.type, '.rds')))
quant.data <-
readRDS(file.path(dir.root, dir.read,
paste0('data.quant.traits.', file.type, '.rds')))
trait.quant <-fun.std.quant.trait(trait, dat.q = quant.data
, dat.sd = sd.traits)
seq.BATOT <- seq(from = 0,
to = quant.data[['qh.BATOT']],
length.out = N.pred)
return(list(trait.quant, seq.BATOT))
}
fun.plot.rho.dan <- function(trait, list.res, fun.tf = max){
qa <- get.predict.var.scaled(trait)[[1]]
T2 <- seq(qa[['ql']], qa[['qh']], length.out = 50)
T1 <- fun.tf(T2)
T <- seq(qa[['ql.o']], qa[['qh.o']], length.out = 50) - qa[['ql.o']]
mat.p <- fun.dan.ci(trait, list.res, T1=T1, T2=T2)
plot(T, mat.p[,1],type = 'l', lwd = 2, ylim =range(mat.p), col = '#018571')
polygon(c(T,
rev(T)),
c(mat.p[, 2],
rev(mat.p[, 3])),
col = add.alpha('#018571', 0.5), border = NA)
lines(T,mat.p[,2], lty= 2)
lines(T,mat.p[,3], lty= 2)
}
add.alpha <- function(col, alpha=0.5){
if(missing(col))
stop("Please provide a vector of colours.")
apply(sapply(col, col2rgb)/255, 2,
function(x)
rgb(x[1], x[2], x[3], alpha=alpha))
}
x11()
par(mfcol = c(1,3))
fun.plot.rho.dan('Wood.density', list.all.results)
fun.plot.rho.dan('SLA', list.all.results)
fun.plot.rho.dan('Max.height', list.all.results)
plot(T,1-fun.plot.dan(1, mat.param))
plot(T,1-fun.plot.dan2(1, mat.param))
plot(T,1- fun.plot.rho(2, mat.param))
plot(T,1-fun.plot.dan(2, mat.param))
plot(T,1-fun.plot.dan2(2, mat.param))
plot(T,1- fun.plot.rho(3, mat.param))
plot(T,1-fun.plot.dan(3, mat.param))
plot(T,1-fun.plot.dan2(3, mat.param))
par(mfrow= c(1,3))
image(fun.plot.dan(1, mat.param, T1 = seq(0.1, 1, length.out = 50)))
image(fun.plot.dan(2, mat.param, T1 = seq(0.1, 1, length.out = 50)))
image(fun.plot.dan(3, mat.param, T1 = seq(0.1, 1, length.out = 50)))
mat.param.sd <- do.call('cbind',
lapply(c('Wood.density', 'SLA', 'Max.height'),
extract.param.sd, list.res = list.all.results,
......@@ -173,7 +300,7 @@ row.names(mat.param) <- c('$m_0$', '$\\gamma$', '$m_1$', '$m_2$','$m_3$',
'$\\Delta$ AIC', '$\\Delta$ AIC no trait')
##+ Table2_Effectsize, echo = FALSE, results='asis', message=FALSE
pandoc.table(mat.param[c(1,3:5,2,6:14), ], caption = "Standardized parameters estimates and standard error (in bracket) estimated for each trait, $R^2$* of models and $\\Delta$ AIC of the model and of a model with no trait effect. Best model have a $\\Delta$ AIC of zero. See section Method for explanation of parameters",
pandoc.table(mat.param[c(1:14), ], caption = "Standardized parameters estimates and standard error (in bracket) estimated for each trait, $R^2$* of models and $\\Delta$ AIC of the model and of a model with no trait effect. Best model have a $\\Delta$ AIC of zero. See section Method for explanation of parameters",
digits = 3, justify = c('left', rep('right', 3)),
emphasize.strong.cells = bold.index, split.tables = 200)
......
......@@ -70,9 +70,7 @@ neighbourhood (see definition below). Specifically, we assumed a relationship of
\begin{equation} \label{G1}
G_{i,f,p,s,t} = G_{\textrm{max} \, f,p,s} \, D_{i,f,p,s,t}^{\gamma_f} \, \exp\left(\sum_{c=1}^{N_i} {-\alpha_{c,f} B_{i,c,p,s}}\right),
\end{equation}
where:
\begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt
\item
......@@ -91,7 +89,7 @@ where:
normal distribution of mean 0 and standard deviation $\sigma_{\gamma}${]}
\item
\(\alpha_{c,f}\) is the per unit basal area effect of individuals from
species \(c\) on growth of an individual in species \(f\), and
species \(c\) on growth of an individual in species \(f\),
\item
\(B_{i,c,p,s}= 0.25\, \pi \, \sum_{j \neq i} w_j \, D_{j,c,p,s,t}^2\) is
the sum of basal area of all individuals competitor trees \(j\) of the species
......@@ -102,7 +100,7 @@ where:
neighboorhood size for tree $j$ depending on the data set (see
below). Note that \(B_{i,c,p,s}\) include all trees of species $c$
in the local neighbourhood excepted the tree
\(i\),
\(i\), and
\item
\(N_i\) is the number of competitor species in the local
neighbourhood of focal tree $i$.
......@@ -141,7 +139,7 @@ and
Previous studies have proposed various decompositions of the competition parameter into key trait-based processes\footnote{There have been different approaches to modeling $\alpha$ from traits. In one of the first studies Uriarte et al.\citep{Uriarte-2010} modelled $\alpha$ as $\alpha =
\alpha_0 + \alpha_d \vert t_f-t_c \vert$. Then Kunstler et al.\citep{Kunstler-2012} used two different models: $\alpha = \alpha_0 + \alpha_d \vert t_f-t_c \vert$ or $\alpha =
\alpha_0 + \alpha_h ( t_f-t_c )$. Finally, Lasky et
al.\citep{Lasky-2014} developped a single model including multiple processes as $\alpha =
al.\citep{Lasky-2014} developed a single model including multiple processes as $\alpha =
\alpha_0 + \alpha_t t_f +\alpha_h ( t_f-t_c ) + \alpha_d \vert t_f-t_c
\vert$. In this study, we extended this last model. We considered that it was clearer to split
$\alpha_h (t_f - t_c)$ into $\alpha_t t_f + \alpha_e t_c$, which is
......@@ -150,12 +148,12 @@ equivalent to the hierarchical distance if $\alpha_t = - \alpha_e$
$\alpha_t$). We also split $\alpha_0$ into intra and interspecific
competition.}, and here we extended the approach of the most recent study\citep{Lasky-2014}. As presented in Fig. 1, competitive
interactions were modelled using an equation of the form\footnote{For
fitting the model the equation of \(\alpha_{c,f}\) was developped with
fitting the model the equation of \(\alpha_{c,f}\) was developed with
species basal area in term of community weighted mean of the trait,
see Supplementary Methods for more details.}:
\begin{equation} \label{alpha}
\alpha_{c,f}= \alpha_{0,f,intra} \, CON + \alpha_{0,f,inter} \, (1-CON) - \alpha_t \, t_f + \alpha_e \, t_c + \alpha_d \, \vert t_c-t_f \vert
\alpha_{c,f}= \alpha_{0,f,intra} \, C + \alpha_{0,f,inter} \, (1-C) - \alpha_t \, t_f + \alpha_e \, t_c + \alpha_d \, \vert t_c-t_f \vert
\end{equation}
where:
......@@ -169,7 +167,7 @@ where:
\(s\) {[}as
\(\alpha_{0,f} = \alpha_0 + \varepsilon_{\alpha_0, f}+ \varepsilon_{\alpha_0, s}\),
where \(\varepsilon_{\alpha_0, f} \sim \mathcal{N} (0,\sigma_{\alpha_0, f})\) and
\(\varepsilon_{\alpha_0, s} \sim \mathcal{N} (0,\sigma_{\alpha_0, s})\){]}. $CON$ is a binary variable taking the value one for $f=c$ (conspecific) and zero for $f \neq c$ (heterospecific),
\(\varepsilon_{\alpha_0, s} \sim \mathcal{N} (0,\sigma_{\alpha_0, s})\){]}. $C$ is a binary variable taking the value one for $f=c$ (conspecific) and zero for $f \neq c$ (heterospecific),
\item
\(\alpha_t\) is the \textbf{tolerance of competition} by the focal
species, i.e.~change in competition tolerance due to traits \(t_f\) of
......@@ -189,9 +187,9 @@ where:
{[}$\varepsilon_{\alpha_d,s} \sim \mathcal{N} (0,\sigma_{\alpha_d})${]}.
\end{itemize}
Estimating separate $\alpha_0$ for intra and interspecific competition allows to account for trait independant differences in interactions with conspecific or with heterospecific.
Estimating separate $\alpha_0$ for intra and interspecific competition allowed us to account for trait-independent differences in interactions with conspecifics and heterospecifics.
We also explored a simpler version of the model where only one $\alpha_0$ was included in the model of $\alpha_{c,f}$ as most previous studies have generally not make this distinction which may lead into an overestimation of the trait dissimilarity effect. In this alternative model the equation was:
We also explored a simpler version of the model where trait-independent competitive effects were pooled (i.e. there was a single value for $\alpha_0$), as most previous studies have generally not make this distinction which may lead into an overestimation of the trait dissimilarity effect. In this alternative model the equation was:
\begin{equation} \label{alpha2}
\alpha_{c,f}= \alpha_{0,f} - \alpha_t \, t_f + \alpha_e \, t_c + \alpha_d \, \vert t_c-t_f \vert
......@@ -212,12 +210,13 @@ To estimate standardised coefficients (one type of standardised effect
size)\citep{Schielzeth-2010}, response and explanatory variables
were standardized (divided by their standard deviations) prior to
analysis. Trait and diameter were also centred to facilitate
convergence. The models were fitted using \(lmer\) in lme4\citep{Bates-2014}
convergence. The models were fitted using the \(lmer\) routine in
the lme4 package \citep{Bates-2014}
in the R statistical environment\citep{RTeam-2014}. We fitted two
versions of each model. In the first
version parameters \(m_{0}, m_1, \alpha_0,\alpha_t,\alpha_i,\alpha_d\)
were estimated as constant across all biomes. In the second version, we
repeated the same analysis as in the first version but allowed
allowed
different fixed estimates of these parameters for each biome. This
enabled us to explore variation among biomes. Because some biomes had
few observations, we merged those with biomes with similar climates. Tundra was
......@@ -232,8 +231,8 @@ Supplementary Results).
\subsection{Estimating the effect of traits on the mean ratio of intra \textit{vs.} interspecific competition}\label{rho}
The ratio of inter \textit{vs.} intraspecific competition is widely
considered as key in controlling species coexistence. Recent
The ratio of inter \textit{vs.} intraspecific competition has long been
considered as key in controlling species coexistence and a key quantity to estimate\citep{widely}. Recent
studies\citep{Kraft-2015, Godoy-2014} have recently proposed to
analyse the link between traits and $\rho$ defined as the geometric
mean of the ratio of interspecific competition over intraspecific
......
This diff is collapsed.
......@@ -146,6 +146,20 @@
Volume = {62}
}
@article{Connell-1983,
title = {On the Prevalence and Relative Importance of Interspecific Competition: Evidence from Field Experiments},
volume = {122},
number = {5},
journal = {The American Naturalist},
author = {Connell, Joseph H.},
year = {1983},
pages = {661--696}
}
@Article{Cornelissen-1996,
Title = {An experimental comparison of leaf decomposition rates in a wide range of temperate plant species and types},
Author = {Cornelissen, {JHC}},
......
......@@ -25,7 +25,6 @@ source("R/analysis/lmer.run.R")
format.all.output.lmer(file.name = "NA.koppen.results.nolog.all.rds",
list.file.name = 'list.lmer.out.all.NA.intra.set.rds',
models = c(model.files.lmer.Tf.intra.0,
model.files.lmer.Tf.intra.1,
model.files.lmer.Tf.intra.2,
model.files.lmer.Tf.intra.3),
traits = c("SLA", "Wood.density", "Max.height"),
......