**Fig. 1.** *Ground beetles are abundant, important economically and ecologically, but poorly understood. The diversity of trait attributes can be modeled with GJAM. Photos from [BugGuide](https://bugguide.net/node/view/15740)*.

Fig. 1. Ground beetles are abundant, important economically and ecologically, but poorly understood. The diversity of trait attributes can be modeled with GJAM. Photos from BugGuide.


When the goal of an analysis is to understand the attributes of species that help to explain their responses, then traits must be modeled jointly, while accommodating the differences in how they are observed and quantified. GJAM can be applied to diverse combinations of traits.

Resources

Software

source('clarkFunctions2021.r')
install.packages('gjam')
library(gjam)

Readings

Clark, J.S. 2016. Why species tell us more about traits than traits tell us about species: Predictive models. Ecology, 97, 1979–1993.

Seyednasrollah, B., and Clark, J. S. 2020. Where resource‐acquisitive species are located: The role of habitat heterogeneity. Geophysical Research Letters, 47, e2020GL087626.


Traits rather than species?

Often an analysis of species responses to the environment has the more general goal of understanding how the attributes of species determine their responses. For example, a microbiome study may fit responses of hundreds of taxa (OTUs) about which little is known beyond a few attributes (traits). If the question concerns the roles of these attributes, why not analyze the traits themselves, rather than trying to speculate on their roles through an analysis of species? There are at least two ways to do this, i) the trait response model (TRM), which translates species abundances into a joint distribution of community weighted means/modes (CWMM) and models them jointly, and ii) the predictive trait model (PTM), which models species jointly and translates the fitted model (through prediction) to the joint trait response. In both cases, the abundances of the species that bear those traits act as weights. Traits must be modeled jointly, because they have built-in covariance: variation in any one species affects all traits, depending on trait values associated with that species.

Trait analysis with GJAM

Work through the section on trait analysis for trees in the GJAM vignette. This vignette demonstrates both TRM and PTM using an analysis of foliar, wood, and habitat-preference traits in the FIA data.

Predictive trait model for ground beetles

Understanding how insect populations will respond to global warming and habitat degradation is complicated by the fact that observational data are obtained by heterogeneous methods and sporadically in space and time, and there are huge numbers of species. Observational methods are primarily presence-only, which omits the effort needed to account for spatio-temporal bias in data collection. For example, GBIF includes collections biased toward areas where experts live and work (e.g., universities and museums or targetted expeditions). Citizen science observations, like iNaturalist, include many observations from individuals who are not trained on the systematics needed to identify species. Unlike eBird, where many observations come with records of observation time or distance, there is no assignable effort for most presence-only data.

By contrast with presence-only data, many published data can include repeatable methods, such as fixed distance, time, or area for sweep netting and known trap nights for pitfall or light traps. Known effort allows for a proper likelihood and, thus, valid inference. Still, each data-collection method has biases that depend on behavioral differences between species. For example, pitfall-trap efficiency depends on movement behavior of ground foragers. A light trap would not be useful for mosquitoes that orient by climbing a CO2 gradient, rather than tracking a light source. Accounting for divergent methods is required for interpreting estimates.

Sporodic coverage, high diversity, minimal understanding

The challenges of synthesizing published data is apparent from recent conflicting interpretations of insect abundances (van Klink et al. 2020, Crossley et al. 2020) reflecting over-sensitivity to precisely which sites and species were included in each meta-analysis ; every species is increasing and decreasing somewhere, and geographic and habitat coverage is too sporadic for generalization. Only long time series can provide reliable estimates of trends for noisy data, but the unrepresentative geographic distribution of sites precludes interpretation of overall trends. In fact, the current habitat requirement differences between species remains poorly understood, complicated by all of these factors.

