Tolerância térmica e altitude em anuros da Mata Atlântica

Trabalho final — Introdução à Linguagem R

Autor

Seu nome aqui

Data de Publicação

15 de setembro de 2026

1 Introdução

Organismos ectotérmicos dependem da temperatura ambiente para regular seus processos fisiológicos. Ao longo de um gradiente altitudinal, a temperatura do ar cai de forma previsível — o que levanta a pergunta de como os limites térmicos das espécies acompanham essa variação.

Aqui reanalisamos os dados de Bovo et al. (2023), que mediram limites térmicos críticos e perda de água em anuros de duas serras da Mata Atlântica. Nossa pergunta é:

A tolerância ao aquecimento — a diferença entre o limite térmico crítico superior do animal e a temperatura máxima do ambiente onde ele vive — varia com a altitude?

2 Métodos

2.1 Dados

Mostrar código
bruto <- read.csv(here("dados", "anuros_altitude.csv"))

Os dados brutos contêm 225 indivíduos e 26 variáveis. A descrição completa de cada coluna, com unidades e origem, está em dados/metadados_anuros_altitude.md.

2.2 Preparação dos dados

Mostrar código
anuros <- bruto %>%
  rename(id = ID, especie = Species, sexo = Sex,
         ewl = EWL_Ugcm2s1, massa = Bodymass_g,
         ctmin = CTmin, ctmax = CTmax,
         serra = Mountain_Range, altitude = Altitude_m) %>%
  select(id, especie, sexo, serra, altitude, massa, ewl, ctmin, ctmax,
         bio5 = BIO_5) %>%
  mutate(across(c(especie, serra, sexo), factor),
         amplitude = ctmax - ctmin,
         tol_aquec = ctmax - bio5)

Recalculamos as duas variáveis derivadas a partir das colunas de origem, em vez de usar as colunas prontas do arquivo: assim a definição de cada uma fica explícita no documento.

Mostrar código
with(anuros, table(serra, altitude)) %>% kable()
Tabela 1: Número de indivíduos por serra e altitude.
35 550 820 1022 1500 1600
Serra da Mantiqueira 0 18 0 0 0 55
Serra do Mar 39 0 36 54 23 0

A Tabela 1 mostra uma característica do desenho amostral que restringe as análises possíveis: cada altitude pertence a uma única serra. Altitude e serra não estão cruzadas, de modo que nenhum modelo separa os dois efeitos usando apenas a identidade dos sítios. Por isso tratamos altitude como variável contínua e interpretamos os contrastes dentro da faixa amostrada.

2.3 Análise

Ajustamos modelos lineares com tol_aquec como resposta. Todas as análises foram feitas no R (R Core Team 2025), com os pacotes dplyr, ggplot2 e broom.

3 Resultados

3.1 Descrição

Mostrar código
anuros %>%
  group_by(especie) %>%
  summarise(n = n(),
            CTmin = sprintf("%.2f (%.2f)", mean(ctmin, na.rm = TRUE), sd(ctmin, na.rm = TRUE)),
            CTmax = sprintf("%.2f (%.2f)", mean(ctmax, na.rm = TRUE), sd(ctmax, na.rm = TRUE)),
            .groups = "drop") %>%
  kable()
Tabela 2: Limites térmicos por espécie. Média (desvio-padrão).
especie n CTmin CTmax
Boana faber 46 3.41 (0.95) 38.44 (0.78)
Dendropsophus minutus 59 6.15 (2.54) 33.25 (1.70)
Leptodactylus latrans 31 4.64 (1.49) 38.79 (0.62)
Physalaemus cuvieri 39 7.85 (1.88) 35.07 (1.61)
Rhinella icterica 50 2.71 (1.03) 38.78 (0.68)
Mostrar código
ggplot(anuros, aes(altitude, tol_aquec, colour = especie)) +
  geom_point(alpha = .6, size = 1.8) +
  geom_smooth(method = "lm", formula = y ~ x, linewidth = .8) +
  labs(x = "Altitude (m)", y = "Tolerância ao aquecimento (°C)", colour = NULL) +
  theme(legend.position = "top")
Figura 1: Tolerância ao aquecimento em função da altitude, por espécie. Retas de regressão linear com intervalo de confiança de 95%.

3.2 Modelo

Mostrar código
m <- lm(tol_aquec ~ altitude + especie, data = anuros)
Mostrar código
tidy(m, conf.int = TRUE) %>% kable(digits = 4)
Tabela 3: Coeficientes do modelo linear.
term estimate std.error statistic p.value conf.low conf.high
(Intercept) 9.2300 0.3127 29.5217 0.0000 8.6132 9.8468
altitude 0.0031 0.0002 13.8692 0.0000 0.0027 0.0036
especieDendropsophus minutus -5.0844 0.3551 -14.3187 0.0000 -5.7850 -4.3838
especieLeptodactylus latrans -0.1062 0.3925 -0.2706 0.7870 -0.8806 0.6682
especiePhysalaemus cuvieri -3.1906 0.4194 -7.6067 0.0000 -4.0181 -2.3631
especieRhinella icterica 0.4927 0.3524 1.3981 0.1638 -0.2026 1.1880

O modelo explica 75% da variação em tolerância ao aquecimento. O efeito da altitude é de 0.0031 °C por metro (EP = 0.0002, p = <2e-16), ou cerca de 3.1 °C a cada 1000 m.

3.3 Diagnóstico

Mostrar código
augment(m) %>%
  ggplot(aes(.fitted, .resid)) +
  geom_hline(yintercept = 0, linetype = 2) +
  geom_point(alpha = .6) +
  labs(x = "Valores ajustados", y = "Resíduos")
Figura 2: Resíduos contra valores ajustados.

4 Discussão

5 Reprodutibilidade

R version 4.6.1 (2026-06-24)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 24.04.5 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0

locale:
 [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
 [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
 [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
[10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   

time zone: UTC
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] knitr_1.52    broom_1.0.13  ggplot2_4.0.3 dplyr_1.2.1   here_1.0.2   

loaded via a namespace (and not attached):
 [1] Matrix_1.7-5       gtable_0.3.6       jsonlite_2.0.0     compiler_4.6.1    
 [5] tidyselect_1.2.1   tidyr_1.3.2        splines_4.6.1      scales_1.4.0      
 [9] yaml_2.3.12        fastmap_1.2.0      lattice_0.22-9     R6_2.6.1          
[13] labeling_0.4.3     generics_0.1.4     backports_1.5.1    tibble_3.3.1      
[17] rprojroot_2.1.1    pillar_1.11.1      RColorBrewer_1.1-3 rlang_1.3.0       
[21] xfun_0.60          S7_0.2.2           cli_3.6.6          withr_3.0.3       
[25] magrittr_2.0.5     mgcv_1.9-4         digest_0.6.39      grid_4.6.1        
[29] lifecycle_1.0.5    nlme_3.1-169       vctrs_0.7.3        evaluate_1.0.5    
[33] glue_1.8.1         farver_2.1.2       stats4_4.6.1       rmarkdown_2.32    
[37] purrr_1.2.2        tools_4.6.1        pkgconfig_2.0.3    htmltools_0.5.9   

6 Referências

Bovo, Rafael P., Moníque N. Simon, Diogo B. Provete, Mariana Lyra, Carlos A. Navas, e Denis V. Andrade. 2023. «Beyond Janzen’s Hypothesis: How Amphibians That Climb Tropical Mountains Respond to Climate Variation». Integrative Organismal Biology 5 (1): obad009. https://doi.org/10.1093/iob/obad009.
R Core Team. 2025. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing. https://www.R-project.org/.