Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
2 contributors

Users who have contributed to this file

@kelseybmccune @corinalogan
395 lines (258 sloc) 28.1 KB
---
title: Validating morphological condition indices and their relationship with reproductive success in great-tailed grackles
author: 'Berens JM (Arizona State University), [Logan CJ](http://CorinaLogan.com) (Max Planck Institute for Evolutionary Anthropology, MPI EVA, corina_logan@eva.mpg.de), Folsom M (MPI EVA), Bergeron L (University of California Santa Barbara, UCSB), McCune KB (UCSB, kelseybmccune@gmail.com)'
date: '`r Sys.Date()`'
output:
html_document:
toc: true
toc_depth: 4
toc_float:
collapsed: false
code_folding: hide
md_document:
toc: true
pdf_document:
keep_tex: yes
latex_engine: xelatex
github_document:
toc: true
bibliography: /Users/corina/GitHub/grackles/Files/MyLibrary.bib
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r}
#Make code wrap text so it doesn't go off the page when Knitting to PDF
library(knitr)
opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE)
```
<img width="50%" src="logoPCIecology.png">
**Cite as:** Berens JM, Logan CJ, Folsom M, Bergeron L, McCune KB. 2019. [Validating morphological condition indices and their relationship with reproductive success in great-tailed grackles](http://corinalogan.com/Preregistrations/gcondition.html). (http://corinalogan.com/Preregistrations/gcondition.html) In principle acceptance by *PCI Ecology* of the version on 8 Nov 2019 of the [https://github.com/corinalogan/grackles/blob/master/Files/Preregistrations/gcondition.Rmd](https://github.com/corinalogan/grackles/blob/master/Files/Preregistrations/gcondition.Rmd).
<img width="5%" src="logoOpenAccess.png"> <img width="5%" src="logoOpenCode.png"> <img width="5%" src="logoOpenPeerReview.png">
***Click [here](https://github.com/corinalogan/grackles/blob/master/README.md) to navigate to the version-tracked reproducible manuscript (.Rmd file)***
**This preregistration has been pre-study peer reviewed and received an In Principle Acceptance by:**
Marcos Mendez (2019 In Principle Acceptance) Are condition indices positively related to each other and to fitness?: a test with grackles. *Peer Community in Ecology*, 100035. [10.24072/pci.ecology.100035](https://doi.org/10.24072/pci.ecology.100035)
- Reviewers: Javier Seoane and Isabel López-Rull
### ABSTRACT
Morphological variation among individuals has the potential to influence multiple life history characteristics such as dispersal, migration, reproductive success, and survival (@wilder2016moving). Research has shown that individuals that are in better "condition" can disperse or migrate further or more successfully, have greater reproductive success, and survive for longer (@wilder2016moving; @heidinger2010patch; @liao2011fat), particularly in years where environmental conditions are harsh (@milenkaya2015body). An individual's body condition can be defined in various ways, but is most often considered an individual's energetic or immune state (@milenkaya2015body). Since these traits are hard to measure directly, researchers have instead used a variety of morphological proxy variables to quantify condition such as fat score (@kaiser1993new), weight, ratio of weight to tarsus length (@labocha2014body), a scaled mass index (@peig2009new), as well as hematological indices for immune system function (@fleskes2017body, @kraft2019developmental). However, there is mixed support regarding whether these condition indices relate to life history characteristics (@wilder2016moving; @labocha2014body), and whether the relationship shows a linear trend (@mcnamara2005theoretical; @milenkaya2015body). Additionally, although some researchers use multiple morphological proxy variables for condition (i.e. @warnock1998spring), rarely has there been direct comparisons among proxies to validate that they measure the same trait. In this investigation, we will define condition as represented by an individual's energetic state to compare two indices (fat score and the scaled mass index) to validate whether they measure the same trait in our study system, the great-tailed grackle *(Quiscalus mexicanus)*. We will then test whether our morphological proxy variables correlate with reproductive success, measured as whether a female had a fledgling (or not) and whether a male held a territory containing nests (or not). Results will improve our understanding of measures of condition in grackles, and birds in general, and the importance of condition for reproductive success - a necessary component for selection to act.
### A. STATE OF THE DATA
This preregistration uses secondary data that are collected as part of other ongoing investigations (tarsus length in [flex genes](http://corinalogan.com/Preregistrations/g_flexgenes.html); tarsus length, body weight, number of fledglings, and whether a male holds a territory in [within population](http://corinalogan.com/Preregistrations/g_withinpop.html); and tarsus length in [expansion](http://corinalogan.com/Preregistrations/g_expansion.html)). This preregistration was written (July 2019) and submitted to Peer Community In Ecology for pre-study peer review (August 2019) before any analyses were conducted.
### B. HYPOTHESES
#### H1: There is a relationship between two different morphological indices of condition: fat score and the scaled mass index.
**Prediction 1:** Fat score and the scaled mass index will be positively correlated. This would indicate that these two indices measure the same trait, and it is likely they both are proxies for fat content.
**Prediction 1 alternative 1:** There is a negative correlation between fat score and the scaled mass index. This would indicate that there may be a tradeoff between the two indices where a larger value of the scaled mass index may measure muscle content rather than fat, and individuals with more muscle have less visible fat.
**Prediction 1 alternative 2:** There is no correlation between fat score and the scaled mass index. This indicates that these two variables do not measure the same trait. Fat score may not adequately capture a bird’s condition because birds may be selected to only store the minimal fat necessary to prevent starvation, while also minimizing the weight gain that would make them easier targets for predators (@barnett2015mass). Similarly, the scaled mass index could be heavily influenced by body size, therefore reflecting structural size rather than fat storage (@labocha2012morphometric).
#### H2: Condition (as measured by fat score and the scaled mass index) relates to reproductive success (measured as a binary variable of whether a female had one or more fledglings (1) or not (0), and whether a male defended a territory containing nests (1) or not (0)).
**Prediction 2:** Morphological indices of condition (fat score and the scaled mass index) will correlate positively with reproductive success. This would indicate that individuals with more fat, and therefore higher energy reserves, are better able to acquire the resources necessary for reproduction.
**Prediction 2 alternative 1:** Morphological indices of condition (fat score and the scaled mass index) will correlate negatively with reproductive success. This indicates that individuals may make trade offs, with some acquiring more food and increasing their energy reserves, and others prioritizing reproductive activities over increasing energy reserves.
**Prediction 2 alternative 2:** Morphological indices of condition (fat score and the scaled mass index) do not correlate with reproductive success. This indicates that other, potentially non-morphological, individual characteristics relate to reproductive success (i.e., cognition, nest site selection, breeding experience, predator vigilance, etc.).
### C. METHODS
#### **Planned Sample**
Great-tailed grackles are caught in the wild in Tempe, Arizona using a variety of methods (e.g., walk-in trap, bownet, mist net). After capture we immediately process birds by attaching colored leg bands in unique combinations for individual identification, conducting morphological measurements of weight, tarsus length, flattened wing length, tail length, skull length, bill length and fat score (the amount of visible fat under the skin in the clavicle and abdomen as in @kaiser1993new). Most grackles are released after completion of color band marking, measurements, and acquiring a blood sample. A subset of grackles are held in aviaries for up to 6 months for behavioral testing, and then released back to the wild at their location of capture.
From March - August, we monitor the behavior of all color-marked grackles to determine their nesting status. We follow females carrying nesting materials to find their nest. We determine whether the male territory owner is color-marked as well. Then we check each nest approximately every day to determine the status based on the female’s behavior (building, incubation, feeding nestlings, feeding fledglings, failed).
Individuals included in this sample will be those for which we have measures of condition when they were adults. We will not include individuals whose data were collected as juveniles. As of 30 July 2019, we have fledgling data for 14 females that exhibited breeding behavior (5 had 1+ fledgling, 9 had no fledglings) and breeding territory status for 10 males (7 territory holders, 3 non-territory holders, 2 not observed so not part of this sample). Therefore, the minimum sample size for H2 will be 24. The minimum sample size for H1 will be 72, because that is how many marked individuals we have biometric data for so far. However, we expect to be able to add to the sample size for both H1 and H2 before the end of this investigation in Tempe, Arizona.
#### **Sample size rationale**
We will continue to color mark as many grackles as possible, and collect biometric data and fat scores. Our current sample of reproductive success is small because the grackles in Tempe nest in very tall palms, making it difficult to determine nest status. However, we plan to collect additional reproductive success data during the breeding season in summer 2020.
#### **Data collection stopping rule**
We will stop collecting data for this project in early August 2020 when research at the Tempe, Arizona field site will be finished.
#### **Open materials**
Biometric measurement protocol:
https://gitlab.com/corinalogan/the-grackle-project/blob/master/protocolBiometrics.pdf
Nest check protocol:
https://gitlab.com/corinalogan/the-grackle-project/blob/master/protocolNestCheck.pdf
####**Open data**
When the study is complete, the data will be published in the Knowledge Network for Biocomplexity's data repository.
#### **Randomization and counterbalancing**
There is no randomization or counterbalancing in this investigation.
#### **Blinding of conditions during analysis**
No blinding is involved in this investigation.
#### **Dependent Variables**
**P1: correlation between fat and the scaled mass index**
1) Fat score (the amount of visible fat under the skin in the clavicle and abdomen reported as a score from 0 (no fat) to 8 (fat completely covers muscles and underside of the bird); @kaiser1993new)
**P2: condition and reproductive success**
1) Female had one or more fledglings (yes, no)
2) Male held a territory consisting of 1 to 3 clumped palms containing nests (yes, no)
#### **Independent Variables**
**P1: correlation between fat and the scaled mass index**
1) Scaled mass index using measures of body weight and tarsus length or flattened wing length (average of left and right as in @bleeker2005body). We will choose the measure that is most correlated with body weight (@peig2009new).
2) Season (non-breeding [Sep-Feb], breeding [Mar-Aug])
3) Random effect: Experimenter (because several different experimenters measure dependent variables on multiple different birds)
**P2: condition and reproductive success**
1) Fat score
- Note 1: if the fat score and the scaled mass index are positively correlated, then we will use only fat score in the model for P2. If they are not positively correlated, then we will add the scaled mass index as an independent variable in the P2 analysis
- Note 2: if fat score and/or the scaled mass index vary by season (breeding or non-breeding), then we will only use the data from the breeding season to ensure that less time has elapsed between the collection of condition and reproductive success variables
2) Temporarily held in aviaries for behavioral testing at any point during this study, because this may affect breeding behaviors (yes, no)
3) Random effect: Year (to determine whether conditions in a given breeding season similarly affected all grackle behavior and nest success)
4) Random effect: Bird ID (because there may be multiple measures of reproductive success for each bird)
### D. ANALYSIS PLAN
We will **exclude** data that was collected from the grackles when they were released from the aviaries to avoid any confounds due to their time in the aviary (e.g., perhaps unlimited nutritious food in the aviaries decreased their fat score). However, to validate that our measures of structural body size (tarsus length or wing length) are precise and accurate, we will measure twice a subset of grackles brought into aviaries - once when they are initially caught, and again up to 6 months later when we release them. We will then calculate the repeatability of these multiple measures. All other data included in this study will come only from wild-caught grackles (including the birds that were brought into the aviaries on their first capture). When **missing data** occur, the existing data for that individual will be included in the analyses for which their data exist. Analyses will be conducted in R (current version `r getRversion()`; @rcoreteam).
####*Ability to detect actual effects*
To begin to understand what kinds of effect sizes we will be able to detect given our sample size limitations, we used G&ast;Power (v.3.1, @faul2007g, @faul2009statistical) to conduct power analyses based on confidence intervals. G&ast;Power uses pre-set drop down menus and we chose the options that were as close to our analysis methods as possible (listed in each analysis below). Note that there were no explicit options for GLMMs, thus the power analyses are only an approximation of the kinds of effect sizes we can detect. We realize that these power analyses are not fully aligned with our study design and that these kinds of analyses are not appropriate for Bayesian statistics (e.g., our MCMCglmm below), however we are unaware of better options at this time. Additionally, it is difficult to run power analyses because it is unclear what kinds of effect sizes we should expect due to the lack of data on this species for these particular research questions.
####*Data checking*
The data will be checked for overdispersion, underdispersion, zero-inflation, and heteroscedasticity with the DHARMa R package [@Hartig2019dharma] following methods by [Hartig](https://cran.r-project.org/web/packages/DHARMa/vignettes/DHARMa.html).
#### *P1 analysis: correlation between fat and the scaled mass index*
**Analysis:** We will calculate the scaled mass index as described by @peig2009new using either tarsus or flattened wing length - whichever measure is most correlated with body weight (@peig2009new).
We use a Generalized Linear Mixed Model (GLMM; MCMCglmm function, MCMCglmm package; (Hadfield 2010)) with an ordinal distribution (for categorical variables in MCMCglmm) and probit link using 130,000 iterations with a thinning interval of 10, a burnin of 30,000, and minimal priors (V=1, nu=0) (Hadfield 2014). We will ensure the GLMM shows acceptable convergence (lag time autocorrelation values <0.01; (Hadfield 2010)), and adjust parameters if necessary to meet this criterion. We will determine whether an independent variable had an effect or not using the Estimate in the full model.
Where we have multiple measures of tarsus or flattened wing length, we will check that our measurements are repeatable using the rptR package (@stoffel2017rptr).
To roughly estimate our ability to detect actual effects (because these power analyses are designed for frequentist statistics, not Bayesian statistics), we ran a power analysis in G\*Power with the following settings: test family=F tests, statistical test=linear multiple regression: Fixed model (R^2 deviation from zero), type of power analysis=a priori, alpha error probability=0.05. We changed the power and the effect size until we reached an output that we project our sample size will be (n=90). The number of predictor variables was restricted to only the fixed effects because this test was not designed for mixed models. The protocol of the power analysis is here:
*Input:*
Effect size f² = 0.15
α err prob = 0.05
Power (1-β err prob) = 0.86
Number of predictors = 3
*Output:*
Noncentrality parameter λ = 13.3500000
Critical F = 2.7119214
Numerator df = 3
Denominator df = 85
Total sample size = 89
Actual power = 0.8635760
This means that, with a sample size of 89, we would have an 86% chance of detecting a medium effect (approximated at f^2^=0.15 by @cohen1988statistical).
```{r p1, eval=FALSE, warning=FALSE, results='asis', echo=TRUE, include=TRUE}
d <- read.csv ("/Users/corina/GTGR/data/data_condition.csv", header=T, sep=",", stringsAsFactors=F)
#Factor the random effect variables
Experimenter <- as.factor(d$Experimenter)
# DATA CHECKING
library(DHARMa)
library(lme4)
library(MCMCglmm)
prior = list(R=list(R1=list(V=1,nu=0),R2=list(V=1,nu=0)), G=list(G1=list(V=1,nu=0)))
#Data checking for GLMM
simulationOutput <- simulateResiduals(fittedModel = MCMCglmm(FatScore ~ Body + Season, random=~Experimenter, family="ordinal", data=d, verbose=F, prior=prior, nitt=130000, thin=10, burnin=30000), n=250) #250 simulations, but if want higher precision change n>1000
simulationOutput$scaledResiduals #Expect a flat distribution of the overall residuals, and uniformity in y direction if plotted against any predictor
testDispersion(simulationOutput) #if under- or over-dispersed, then p-value<0.05, but then check the dispersion parameter and try to determine what in the model could be the cause and address it there, also check for zero inflation
testZeroInflation(simulationOutput) #compare expected vs observed zeros, not zero-inflated if p<0.05
testUniformity(simulationOutput) #check for heteroscedasticity ("a systematic dependency of the dispersion / variance on another variable in the model" Hartig, https://cran.r-project.org/web/packages/DHARMa/vignettes/DHARMa.html), which is indicated if dots aren't on the red line and p<0.05. Also...
plot(simulationOutput) #...there should be no pattern in the data points in the right panel
plotResiduals(Body, simulationOutput$scaledResiduals) #plot the residuals against other predictors (in cases when there is more than 1 fixed effect) - can't get this code to work yet
plotResiduals(Season, simulationOutput$scaledResiduals) #plot the residuals against other predictors (in cases when there is more than 1 fixed effect) - can't get this code to work yet
#which structural body size measure shows a higher correlation with body mass?
cor.test(tarsus,mass)
cor.test(wing,mass)
#repeatability of structural body mass measurements ("Body" represents either wing length or tarsus length, whichever was more correlated with body mass)
rpt(log(Body) ~ (1|ID), grname = "ID", data = d, datatype = "Gaussian", nboot = 500, npermut = 500)
#GLMM
m <- MCMCglmm(FatScore ~ Body + Season, random=~Experimenter, family="ordinal", data=d, verbose=F, prior=prior, nitt=130000, thin=10, burnin=30000)
summary(m)
#autocorr(m$Sol) #Did fixed effects converge?
#autocorr(m$VCV) #Did random effects converge?
```
#### *P2 analysis: condition and reproductive success*
To model the effect of body condition on reproductive success, we will use two types of logistic mixed-effect models. Both types are supported in the literature, but are slightly different in the way in which the link function is specified. First, we will model reproductive success using a generalized linear mixed model framework with a logit link function (i.e. @milenkaya2015body). We will also use a logistic exposure model that has a link function which accounts for the time interval between nest checks when estimating the probability of daily nest survival (@shaffer2004unified). If fat score and the scaled mass index are positively correlated in P1, then we will use only fat score as the independent variable in this GLMM. If they are not positively correlated, we will include both as independent variables.
Previous research found a non-linear relationship between reproductive success and body condition variables (@milenkaya2015body). To check whether this is occuring in our data, we will first plot our raw data to determine if we need to include a non-linear body condition independent variable into our model (i.e. FatScore^2^). Our dependent variable is binary, so to more clearly see the trends in the data, on the x-axis we will bin our condition scores into 5 categories based on standard deviations (sd) around the mean (low = < 2 sd, moderately low = -2 sd to -1 sd, moderate = -1 sd to +1 sd, moderately high = +1 sd to +2 sd, high = > 2 sd). Then on the y-axis we will use the proportion of individuals in each category that had successful nests.
A power analysis was conducted as above for P1 and the protocol reported here:
*Input:*
Effect size f² = 0.15
α err prob = 0.05
Power (1-β err prob) = 0.90
Number of predictors = 2
*Output:*
Noncentrality parameter λ = 13.2000000
Critical F = 3.1038387
Numerator df = 2
Denominator df = 85
Total sample size = 88
Actual power = 0.9020264
This means that, with a sample size of 88, we would have a 90% chance of detecting a medium effect (approximated at f^2^=0.15 by @cohen1988statistical).
```{r p2, eval=FALSE, warning=FALSE, results='asis', echo=TRUE, include=TRUE}
d <- read.csv ("/Users/corina/GTGR/data/data_condition.csv", header=T, sep=",", stringsAsFactors=F)
#Factor the random effect variables
Year <- as.factor(d$Year)
ID <- as.factor(d$ID)
# DATA CHECKING
library(DHARMa)
library(lme4)
library(MCMCglmm)
prior = list(R=list(R1=list(V=1,nu=0),R2=list(V=1,nu=0)), G=list(G1=list(V=1,nu=0)))
#Data checking for GLMM: fledglings
simulationOutput <- simulateResiduals(fittedModel = MCMCglmm(Fledglings ~ FatScore + Aviary, random=~Year + ID, family="categorical", data=d, verbose=F, prior=prior, nitt=130000, thin=10, burnin=30000), n=250) #250 simulations, but if want higher precision change n>1000
simulationOutput$scaledResiduals #Expect a flat distribution of the overall residuals, and uniformity in y direction if plotted against any predictor
testDispersion(simulationOutput) #if under- or over-dispersed, then p-value<0.05, but then check the dispersion parameter and try to determine what in the model could be the cause and address it there, also check for zero inflation
testZeroInflation(simulationOutput) #compare expected vs observed zeros, not zero-inflated if p<0.05
testUniformity(simulationOutput) #check for heteroscedasticity ("a systematic dependency of the dispersion / variance on another variable in the model" Hartig, https://cran.r-project.org/web/packages/DHARMa/vignettes/DHARMa.html), which is indicated if dots aren't on the red line and p<0.05. Also...
plot(simulationOutput) #...there should be no pattern in the data points in the right panel
#Data checking for GLMM: territory holder
simulationOutput <- simulateResiduals(fittedModel = MCMCglmm(Territory ~ FatScore + Aviary, random=~Year + ID, family="categorical", data=d, verbose=F, prior=prior, nitt=130000, thin=10, burnin=30000), n=250) #250 simulations, but if want higher precision change n>1000
simulationOutput$scaledResiduals #Expect a flat distribution of the overall residuals, and uniformity in y direction if plotted against any predictor
testDispersion(simulationOutput) #if under- or over-dispersed, then p-value<0.05, but then check the dispersion parameter and try to determine what in the model could be the cause and address it there, also check for zero inflation
testZeroInflation(simulationOutput) #compare expected vs observed zeros, not zero-inflated if p<0.05
testUniformity(simulationOutput) #check for heteroscedasticity ("a systematic dependency of the dispersion / variance on another variable in the model" Hartig, https://cran.r-project.org/web/packages/DHARMa/vignettes/DHARMa.html), which is indicated if dots aren't on the red line and p<0.05. Also...
plot(simulationOutput) #...there should be no pattern in the data points in the right panel
#Check to see whether condition variables vary by season
fs <- glm(FatScore ~ Season, family = "ordinal", data = d)
bs <- glm(log(Body) ~ Season, family = "gaussian", data = d)
#Mixed-effect logistic regression
# Females
m1 <- MCMCglmm(Fledglings ~ FatScore + Aviary, random = ~Year +
ID, family = "categorical", data = d, verbose = F, prior = prior,
nitt = 130000, thin = 10, burnin = 30000)
summary(m1)
#autocorr(m1$Sol) #Did fixed effects converge?
#autocorr(m1$VCV) #Did random effects converge?
# Males
m2 <- MCMCglmm(Territory ~ FatScore + Aviary, random = ~Year +
ID, family = "categorical", data = d, verbose = F, prior = prior,
nitt = 130000, thin = 10, burnin = 30000)
summary(m2)
#autocorr(m2$Sol) #Did fixed effects converge?
#autocorr(m2$VCV) #Did random effects converge?
#Logistic exposure model, where “Exposure” is the number of days between nest checks
## First run code for the exposure link function
library(MASS)
logexp <- function(exposure = 1) {
## hack to help with visualization, post-prediction etc etc
get_exposure <- function() {
if (exists("..exposure", env=.GlobalEnv))
return(get("..exposure", envir=.GlobalEnv))
exposure
}
linkfun <- function(mu) qlogis(mu^(1/get_exposure()))
## FIXME: is there some trick we can play here to allow
## evaluation in the context of the 'data' argument?
linkinv <- function(eta) plogis(eta)^get_exposure()
logit_mu_eta <- function(eta) {
ifelse(abs(eta)>30,.Machine$double.eps,
exp(eta)/(1+exp(eta))^2)
}
mu.eta <- function(eta) {
get_exposure() * plogis(eta)^(get_exposure()-1) *
logit_mu_eta(eta)
}
valideta <- function(eta) TRUE
link <- paste("logexp(", deparse(substitute(exposure)), ")",
sep="")
structure(list(linkfun = linkfun, linkinv = linkinv,
mu.eta = mu.eta, valideta = valideta,
name = link),
class = "link-glm")
}
# Females
m3 <- glm(Fledglings ~ FatScore + Nest number + Aviary + (1|Year) +
(1|ID), family = binomial,
family=binomial(link=logexp(d$Exposure)),
data = d, start=c(1,0))
summary(m3)
# Males
m4 <- glm(Territory ~ FatScore + Aviary + (1|Year) +
(1|ID), family = binomial,
family=binomial(link=logexp(d$Exposure)),
data = d, start=c(1,0))
summary(m4)
```
###E. ETHICS
This research is carried out in accordance with permits from the:
1) US Fish and Wildlife Service (scientific collecting permit number MB76700A-0,1,2)
2) US Geological Survey Bird Banding Laboratory (federal bird banding permit number 23872)
3) Arizona Game and Fish Department (scientific collecting license number SP594338 [2017], SP606267 [2018], and SP639866 [2019])
4) Institutional Animal Care and Use Committee at Arizona State University (protocol number 17-1594R)
###F. AUTHOR CONTRIBUTIONS
**Berens:** Data collection, revising/editing.
**Logan:** Study design, write up, revising/editing, materials/funding.
**Folsom:** Data collection, revising/editing.
**Bergeron:** Data collection, revising/editing.
**McCune:** Hypothesis development, data collection, write up, revising/editing.
###G. FUNDING
This research is funded by the Department of Human Behavior, Ecology and Culture at the Max Planck Institute for Evolutionary Anthropology.
###I. ACKNOWLEDGEMENTS
We thank our research assistants for help with trapping the grackles and collecting the biometric and nest/territory data: Aelin Mayer, Nancy Rodriguez, Brianna Thomas, Aldora Messinger, Elysia Mamola, Michael Guillen, Rita Barakat, Adriana Boderash, Olateju Ojekunle, August Sevchik, Justin Huynh, Amanda Overholt, and Michael Pickett.
###J. [REFERENCES](MyLibrary.bib)
You can’t perform that action at this time.