**Fig. 2.** *Species abundance in [NEON pitfall-trap surveys](https://www.battelle.org/government-offerings/lab-operations-research-management/large-research-infrastructure/national-ecological-observatory-network?gclid=Cj0KCQjw38-DBhDpARIsADJ3kjmxNJPtXI7DJy6U5y5n9OKDkq0HbsQpxbHVsd587jkIfwzIkbrZmiIaAmRcEALw_wcB), reports from [iNaturalist](https://www.inaturalist.org/observations), and habitat-suitability prediction from [PBGJAM](https://pbgjam.env.duke.edu/web-mapper) based on climate, elevation, and soils*. NEON abundances are scaled by abundance, with grey symbols indicating absense.

Fig. 2. Species abundance in NEON pitfall-trap surveys, reports from iNaturalist, and habitat-suitability prediction from PBGJAM based on climate, elevation, and soils. NEON abundances are scaled by abundance, with grey symbols indicating absense.

Trait information can be useful

Attributes of ground beetles may contribute to their diversity and abundances in ways that might help to understand their current habitats and how they might respond to climate change. The diverse family of ground beetles (Carabidae) has perhap 40,000 species globally, with 2000 occurring in North America. This group was selected for specific monitoring in NEON due to the abundance, diversity, economic importance, and the fact that they can be captured in pitfall traps. They are sufficiently abundant and diverse that they contribute importantly to food webs and control of undesirable crop pests. Due to the diversity of this group that is not readily identified to species by amateurs, little is known about the life history of many species, including basic distribution and abundance with respect to important habitat variables. The trait information available in this study include variables summarized by the terms trophic, diurnal, flight, climb, burrow, run, color, and length. Tong Qiu in our lab is analyzing the NEON ground beetles from 1578 plots and 67 species, shown for several species in the left-hand maps of Figure 2.

Ground beetles are mostly predatory and nocturnal (trait diurnal), but there are also granivores (e.g., Harpalus, Fig. 1e) and omnivores (trophic in our analysis). Some are generalist feeders, while others target specific prey types, such as the caterpillar-specialist Calosoma (Fig. 1b) and snail-eating genus Sphaeroderus (Fig. 1g). Some are active fliers, such as the tiger beetles Cicindella (Fig. 1a), while others have fused elytra (Pasimachus, Fig. 1f) or simply do not appear to engage in flight (flight). Some actively pursue prey in arboreal vegetation (e.g., Calosama, Fig. 1b), while others are slow-moving and primarily fossorial (e.g., Pasimachus, Fig. 1f). These are the traits climb, burrow, and run. Nocturnal habits may contribute to the dark color of most species in this family, but some are brightly iridescent (color) (Fig. 1a, b).

The adaptive significance of traits like those available in this study is the source of wide speculation. Indeed, such ‘trait syndromes’ may provide some guidance on understanding their vulnerability to habitat and climate change.

The function gjamSpec2Trait takes a species-by-trait matrix sbyt, and combines it with a plot-by-species matrix pbys to generate several objects, including plotByTrait and specByTrait. Here I load data and view a few lines of these objects:

load( 'groundBeetleTraits.rdata', verbose = T )
## Loading objects:
##   pbys
##   sbyt
##   types
##   xdata
##   edata
tmp         <- gjamSpec2Trait(pbys, sbyt, types)
tTypes      <- tmp$traitTypes                  # M = 12 values
plotByTrait <- tmp$plotByCWM                   # n X M
censor      <- tmp$censor                      # (0, 1) censoring, two-level CAT's
specByTrait <- tmp$specByTrait                 # S X M
M           <- ncol(plotByTrait)
n           <- nrow(plotByTrait)

There is a \(S \times M\) trait matrix \(\mathbf{T}\) having species names as rows and trait names as columns:

print( specByTrait[1:5,] )
##              climb burrow run length diurnal flight trophicother
## agonolConjun     0      0   1   3.75       0      1            0
## agonumRetrac     0      0   1  10.75       0      0            0
## anisodHaplom     0      0   0  12.00       0      0            0
## anisodMerula     0      0   0  12.00       0      0            0
## anisodRustic     0      0   0  10.00       0      2            0
##              trophicomnivorous trophicpredaceous colorother colorblack
## agonolConjun                 1                 0          0          0
## agonumRetrac                 0                 1          1          0
## anisodHaplom                 1                 0          0          1
## anisodMerula                 1                 0          0          1
## anisodRustic                 1                 0          0          1
##              colordarkbrown
## agonolConjun              1
## agonumRetrac              0
## anisodHaplom              0
## anisodMerula              0
## anisodRustic              0

Each entry in specByTrait assigns a value to a trait for a given species. Some of these columns are binary (e.g., climb, burrow), ordinal (run, flight), continuous (length), and categorical (trophic, color). Here are the unique trait values for categorical and ordinal traits:

sapply(sbyt[, types %in% c('CAT','OC','PA')], table) 
## $trophic
## 
## granivorous  omnivorous  predaceous 
##           2          33          32 
## 
## $flight
## 
##  0  1  2 
## 40 10 17 
## 
## $climb
## 
##  0  1 
## 58  9 
## 
## $burrow
## 
##  0  1 
## 45 22 
## 
## $run
## 
##  0  1 
## 14 53 
## 
## $color
## 
##       black   darkbrown irridescent 
##          47          13           7 
## 
## $diurnal
## 
##  0  1 
## 57 10

To summarize trait types, here are their designations in GJAM:

trophic, color - categorical (CAT) with three classes (un-ordered)

flight - ordinal (OC) with three ordered classes

climb, burrow, run, diurnal - binary (PA)

length - continuous, positive (CA)

There is a \(n \times M\) trait response matrix that holds community-weighted mean (numeric) or modal (categorical) trait values for a plot:

plotByTrait[1:5,1:10]
##      climb burrow       run length diurnal flight trophicother
## [1,]     0      0 0.5000000 13.975       0      0            0
## [2,]     0      0 0.3333333 13.950       0      0            0
## [3,]     0      0 1.0000000 14.050       0      0            0
## [4,]     0      0 1.0000000 14.050       0      0            0
## [5,]     0      0 1.0000000 14.050       0      0            0
##      trophicomnivorous trophicpredaceous colorother
## [1,]                 0                 1          0
## [2,]                 0                 1          0
## [3,]                 0                 1          0
## [4,]                 0                 1          0
## [5,]                 0                 1          0

At the plot level, categorical traits become fractional composition (FC), due to the fact that discrete categories translate to fractions of the plot total when combined with the abundances of species bearing those traits (Clark 2016) (see ‘Trait analysis’ in the GJAM vignette). In the trait response model (TRM), the matrix plotByTrait is response ydata in GJAM.

Predictors in a model

The PBGJAM site offers abundance-weighted habitat scores (AWHS) for current conditions and future scenarios for several species groups, including ground beetles. These are not predictions of where a species is now or where a species will be in the future. Rather, they are habitats weighted by current abundance of species, based on variables used in model fitting and other species in the community. They are conditioned on a specific scenario (e.g., ‘current conditions’ or an emissions scenario). AWHS transfer formal predictive distributions from Generalized Joint Attribute Modeling (GJAM), with full uncertainty from parameters, model, and observations to mapped scenarios. For this reason, it is fine to refer to them as “predictive distributions”—again, that’s the formal name for them. Unlike standard predictions, AWHS are based on abundance, incorporating sample effort for observed data. They are not presence-only or presence/absence. GJAM incorporates the joint relationships between species, because there is mutual dependence between species. The units (dimension) of a AWHS is species abundance—the same units used for observations.

The predictors we use here combine climate and the local habitat variables that provide cover and foraging opporunity for ground beetles:

def.JJA - summer deficit (PET minus P summed over June, July, August)

tmmn.DJF - minimum winter temperature (December, January, February)

nrd.15cm.2m - understory cover from LIDAR, 0.15 - 2 m in height

s.roughness - surface roughness

Nitrogen.mean - soil nitrogen

gap.frac.10 - gap fraction from LIDAR

cec30 - cation exchange capacity (a soil fertility index), upper 30 cm

soc30 - soil organic carbon, upper 30 cm

cwd - coarse woody debris volume, sqrt scale

Here is the climate-habitat space represented in the data:

xnames <- c('def.JJA', 'tmmn.DJF', 'nrd.15cm.2m', 's.roughness', 
            'Nitrogen.mean', 'gap.frac.10', 'cec30', 'soc30', 'cwd')
pairs(xdata[,xnames], cex = .1)

Fig. 3. Pairs plot of predictors in the model do not show strong correlations.

We are also interested in the distributions of species across landcover types.

From the pairs plot, there is some redundancy in predictors, but it is not extreme. The negative tendency between nrd.15cm.2m and gap.frac.10 results from the understory growth that can proliferate in canopy gaps. There is a range of soc30 at high cec30 (organic soils can be infertile), but both are low together (low CEC begets low productivity and, thus, low OM). Despite these weak tendencies, each predictor brings some additional information.

Implementation

Species as weights become composition data. Modeling can be done as fractional composition (FC), in which case there is no accommodation for the differential effort in terms of total count between observations, or as composition count (CC), which does allow for this difference. Both allow for differential trap nights, which is held in the effMat matrix. Here is the fractional composition setup:

eff    <- edata$values
pbys <- pbys/eff                           # allow for trap nights
pbys <- sweep( pbys, 1, rowSums(pbys), '/' )  # fraction of total
pbys <- as.matrix( pbys )
pbys[ !is.finite(pbys) ] <- 0
typeNames <- 'FC'

Here is the composition count setup:

eff <- eff/max(eff) # allow for trap nights
pbys <- round( pbys/eff ) # preserve count and trap-night effects on effort
pbys <- as.matrix( pbys )
pbys[ !is.finite(pbys) ] <- 0
typeNames <- 'CC'

Here is model fitting:

tl  <- list(plotByTrait = plotByTrait, traitTypes = tTypes, specByTrait = specByTrait)
rl  <- list(r = 8, N = 25)
ml  <- list(ng = 3000, burnin = 500, typeNames = typeNames, holdoutN = 20,
                  traitList = tl, reductList = rl)
form <- as.formula( ~ def.JJA*gap.frac.10 + tmmn.DJF + s.roughness + Nitrogen.mean + cec30 + nrd.15cm.2m + cwd)

out <- gjam(form, xdata = xdata, ydata = pbys, modelList = ml)

Combined results for species and traits

Before plotting I assign colors to traits and to the species that bear those traits:

S  <- ncol(pbys)
sc <- rep('black', S)
wr <- which(specByTrait[,'burrow'] == 1)             # brown
wb <- which(specByTrait[,'run'] == 1)                # blue
wd <- which(specByTrait[,'climb'] == 1)              # light blue
ws <- which(specByTrait[,'trophicpredaceous'] == 1)   
sc[ws] <- '#3288bd'
sc[wr] <- '#8c510a'
sc[wb] <- '#003c30'
sc[wd] <- '#80cdc1'

M  <- ncol(specByTrait)
tc <- rep('black', M)
names(tc) <- colnames(specByTrait)
tc[ 'burrow' ] <- '#8c510a'
tc[ 'run' ] <- '#3288bd'
tc[ 'climb' ] <- '#003c30'
tc[ 'trophicpredaceous' ] <- '#80cdc1'

ncluster <- 5

pl  <- list(GRIDPLOTS=T, specColor = sc, traitColor = tc, ncluster = ncluster,
            PLOTALLY = T) 
fit <- gjamPlot(output = out, pl)
**Fig. 4a.** *Species abundance prediction from the fitted PTM fitted.*

Fig. 4a. Species abundance prediction from the fitted PTM fitted.

In the prediction plots from Figure 4a, accurate predictions follow the 1:1 line, whereas noise (lack of signal) follow the mean (horizontal dashed line). Species predictions fall between these two extremes.

The PTM uses the trait matrix \(\mathbf{T}\) to change variables from species to traits:

**Fig. 4b.** *Trait prediction from the fitted PTM fitted.*

Fig. 4b. Trait prediction from the fitted PTM fitted.

From the above plot it is clear that climate and habitat predict some traits better than others. For example, knowledge of the predictors in this model would not help us to anticipate the importance of black or brown coloration, while it would help us predict iridescence (colorother), examples including Figures 1a, b. It would not help with prediction of climbers, but it would with most of the other behavioral traits in the top row of Figure 4b.

Recall that in the predictive trait model (PTM) (see ‘Trait analysis’ in the GJAM vignette), the trait coefficients are \(\mathbf{A} = \mathbf{B} \mathbf{T}\), where \(\mathbf{T}\) is the \(S \times M\) species by trait matrix (specByTrait), and \(\mathbf{B}\) is the \(Q \times S\) matrix of species coefficients. Here is the trait response with one plot per predictor;

**Fig. 5a.** *Trait response to summer moisture deficit.*

Fig. 5a. Trait response to summer moisture deficit.

**Fig. 5b.** *Trait response to minimum winter temperature.*

Fig. 5b. Trait response to minimum winter temperature.

**Fig. 5c.** *Trait response to canopy gap fraction.*

Fig. 5c. Trait response to canopy gap fraction.

**Fig. 5d.** *Trait response to surface roughness.*

Fig. 5d. Trait response to surface roughness.

**Fig. 5e.** *Trait response to foliar N concentration.*

Fig. 5e. Trait response to foliar N concentration.

**Fig. 5f.** *Trait response to cation exchange capacity (CEC).*

Fig. 5f. Trait response to cation exchange capacity (CEC).

**Fig. 5g.** *Trait response to understory cover from lidar, 0.15 - 2 m in height.*

Fig. 5g. Trait response to understory cover from lidar, 0.15 - 2 m in height.

**Fig. 5h.** *Trait response to coarse woody debris.*

Fig. 5h. Trait response to coarse woody debris.

Here is the full \(\mathbf{A}\) matrix:

**Fig. 5i.** *Trait response matrix to predictors.*

Fig. 5i. Trait response matrix to predictors.

Sensitivity by species and by traits

The individual fitted coefficients give us the sensitivity to a predictor of a species (\(\mathbf{B}\)) or a trait (\(\mathbf{A}\)). How do we summarize sensitivity across the full community of species?

The sensitivity to predictors across the entire community of species can be determined from the set of all coefficients together with the species covariance,

\[ diag \left( \mathbf{B} \Sigma^{-1} \mathbf{B}'\right) \] Recall that \(\Sigma\) is the residual covariance matrix. Here sensitivities are plotted from the estimates in out$chains$fSensGibbs

**Fig. 6.** *Sensitivity of species abundance to predictors.*

Fig. 6. Sensitivity of species abundance to predictors.

One of the habitat variables (understory cover) comes out at the top, but it is followed by moisture deficit and winter temperatures.

We can also look at sensitivity by trait groups. Let \(\mathcal{T}\) be the set of species in a trait group (e.g., ‘climbers’) and \(-\mathcal{T}\) be species not in that group. Here is a conditional sensitivity for the group,

\[ diag \left( \mathbf{B}_{\mathcal{T}} \Sigma^{-1}_{\mathcal{T}|-\mathcal{T}} \mathbf{B}'_{\mathcal{T}}\right) \] where \(\Sigma_{\mathcal{T}|-\mathcal{T}}\) is the conditional covariance of species in the trait group given those that are not.

Here are sensitivities of several groups to predictors:

ynames   <- colnames(pbys)
wc       <- which( specByTrait[ ynames, 'climb'] == 1 )
climbers <- ynames[wc]
cc       <- gjamSensitivity( out, group = climbers )

wf     <- which( specByTrait[ ynames, 'flight'] == 1 )
fliers <- ynames[wf]
ff     <- gjamSensitivity( out, group = fliers )

wb     <- which( specByTrait[ ynames, 'burrow'] == 1 )
burrow <- ynames[wb]
bb     <- gjamSensitivity( out, group = burrow )

wr      <- which( specByTrait[ ynames, 'run'] == 1 )
runners <- ynames[wr]
rr      <- gjamSensitivity( out, group = runners )

nt  <- ncol(rr)
ord <- order(colMeans(rr))

ylim <- range(rbind(ff, cc, bb, rr))
ylim[2] <- ylim[2]*3

cols <- c('#01665e','#3288bd','#8c510a','#f46d43')

par(bty='n')
tmp <- boxplot( cc[,ord], boxwex = 0.12,  at = 1:nt - .2, border = cols[1], log='x',
         ylim = ylim, yaxt = 'n', xlab='Sensitivity', horizontal = T, 
         lty=1, outline=F)$stats
boxplot( ff[,ord], boxwex = 0.12, at = 1:nt - .1, border = cols[2], add=T,
         yaxt = 'n', horizontal = T, lty=1, outline=F)
boxplot( bb[,ord], boxwex = 0.12, at = 1:nt + .1, border = cols[3], add=T,
         yaxt = 'n', horizontal = T, lty=1, outline=F)
boxplot( rr[,ord], boxwex = 0.12, at = 1:nt + .2, border = cols[4], add=T,
         yaxt = 'n', horizontal = T, lty=1, outline=F)

pos <- rep(4, nt)
wp  <- which( tmp[5,] > max(tmp)/2 )
yt  <- 1.5*tmp[5,]
pos[ wp ] <- 2
yt[ wp ] <- .9*tmp[1,wp]
text( yt, 1:nt - .3, colnames(cc)[ord], pos = pos)

legend('bottomright',c('climbers','fliers','burrowers','runners'),
       text.col=cols, bty='n')

Fig. 7. Sensitivity to predictors of trait groups.

Runners are most sensitive to most predictors in the model, and respond most to gaps, winter temperatures, and understory cover, while climbers and fliers are least sensitive to most variables. Fliers are especially insensitive to CWD and understory cover.

And we can look at the sensitivity to predictors at the level of trait syndromes, evaluated as

\[ diag \left( \mathbf{A} \Omega^{-1} \mathbf{A}'\right) \] where \(\Omega = \mathbf{T}\Sigma\mathbf{T}'\) is the \(M \times M\) covariance for the joint distribution of traits.

par(bty='n')
bt <- out$parameters$betaTraitXWmu
av <- out$parameters$varTraitMu
traitSens <- diag( bt%*%av%*%t(bt) )[-1]
traitSens <- sort( traitSens/sum(traitSens) )
na  <- length(traitSens)
at  <- 1:na
pos <- rep(2, na)
pos[ 1:3 ] <- 4
plot(traitSens, at, log = 'x', yaxt='n', ylim = c(0, length(traitSens)),
     ylab = 'Predictors', xlab = 'Trait sensitivity', pch = 3, lwd=3)

#axis(1, at = at, labels = F)
text( traitSens, at, names(traitSens), pos = pos )

Fig. 8. Sensitivity of traits to predictors,

Taken across all trait groups, understory cover, CEC, gap fraction, and winter temperatures emerge as the most important predictors.

For reference, trait coefficients from out$parameters$betaTraitXTable are listed at the end of this vignette.

Trait syndromes

Traits may tend to occur in combinations, where possession of one attribute may only be adaptive if accompanied by others. For example, does flight and activity in the Cicindelids increase the importance of bright coloration, while a fossorial and nocturnal habit selects for dark coloration? Here is the clustering of traits based on the relationship

\[ \mathbf{E}_A = \mathbf{A}' \mathbf{V} \mathbf{A} \] where \(\mathbf{V}\) is the covariance in the design matrix \(\mathbf{X}\). This equation says that large responses of the same sign to environmental variables that vary widely cause traits to respond similarly. Here is a clustering of trait responses:

library(dendextend)
cov2Dist <- function(sigma){ #distance induced by covariance
  n <- nrow(sigma)
  matrix(diag(sigma),n,n) + matrix(diag(sigma),n,n,byrow=T) - 2*sigma
}

bt <- out$parameters$betaTraitXWmu  
x  <- out$inputs$xStand
cx <- cov(x[,-1])
sy <- t(bt)%*%cx%*%bt
dsigma <- as.dist( cov2Dist(sy) )

# draw dendrogram
yclust <- hclust(dsigma, method='complete')
dend   <- as.dendrogram(yclust)
dend   <- color_branches(dend, k=3)
dend   <- hang.dendrogram(dend,hang_height=0.1)
dend   <- set(dend, "labels_cex", 0.5)
plot(dend, horiz =  TRUE,  nodePar = list(cex = .007))

Fig. 9. Across the community of species traits cluster into syndromes.

The iridescent color (colorother) occurs with omnivory, as does running with climbing, large size (length) with burrowing. Predators and granivores (trophicother) likewise respond similarly. These relationships can be the basis for interpreting trait combinations that are most beneficial in combinations.


Exercise. Current papers on declines in insect abundance speculate on the relative importance of climate change, habitat deterioration, and pesticides (van Klink et al. 2020, Crossley et al. 2020). Our analysis does not include pesticide information, but it does include critical climate and habitat variables. In light of the species sensitivity (Fig. 6), individual trait responses (Fig. 5), trait groups sensitivity (Fig. 7), and full trait sensitivity (Fig. 8), which groups would you expect to be most vulnerable to both types of change?


Coefficient table for out$parameters$betaTraitXTable

Estimate SE CI_025 CI_975 sig95
climb_intercept -8.93e-01 0.01210 -9.17e-01 -8.70e-01 *
climb_def.JJA -3.32e-02 0.01360 -5.94e-02 -5.72e-03 *
climb_gap.frac.10 -2.43e-02 0.02170 -6.64e-02 1.89e-02
climb_tmmn.DJF -1.09e-02 0.01360 -3.84e-02 1.63e-02
climb_s.roughness -1.63e-02 0.01320 -4.24e-02 1.04e-02
climb_Nitrogen.mean 3.77e-02 0.01400 9.90e-03 6.43e-02 *
climb_cec30 -9.18e-02 0.01370 -1.18e-01 -6.36e-02 *
climb_nrd.15cm.2m 2.13e-02 0.02040 -1.80e-02 6.22e-02
climb_cwd 3.35e-02 0.01300 8.05e-03 5.86e-02 *
climb_def.JJA:gap.frac.10 -3.07e-02 0.01490 -5.86e-02 -9.44e-04 *
burrow_intercept -2.21e+00 0.01910 -2.25e+00 -2.17e+00 *
burrow_def.JJA -2.50e-02 0.02230 -6.81e-02 1.88e-02
burrow_gap.frac.10 -1.61e-02 0.03510 -8.48e-02 5.19e-02
burrow_tmmn.DJF 1.39e-01 0.02100 9.80e-02 1.80e-01 *
burrow_s.roughness 4.77e-02 0.02000 7.57e-03 8.50e-02 *
burrow_Nitrogen.mean 8.09e-02 0.02010 4.27e-02 1.22e-01 *
burrow_cec30 -6.91e-02 0.02150 -1.10e-01 -2.60e-02 *
burrow_nrd.15cm.2m -5.65e-04 0.03180 -6.53e-02 6.04e-02
burrow_cwd -3.17e-02 0.02150 -7.41e-02 1.05e-02
burrow_def.JJA:gap.frac.10 2.43e-02 0.02300 -2.22e-02 6.83e-02
run_intercept -5.45e+00 0.02930 -5.50e+00 -5.39e+00 *
run_def.JJA -1.09e-01 0.03250 -1.72e-01 -4.35e-02 *
run_gap.frac.10 -2.29e-01 0.05190 -3.28e-01 -1.28e-01 *
run_tmmn.DJF -4.24e-02 0.03120 -1.02e-01 1.82e-02
run_s.roughness 8.20e-02 0.03140 2.02e-02 1.47e-01 *
run_Nitrogen.mean 1.06e-01 0.03120 4.63e-02 1.68e-01 *
run_cec30 -7.23e-02 0.03340 -1.39e-01 -6.17e-03 *
run_nrd.15cm.2m -1.47e-01 0.04810 -2.43e-01 -5.57e-02 *
run_cwd 1.31e-01 0.03170 6.90e-02 1.92e-01 *
run_def.JJA:gap.frac.10 5.30e-02 0.03450 -1.56e-02 1.20e-01
length_intercept -9.39e+01 0.48100 -9.48e+01 -9.29e+01 *
length_def.JJA -9.10e-01 0.52800 -1.94e+00 1.26e-01
length_gap.frac.10 -2.36e+00 0.85700 -4.02e+00 -6.62e-01 *
length_tmmn.DJF 2.43e+00 0.51700 1.45e+00 3.42e+00 *
length_s.roughness 1.03e+00 0.51600 -1.20e-02 2.04e+00
length_Nitrogen.mean 2.16e-01 0.51300 -7.69e-01 1.27e+00
length_cec30 -2.54e+00 0.53600 -3.56e+00 -1.46e+00 *
length_nrd.15cm.2m -2.78e+00 0.80000 -4.31e+00 -1.18e+00 *
length_cwd 8.97e-01 0.52700 -1.47e-01 1.93e+00
length_def.JJA:gap.frac.10 2.13e-01 0.56100 -8.89e-01 1.33e+00
diurnal_intercept -1.03e+00 0.01310 -1.06e+00 -1.01e+00 *
diurnal_def.JJA -6.64e-02 0.01400 -9.31e-02 -3.86e-02 *
diurnal_gap.frac.10 4.23e-02 0.02270 -3.57e-03 8.53e-02
diurnal_tmmn.DJF 2.13e-01 0.01350 1.85e-01 2.38e-01 *
diurnal_s.roughness 4.12e-02 0.01370 1.47e-02 6.70e-02 *
diurnal_Nitrogen.mean 1.23e-02 0.01300 -1.33e-02 3.78e-02
diurnal_cec30 -5.51e-02 0.01450 -8.31e-02 -2.71e-02 *
diurnal_nrd.15cm.2m -1.85e-02 0.02110 -6.02e-02 2.10e-02
diurnal_cwd -1.49e-02 0.01390 -4.16e-02 1.28e-02
diurnal_def.JJA:gap.frac.10 3.17e-02 0.01560 3.70e-04 6.17e-02 *
flight_intercept -4.58e+00 0.03660 -4.65e+00 -4.50e+00 *
flight_def.JJA 4.83e-01 0.04130 4.03e-01 5.62e-01 *
flight_gap.frac.10 -1.92e-02 0.06990 -1.54e-01 1.22e-01
flight_tmmn.DJF 1.29e-01 0.03910 5.25e-02 2.05e-01 *
flight_s.roughness -2.74e-01 0.04000 -3.52e-01 -2.00e-01 *
flight_Nitrogen.mean 8.66e-02 0.03800 1.28e-02 1.61e-01 *
flight_cec30 -3.09e-01 0.04410 -3.93e-01 -2.19e-01 *
flight_nrd.15cm.2m -1.02e-01 0.06520 -2.30e-01 2.81e-02
flight_cwd -1.19e-01 0.03990 -2.00e-01 -4.28e-02 *
flight_def.JJA:gap.frac.10 4.54e-02 0.04590 -4.42e-02 1.36e-01
trophicother_intercept -1.98e-01 0.00604 -2.09e-01 -1.87e-01 *
trophicother_def.JJA 2.61e-02 0.00645 1.33e-02 3.86e-02 *
trophicother_gap.frac.10 -3.73e-02 0.01110 -5.88e-02 -1.48e-02 *
trophicother_tmmn.DJF -5.08e-02 0.00636 -6.30e-02 -3.81e-02 *
trophicother_s.roughness 9.85e-03 0.00610 -1.69e-03 2.17e-02
trophicother_Nitrogen.mean -2.95e-02 0.00619 -4.17e-02 -1.72e-02 *
trophicother_cec30 5.17e-03 0.00670 -7.88e-03 1.77e-02
trophicother_nrd.15cm.2m 1.91e-02 0.00966 2.14e-04 3.79e-02 *
trophicother_cwd -1.97e-02 0.00691 -3.33e-02 -6.05e-03 *
trophicother_def.JJA:gap.frac.10 2.67e-02 0.00693 1.33e-02 4.01e-02 *
trophicomnivorous_intercept -3.38e+00 0.02400 -3.42e+00 -3.33e+00 *
trophicomnivorous_def.JJA 6.24e-02 0.02820 6.46e-03 1.17e-01 *
trophicomnivorous_gap.frac.10 1.87e-02 0.04380 -6.90e-02 1.04e-01
trophicomnivorous_tmmn.DJF 2.07e-01 0.02630 1.55e-01 2.58e-01 *
trophicomnivorous_s.roughness -7.93e-02 0.02580 -1.30e-01 -2.83e-02 *
trophicomnivorous_Nitrogen.mean 1.03e-01 0.02570 5.11e-02 1.52e-01 *
trophicomnivorous_cec30 -1.88e-01 0.02800 -2.42e-01 -1.32e-01 *
trophicomnivorous_nrd.15cm.2m -2.49e-04 0.04070 -8.21e-02 8.20e-02
trophicomnivorous_cwd 1.01e-02 0.02670 -4.24e-02 6.16e-02
trophicomnivorous_def.JJA:gap.frac.10 -1.72e-02 0.02990 -7.56e-02 4.16e-02
trophicpredaceous_intercept -3.28e+00 0.02320 -3.32e+00 -3.23e+00 *
trophicpredaceous_def.JJA -3.54e-02 0.02570 -8.66e-02 1.41e-02
trophicpredaceous_gap.frac.10 -2.04e-01 0.04160 -2.85e-01 -1.23e-01 *
trophicpredaceous_tmmn.DJF -1.38e-01 0.02530 -1.87e-01 -8.83e-02 *
trophicpredaceous_s.roughness 9.15e-02 0.02540 3.93e-02 1.41e-01 *
trophicpredaceous_Nitrogen.mean -7.48e-02 0.02500 -1.23e-01 -2.54e-02 *
trophicpredaceous_cec30 4.57e-02 0.02690 -5.99e-03 9.85e-02
trophicpredaceous_nrd.15cm.2m -1.91e-01 0.03830 -2.66e-01 -1.19e-01 *
trophicpredaceous_cwd 5.69e-02 0.02640 5.73e-03 1.10e-01 *
trophicpredaceous_def.JJA:gap.frac.10 8.77e-02 0.02830 3.40e-02 1.43e-01 *
colorother_intercept -7.00e-01 0.01130 -7.23e-01 -6.78e-01 *
colorother_def.JJA 1.85e-03 0.01250 -2.31e-02 2.60e-02
colorother_gap.frac.10 3.31e-02 0.01930 -4.41e-03 7.07e-02
colorother_tmmn.DJF 3.71e-02 0.01210 1.25e-02 6.01e-02 *
colorother_s.roughness -3.71e-02 0.01160 -6.02e-02 -1.49e-02 *
colorother_Nitrogen.mean 1.10e-01 0.01200 8.64e-02 1.34e-01 *
colorother_cec30 -5.73e-02 0.01230 -8.13e-02 -3.31e-02 *
colorother_nrd.15cm.2m 4.61e-02 0.01800 1.16e-02 8.11e-02 *
colorother_cwd 1.50e-02 0.01240 -9.14e-03 3.90e-02
colorother_def.JJA:gap.frac.10 -4.81e-02 0.01390 -7.42e-02 -2.14e-02 *
colorblack_intercept -4.85e+00 0.02800 -4.91e+00 -4.80e+00 *
colorblack_def.JJA 9.29e-03 0.03120 -5.15e-02 7.08e-02
colorblack_gap.frac.10 -2.18e-01 0.04870 -3.14e-01 -1.21e-01 *
colorblack_tmmn.DJF 2.04e-01 0.02920 1.48e-01 2.61e-01 *
colorblack_s.roughness 3.64e-02 0.02930 -2.05e-02 9.43e-02
colorblack_Nitrogen.mean -1.11e-01 0.02940 -1.67e-01 -5.20e-02 *
colorblack_cec30 -1.98e-01 0.03090 -2.56e-01 -1.38e-01 *
colorblack_nrd.15cm.2m -1.64e-01 0.04540 -2.51e-01 -7.61e-02 *
colorblack_cwd -6.01e-02 0.03160 -1.23e-01 1.68e-03
colorblack_def.JJA:gap.frac.10 1.92e-01 0.03270 1.28e-01 2.55e-01 *
colordarkbrown_intercept -1.30e+00 0.01470 -1.33e+00 -1.27e+00 *
colordarkbrown_def.JJA 4.20e-02 0.01690 9.33e-03 7.42e-02 *
colordarkbrown_gap.frac.10 -3.83e-02 0.02640 -8.98e-02 1.16e-02
colordarkbrown_tmmn.DJF -2.23e-01 0.01640 -2.53e-01 -1.91e-01 *
colordarkbrown_s.roughness 2.27e-02 0.01570 -8.62e-03 5.36e-02
colordarkbrown_Nitrogen.mean 4.76e-05 0.01590 -3.14e-02 3.12e-02
colordarkbrown_cec30 1.18e-01 0.01720 8.43e-02 1.51e-01 *
colordarkbrown_nrd.15cm.2m -5.46e-02 0.02420 -1.02e-01 -7.55e-03 *
colordarkbrown_cwd 9.24e-02 0.01590 6.07e-02 1.23e-01 *
colordarkbrown_def.JJA:gap.frac.10 -4.66e-02 0.01860 -8.07e-02 -9.23e-03 *