lIEN DE PUBLICATION : https://rpubs.com/theophile_kabasele/1448368
# =========================================================================
# ÉTAPE 1 : Calcul des intervalles de confiance (Before & After)
# pour chaque combinaison Site x Esp
# =========================================================================
# On calcule la moyenne et l'écart-type du BL pour chaque Site, Esp et Position
# Ici on utilise un IC à 95% : mean ± 1.96 * sd
# (remplace 1.96 par qt(0.975, df) si tu veux un IC basé sur la loi de Student)
IC_BL <- All_window %>%
dplyr::select(Site, Esp, Perturbation, Position, Year, Rwl, BL, Ratio, Position, Perturbation) |>
group_by(Site, Esp, Perturbation, Position) %>%
summarise(
mean_BL = mean(BL, na.rm = TRUE),
sd_BL = sd(BL, na.rm = TRUE),
n = sum(!is.na(BL)),
# IC inférieur et supérieur (Student pour petit échantillon)
IC_inf = mean_BL - qt(0.975, n - 1) * sd_BL / sqrt(n),
IC_sup = mean_BL + qt(0.975, n - 1) * sd_BL / sqrt(n),
.groups = "drop"
)
# Pour la suite, on a surtout besoin de l'IC du "Before" comme seuil de référence
# (mais on garde aussi l'IC du "After" si tu veux comparer)
IC_before <- IC_BL %>%
filter(Position == "Before") %>%
dplyr::select(Site, Esp, Perturbation, Position, IC_inf_before = IC_inf, IC_sup_before = IC_sup)
# =========================================================================
# ÉTAPE 2 : On récupère les données "After" et on joint l'IC du Before
# =========================================================================
df_after <- All_window %>%
filter(Position == "After") |>
left_join(IC_before, by = c("Site", "Esp", "Perturbation")) |>
filter(IC_sup_before >0)
# =========================================================================
# ÉTAPE 3 : Pour chaque individu (Site, Esp, Ind), sur les 10 années After :
# - nb_annees_sup : nombre d'années au-dessus de l'IC supérieur
# - amplitude_moy : amplitude moyenne de dépassement (BL - IC_sup) quand > 0
# - amplitude_max : amplitude max de dépassement
# - nb_consec_max : plus longue série d'années consécutives au-dessus
# =========================================================================
Data_amplitude <- df_after %>%
mutate(
depasse = BL > IC_sup_before,
amplitude = ifelse(depasse, BL - IC_sup_before, 0)
) %>%
group_by(Site, Esp, Id,Perturbation) %>%
arrange(Year, .by_group = TRUE) %>%
summarise(
nb_year_sup = sum(depasse, na.rm = TRUE),
# Remplacement des NaN par 0 si aucun dépassement
amplitude_moy = ifelse(sum(depasse, na.rm = TRUE) == 0,
0,
mean(amplitude[depasse], na.rm = TRUE)),
amplitude_max = ifelse(sum(depasse, na.rm = TRUE) == 0,
0,
max(amplitude, na.rm = TRUE)),
nb_consec_max = {
if (all(!depasse)) {
0
} else {
rle_dep <- rle(depasse)
max(rle_dep$lengths[rle_dep$values], na.rm = TRUE)
}
},
.groups = "drop"
)
# =========================================================================
# Résultat final
# =========================================================================
print(Data_amplitude)
# A tibble: 1,306 × 8
Site Esp Id Perturbation nb_year_sup
<chr> <fct> <chr> <chr> <int>
1 T52 BOP A03_31 Tbe 0
2 T52 BOP A03_32 Tbe 1
3 T52 BOP A03_33 Tbe 0
4 T52 BOP A03_34 Tbe 0
5 T52 BOP A03_35 Tbe 0
6 T52 BOP A03_36 Tbe 0
7 T52 BOP A03_37 Tbe 0
8 T52 BOP A03_39 Tbe 0
9 T52 BOP A03_40 Tbe 0
10 T52 BOP A03_42 Tbe 4
# ℹ 1,296 more rows
# ℹ 3 more variables: amplitude_moy <dbl>,
# amplitude_max <dbl>, nb_consec_max <dbl>
Conclusions : plus de la moitié des mesures (environs les deux tiers) des 10 années après ont des valeurs superieure à l’interval de confiance des 10 années avant.
On applique le modèle
lmer_Year_sup <- lmer(nb_year_sup ~ Perturbation + (1 | Id) + (1 | Site) , data = Data_amplitude, REML=T) # Effet d'croisée entre Id et Site
anova(lmer_Year_sup)
Type III Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF DenDF F value
Perturbation 0.2728 0.2728 1 717.86 0.0182
Pr(>F)
Perturbation 0.8927
summary(lmer_Year_sup)
Linear mixed model fit by REML. t-tests use
Satterthwaite's method [lmerModLmerTest]
Formula:
nb_year_sup ~ Perturbation + (1 | Id) + (1 | Site)
Data: Data_amplitude
REML criterion at convergence: 7483.3
Scaled residuals:
Min 1Q Median 3Q Max
-1.5115 -0.9122 -0.1996 0.9844 2.0305
Random effects:
Groups Name Variance Std.Dev.
Id (Intercept) 3.3027 1.8173
Site (Intercept) 0.1362 0.3691
Residual 14.9960 3.8725
Number of obs: 1306, groups: Id, 807; Site, 8
Fixed effects:
Estimate Std. Error df
(Intercept) 4.54676 0.30046 47.81704
PerturbationTbe -0.03867 0.28667 717.85541
t value Pr(>|t|)
(Intercept) 15.133 <2e-16 ***
PerturbationTbe -0.135 0.893
---
Signif. codes:
0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr)
PerturbtnTb -0.789
Conclusion : le modèle est significatif. Il n’y a pas de différence significative de la moyenne du n_year entre type de perturbations.
Interprétation : Étendue non-homogène des résidus -> la supposition non- respectée!
Q-Q PLOT
####3.2 Vérifier l’indépendance des résidus avec chaque covariable
Interprétation : Étendue hétérogène des résidus autour de 0 -> pas de patron des résidus en fonction de la variable, la supposition n’est pas respectée!
Interprétation : Des résidus ne suivent ^pas une distribution normale indiquent que le modèle n’est pas biaisé.
CONCLUSION : FAIRE LA TRANSFORMATION LOGARITHMIQUE
#Data_amplitude$mean.Ratio_log <- log(Data_amplitude$mean_Ratio) # Ajoute une colonne transformée
# Transformation pour la modélisation
Data_amplitude$nb_year_sup_log <- sign(Data_amplitude$nb_year_sup) *
log(abs(Data_amplitude$nb_year_sup) + 1)
lmer_Year_sup_log <- lmer(nb_year_sup_log ~ Perturbation + (1 | Id) + (1 | Site), data = Data_amplitude, REML=T)
summary(lmer_Year_sup_log)
Linear mixed model fit by REML. t-tests use
Satterthwaite's method [lmerModLmerTest]
Formula:
nb_year_sup_log ~ Perturbation + (1 | Id) + (1 | Site)
Data: Data_amplitude
REML criterion at convergence: 3826.9
Scaled residuals:
Min 1Q Median 3Q Max
-1.6189 -1.0248 0.2380 0.8781 1.8493
Random effects:
Groups Name Variance Std.Dev.
Id (Intercept) 0.179611 0.42381
Site (Intercept) 0.009573 0.09784
Residual 0.924460 0.96149
Number of obs: 1306, groups: Id, 807; Site, 8
Fixed effects:
Estimate Std. Error df
(Intercept) 1.240e+00 7.521e-02 4.440e+01
PerturbationTbe 7.026e-03 7.106e-02 7.562e+02
t value Pr(>|t|)
(Intercept) 16.484 <2e-16 ***
PerturbationTbe 0.099 0.921
---
Signif. codes:
0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr)
PerturbtnTb -0.781
anova(lmer_Year_sup_log)
Type III Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF DenDF
Perturbation 0.0090364 0.0090364 1 756.17
F value Pr(>F)
Perturbation 0.0098 0.9213
CONCLUSION : Pas d’effet du type de perturbation sur le nombre d’année superieur à l’interval de confiance des 10 années avant la perturbation.
Q-Q PLOT