En complément de l’analyse du 27/8/2019, on vérifie le lien entre l’activité et les heures de nuit, ainsi que le détail de la météorologie sur certaines nuits.

Lien entre activité et nuit

Il s’agit d’étudier le lien entre le premier/dernier contact et le lever/coucher du soleil.

On charge les heures de lever et coucher du soleil :

infoclimat_t <- read_rds("climat/infoclimat_t.rds")
# add sun starts and ends to compute night duration
dawn <- infoclimat_t %>%
  select(coucher) %>%
  unique() %>%
  mutate(day = floor_date(coucher, "1 day"))
rise <- infoclimat_t %>%
  select(lever) %>%
  unique() %>%
  mutate(day = floor_date(lever - hours(12), "1 day"))
sun_time <- dawn %>%
  left_join(rise, by = "day") %>%
  mutate(night_time = lever - coucher)

On récupère les contacts sur les nuits complètes.

calls_complete_night <- read_rds("data/calls.rds") %>%
  mutate(day = floor_date(date - hours(12), "1 day")) %>%
  left_join(sun_time, by = "day")
extreme_date <- calls_complete_night %>%
  filter(Id == "PippiT") %>%
  group_by(day) %>%
  summarise(first = min(date), last = max(date), dawn = first(coucher), rise = first(lever))
extreme_date %>%
  mutate(last_to_rise = as.numeric(rise - last, units = "hours")) %>%
  filter(last_to_rise >= 5) %>%
  select(first, last_to_rise)
## # A tibble: 8 x 2
##   first               last_to_rise
##   <dttm>                     <dbl>
## 1 2018-09-29 19:25:00         9.4 
## 2 2018-10-02 19:35:00        10.4 
## 3 2018-10-10 19:04:00         6.13
## 4 2018-10-18 19:04:00         6   
## 5 2018-10-20 18:58:00        10.1 
## 6 2018-10-24 18:41:00        12.1 
## 7 2018-10-25 18:39:00        10.9 
## 8 2018-10-26 18:37:00         9.38
extreme_date %>%
  mutate(dawn_to_first = as.numeric(first - dawn, units = "mins")) %>%
  mutate(last_to_rise = as.numeric(rise - last, units = "mins")) %>%
  mutate(activity = as.numeric(last - first, units = "hours")) %>%
  mutate(activity_to_night = as.numeric((rise - dawn) - (last - first), units = "hours")) %>%
  filter(last_to_rise < 5 * 60) %>%
  select(-first, -last, -dawn, -rise) %>%
  gather(type, value, -day) %>%
  ggplot(aes(x = day, y = value)) +
  facet_wrap(~ type, ncol = 1, scales = "free_y") +
  geom_point() +
  stat_smooth(method = MASS::rlm)

On s’intéresse uniquement aux pipistrelles communes sur les nuits où les fins d’activité ne sont pas prématurées (i.e. celles qui surviennent moins de 5 heures avant le lever du soleil).

Observations :

Investigation de la météorologie sur certaines nuits

Il reste à inspecter les conditions météorologiques sur certaines nuits en raison de retards sur l’heure de premier contact ou de fins prématurées. Commençons par les retards : 21/9, 2/10, 11/10 (21/10 et 22/10). On va utiliser les données de Météo France :

print_night <- function(date) {
  infoclimat_t %>%
    mutate(direction = ifelse(vent_heure == 0, NA, direction)) %>%
    gather(mesure, valeur, Température, Pluie, Humidité, direction, Pression,
           vent_heure) %>%
    filter(Heure > date) %>%
    filter(Heure < date + days(2)) %>%
    ggplot(aes(x = Heure, y = valeur)) +
    facet_wrap(~ mesure, scales = "free_y") +
    geom_rect(aes(xmin = coucher, ymin = -Inf, xmax = lever, ymax = Inf)) +
    geom_point(size = 1)
}
print_night(make_datetime(2018, 9, 21))
## Warning: Removed 17 rows containing missing values (geom_point).

print_night(make_datetime(2018, 10, 2))
## Warning: Removed 15 rows containing missing values (geom_point).

print_night(make_datetime(2018, 10, 11))
## Warning: Removed 18 rows containing missing values (geom_point).

Pour la première nuit, il semble qu’il y ait eu du vent et de la pluie en fin de journée accompagné d’une chute des températures importante pour la nuit. Pour la seconde nuit, on peut constater que le vent vient plutôt du sud/sud-ouest. Les autres données météorologiques ne semblent pas indiquer d’autres phénomènes, notamment pour la dernière nuit.

Passons aux fins prématurées : 29/9, 2/10, 10/10 (18/10 et 20/10). Pour le 2/10, on peut se reporter à un précédent schéma.

print_night(make_datetime(2018, 9, 29))
## Warning: Removed 10 rows containing missing values (geom_point).

print_night(make_datetime(2018, 10, 10))
## Warning: Removed 23 rows containing missing values (geom_point).

Il semblerait qu’il y ait eu un épisode pluvieux en fin de nuit le 3/10 au matin. À part cela, aucune donnée ne semble expliquer les retards. Les conclusions sur ces données météorologiques sont assez partielles : la pluie et la direction du vent pourraient jouer un rôle.

## R version 3.6.1 (2019-07-05)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.3 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/openblas/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/libopenblasp-r0.2.20.so
## 
## locale:
##  [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=fr_FR.UTF-8        LC_COLLATE=fr_FR.UTF-8    
##  [5] LC_MONETARY=fr_FR.UTF-8    LC_MESSAGES=fr_FR.UTF-8   
##  [7] LC_PAPER=fr_FR.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] tidyr_0.8.3     readr_1.3.1     lubridate_1.7.4 ggplot2_3.2.0  
## [5] dplyr_0.8.3    
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.1       pillar_1.4.2     compiler_3.6.1   tools_3.6.1     
##  [5] zeallot_0.1.0    digest_0.6.20    evaluate_0.14    tibble_2.1.3    
##  [9] gtable_0.3.0     pkgconfig_2.0.2  rlang_0.4.0      cli_1.1.0       
## [13] yaml_2.2.0       xfun_0.8         withr_2.1.2      stringr_1.4.0   
## [17] knitr_1.23       vctrs_0.2.0      hms_0.5.0        grid_3.6.1      
## [21] tidyselect_0.2.5 glue_1.3.1       R6_2.4.0         fansi_0.4.0     
## [25] rmarkdown_1.14   purrr_0.3.2      magrittr_1.5     MASS_7.3-51.4   
## [29] scales_1.0.0     backports_1.1.4  htmltools_0.3.6  assertthat_0.2.1
## [33] colorspace_1.4-1 labeling_0.3     utf8_1.1.4       stringi_1.4.3   
## [37] lazyeval_0.2.2   munsell_0.5.0    crayon_1.3.4