Fichier BDD :
data <- read.csv2(
"coprogroupe(2).csv",
header = TRUE,
stringsAsFactors = FALSE,
na.strings = c("", "NA"))
dim(data)
## [1] 168 185
names(data)
## [1] "Mois" "SGIMultiSP" "SGIPrimiSP" "SGILOTSP" "SGINulliSP"
## [6] "SGLMultiSP" "SGLPrimiSP" "SGLLOTSP" "SGLNulliSP" "TRIMultiSP"
## [11] "TRIPrimiSP" "TRILOTSP" "TRINulliSP" "SKJMultiSP" "SKJPrimiSP"
## [16] "SKJLOTSP" "SKJNulliSP" "MONMultiSP" "MONPrimiSP" "MONLOTSP"
## [21] "MONNulliSP" "COCMultiSP" "COCPrimiSP" "COCLOTSP" "COCNulliSP"
## [26] "GDDMultiSP" "GDDPrimiSP" "GDDLOTSP" "GDDNulliSP" "PTDMultiSP"
## [31] "PTDPrimiSP" "PTDLOTSP" "PTDNulliSP" "PARMultiSP" "PARPrimiSP"
## [36] "PARLOTSP" "PARNulliSP" "MUEMultiSP" "MUEPrimiSP" "MUELOTSP"
## [41] "MUENulliSP" "EFFMultiSP" "EFFPrimiSP" "EFFTotSP" "CharSAUSP"
## [46] "CharSFPSP" "SGIMultiDP" "SGIPrimiDP" "SGILOTDP" "SGINulliDP"
## [51] "SGLMultiDP" "SGLPrimiDP" "SGLLOTDP" "SGLNulliDP" "TRIMultiDP"
## [56] "TRIPrimiDP" "TRILOTDP" "TRINulliDP" "SKJMultiDP" "SKJPrimiDP"
## [61] "SKJLOTDP" "SKJNulliDP" "MONMultiDP" "MONPrimiDP" "MONLOTDP"
## [66] "MONNulliDP" "COCMultiDP" "COCPrimiDP" "COCLOTDP" "COCNulliDP"
## [71] "GDDMultiDP" "GDDPrimiDP" "GDDLOTDP" "GDDNulliDP" "PTDMultiDP"
## [76] "PTDPrimiDP" "PTDLOTDP" "PTDNulliDP" "PARMultiDP" "PARPrimiDP"
## [81] "PARLOTDP" "PARNulliDP" "MUEMultiDP" "MUEPrimiDP" "MUELOTDP"
## [86] "MUENulliDP" "EFFMultiDP" "EFFPrimiDP" "EFFTotDP" "CharSAUDP"
## [91] "CharSFPDP" "SGITOTDB" "SGIMultiDB" "SGIPrimiDB" "SGILOTDB"
## [96] "SGINulliDB" "SGLTOTDB" "SGLMultiDB" "SGLPrimiDB" "SGLLOTDB"
## [101] "SGLNulliDB" "TRITOTDB" "TRIMultiDB" "TRIPrimiDB" "TRILOTDB"
## [106] "TRINulliDB" "SKJTOTDB" "SKJMultiDB" "SKJPrimiDB" "SKJLOTDB"
## [111] "SKJNulliDB" "MONTOTDB" "MONMultiDB" "MONPrimiDB" "MONLOTDB"
## [116] "MONNulliDB" "COCTOTDB" "COCMultiDB" "COCPrimiDB" "COCLOTDB"
## [121] "COCNulliDB" "GDDTOTDB" "GDDMultiDB" "GDDPrimiDB" "GDDLOTDB"
## [126] "GDDNulliDB" "PTDTOTDB" "PTDMultiDB" "PTDPrimiDB" "PTDLOTDB"
## [131] "PTDNulliDB" "PARTOTDB" "PARMultiDB" "PARPrimiDB" "PARLOTDB"
## [136] "PARNulliDB" "MUETOTDB" "MUEMultiDB" "MUEPrimiDB" "MUELOTDB"
## [141] "MUENulliDB" "EFFMultiDB" "EFFPrimiDB" "EFFTOTDB" "CharSAUDB"
## [146] "CharSFPDB" "OesoT" "TeladoT" "HaemoT" "OesoDP"
## [151] "TeladoDP" "HaemoDP" "OesoSP" "TeladoSP" "HaemoSP"
## [156] "NECSternDB" "NECSternDP" "NECSternSP" "NECLombDB" "NECLombDP"
## [161] "NECLombSP" "PoidDB" "PoidDP" "PoidSP" "EffTrSP"
## [166] "ProdCTRLSP" "ProdSP" "ProdMSP" "EffTrDP" "ProdCTRLDP"
## [171] "ProdDP" "ProdMDP" "EffTrDB" "ProdCTRLDB" "ProdDB"
## [176] "ProdMDB" "TempsDP" "NombreJDP" "TempsSP" "NombreJSP"
## [181] "RR_CM" "TM_MM" "TN_MM" "TX_MM" "RGC_CM"
# Extraction robuste de l'année à partir de Mois
annee <- 2000 + as.numeric(sub("^[^0-9]+", "", data$Mois))
# Extraction du mois
mois_txt <- tolower(sub("[0-9]+$", "", data$Mois))
# Correction des accents
mois_txt[mois_txt == "février"] <- "fevrier"
mois_txt[mois_txt == "août"] <- "aout"
mois_txt[mois_txt == "décembre"] <- "decembre"
mois_num <- match(
mois_txt,
c("janvier", "fevrier", "mars", "avril", "mai", "juin",
"juillet", "aout", "septembre", "octobre", "novembre", "decembre"))
table(annee, useNA = "ifany")
## annee
## 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
## 12 12 12 12 12 12 12 12 12 12 12 12 12 12
table(mois_num, useNA = "ifany")
## mois_num
## 1 2 3 4 5 6 7 8 9 10 11 12 <NA>
## 14 14 14 14 14 14 14 14 14 14 14 13 1
Code couleur pour tous les graphiques :
couleur_SP <- "red"
couleur_DP <- "gold"
couleur_DB <- "blue"
Evolution annuelle du parasitisme (SP et DP) :
Vérification
length(data$Mois)
## [1] 168
length(data$SGILOTSP)
## [1] 168
length(data$SGILOTDP)
## [1] 168
Créer l’année à partir du mois
annee_graph <- 2000 + as.numeric(
sub("^[^0-9]+", "", data$Mois))
Retirer les données manquantes
# SP
ok_SP <- !is.na(annee_graph) &
!is.na(data$SGILOTSP)
annee_SP <- annee_graph[ok_SP]
sgi_SP <- data$SGILOTSP[ok_SP]
# DP
ok_DP <- !is.na(annee_graph) &
!is.na(data$SGILOTDP)
annee_DP <- annee_graph[ok_DP]
sgi_DP <- data$SGILOTDP[ok_DP]
Moyennes annuelles
moy_SP <- tapply(
sgi_SP,
annee_SP,
mean,
na.rm = TRUE)
moy_DP <- tapply(
sgi_DP,
annee_DP,
mean,
na.rm = TRUE)
Années disponibles
annees <- sort(
union(
as.numeric(names(moy_SP)),
as.numeric(names(moy_DP))))
Enfin le graphique
plot(
annees,
moy_SP[as.character(annees)],
type = "o",
pch = 16,
lwd = 2,
col = "red",
xlab = "Année",
ylab = "Nombre moyen d'OPG",
main = "Evolution de l'infestation par SGI en fonction du temps
selon les lots (SP et DP)")
lines(
annees,
moy_DP[as.character(annees)],
type = "o",
pch = 17,
lwd = 2,
col = "gold")
legend(
"topright",
legend = c("SP", "DP"),
col = c("red", "gold"),
pch = c(16, 17),
lwd = 2,
bty = "n")

Diagramme de Tuckey (comparaison SP et DP) :
boxplot(
data$SGILOTSP,
data$SGILOTDP,
names = c("SP", "DP"),
col = c(couleur_SP, couleur_DP),
border = c("red", "gold"),
ylab = "Nombre d'OPG",
main = "Comparaison du SGI entre SP et DP"
)

Diagramme de Tuckey pour les 3 lots :
boxplot(
data$SGILOTSP,
data$SGILOTDP,
data$SGITOTDB,
names = c("SP", "DP", "DB"),
col = c(couleur_SP, couleur_DP, couleur_DB),
border = c("red", "gold", "blue"),
ylab = "Nombre d'OPG",
main = "Comparaison du SGI entre les trois lots"
)

Comparaison SP et DP selon les types de parasites :
Oesophagostomum :
boxplot(
data$OesoSP,
data$OesoDP,
names = c("SP", "DP"),
col = c("red", "gold"),
border = c("darkred", "darkgoldenrod"),
ylab = "Nombre d'OPG d'Oesophagostomum",
main = "Oesophagostomum : SP vs DP"
)

Teladorsagia :
boxplot(
data$TeladoSP,
data$TeladoDP,
names = c("SP", "DP"),
col = c("red", "gold"),
border = c("darkred", "darkgoldenrod"),
ylab = "Nombre d'OPG de Teladorsagia",
main = "Teladorsagia : SP vs DP"
)

Haemonchus :
boxplot(
data$HaemoSP,
data$HaemoDP,
names = c("SP", "DP"),
col = c("red", "gold"),
border = c("darkred", "darkgoldenrod"),
ylab = "Nombre d'OPG d'Haemonchus",
main = "Haemonchus : SP vs DP"
)

Infestation selon la parité et la saison de mise bas :
boxplot(data$SGIMultiSP,
data$SGIMultiDP,
data$SGIPrimiSP,
data$SGIPrimiDP,
data$SGINulliSP,
data$SGINulliDP,
names = c("Multi SP", "Multi DP",
"Primi SP", "Primi DP",
"Nulli SP", "Nulli DP"),
col = c("red", "gold",
"red", "gold",
"red", "gold"),
border = c("darkred", "darkgoldenrod",
"darkred", "darkgoldenrod",
"darkred", "darkgoldenrod"),
las = 2,
ylab = "Nombre d'OPG" ,
main = "Infestation selon la parité et la saison de mise-bas")

Infestation et pâturage :
En fonction du temps :
# SP
ok_SP <- !is.na(data$TempsSP) &
!is.na(data$SGILOTSP)
plot(data$TempsSP[ok_SP],
data$SGILOTSP[ok_SP],
pch = 16,
col = "red",
xlab = "Temps au pâturage",
ylab = "Nombre d'OPG",
main = "Relation entre temps au pâturage et l'infestation du lot SP")
abline(lm(data$SGILOTSP[ok_SP] ~ data$TempsSP[ok_SP]),
lwd = 2)

# DP
ok_DP <- !is.na(data$TempsDP) &
!is.na(data$SGILOTDP)
plot(data$TempsDP[ok_DP],
data$SGILOTDP[ok_DP],
pch = 17,
col = "gold",
xlab = "Temps au pâturage",
ylab = "Nombre d'OPG",
main = "Relation entre temps au pâturage et l'infestation du lot DP")
abline(lm(data$SGILOTDP[ok_DP] ~ data$TempsDP[ok_DP]),
lwd = 2)

En fonction du nombre de jours au pâturage :
ok_SP <- !is.na(data$NombreJSP) &
!is.na(data$SGILOTSP)
ok_DP <- !is.na(data$NombreJDP) &
!is.na(data$SGILOTDP)
plot(data$NombreJSP[ok_SP],
data$SGILOTSP[ok_SP],
pch = 16,
col = "red",
xlab = "Nombre de jours au pâturage",
ylab = "Nombre d'OPG",
main = "Infestation en fonction du nombre de jours au pâturage")
points(data$NombreJDP[ok_DP],
data$SGILOTDP[ok_DP],
pch = 17,
col = "gold")
abline(lm(data$SGILOTSP[ok_SP] ~ data$NombreJSP[ok_SP]),
lwd = 2,
col = "red")
abline(lm(data$SGILOTDP[ok_DP] ~ data$NombreJDP[ok_DP]),
lwd = 2,
col = "gold")
legend("topleft",
legend = c("SP", "DP"),
col = c("red", "gold"),
pch = c(16, 17),
bty = "n")

Infestation et température :
ok_SP <- !is.na(data$TM_MM) &
!is.na(data$SGILOTSP)
ok_DP <- !is.na(data$TM_MM) &
!is.na(data$SGILOTDP)
plot(data$TM_MM[ok_SP],
data$SGILOTSP[ok_SP],
pch = 16,
col = "red",
xlab = "Température moyenne (en°C)",
ylab = "Nombre d'OPG",
main = "Impact de la température sur l'infestation parasitaire ")
points(data$TM_MM[ok_DP],
data$SGILOTDP[ok_DP],
pch = 17,
col = "gold")
abline(lm(data$SGILOTSP[ok_SP] ~ data$TM_MM[ok_SP]),
lwd = 2,
col = "red")
abline(lm(data$SGILOTDP[ok_DP] ~ data$TM_MM[ok_DP]),
lwd = 2,
col = "gold")
legend("topleft",
legend = c("SP", "DP"),
col = c("red", "gold"),
pch = c(16, 17),
bty = "n")

Infestation et précipitation :
ok_SP <- !is.na(data$RR_CM) &
!is.na(data$SGILOTSP)
ok_DP <- !is.na(data$RR_CM) &
!is.na(data$SGILOTDP)
plot(data$RR_CM[ok_SP],
data$SGILOTSP[ok_SP],
pch = 16,
col = "red",
xlab = "Précipitations (en mm)",
ylab = "Nombre d'OPG",
main = "Influence des précipitations surl'infestation parasitaire")
points(data$RR_CM[ok_DP],
data$SGILOTDP[ok_DP],
pch = 17,
col = "gold")
legend("topleft",
legend = c("SP", "DP"),
col = c("red", "gold"),
pch = c(16, 17),
bty = "n")

Etat corporel et infestation :
NEC lombaire
ok_SP <- !is.na(data$NECLombSP) &
!is.na(data$SGILOTSP)
ok_DP <- !is.na(data$NECLombDP) &
!is.na(data$SGILOTDP)
plot(data$NECLombSP[ok_SP],
data$SGILOTSP[ok_SP],
pch = 16,
col = "red",
xlab = "Note d'état coporelle lombaire",
ylab = "Nombre d'OPG",
main = "Nombre d'OPG en fonction de la NEC lombaire")
points(data$NECLombDP[ok_DP],
data$SGILOTDP[ok_DP],
pch = 17,
col = "gold")
abline(lm(data$SGILOTSP[ok_SP] ~ data$NECLombSP[ok_SP]),
lwd = 2,
col = "red")
abline(lm(data$SGILOTDP[ok_DP] ~ data$NECLombDP[ok_DP]),
lwd = 2,
col = "gold")
legend("topleft",
legend = c("SP", "DP"),
col = c("red", "gold"),
pch = c(16, 17),
bty = "n")

NEC Sternale
ok_SP <- !is.na(data$NECSternSP) &
!is.na(data$SGILOTSP)
ok_DP <- !is.na(data$NECSternDP) &
!is.na(data$SGILOTDP)
plot(data$NECSternSP[ok_SP],
data$SGILOTSP[ok_SP],
pch = 16,
col = "red",
xlab = "Note d'état coporelle sternale",
ylab = "Nombre d'OPG",
main = "Nombre d'OPG en fonction de la NEC sternale")
points(data$NECSternDP[ok_DP],
data$SGILOTDP[ok_DP],
pch = 17,
col = "gold")
abline(lm(data$SGILOTSP[ok_SP] ~ data$NECSternSP[ok_SP]),
lwd = 2,
col = "red")
abline(lm(data$SGILOTDP[ok_DP] ~ data$NECSternDP[ok_DP]),
lwd = 2,
col = "gold")
legend("topleft",
legend = c("SP", "DP"),
col = c("red", "gold"),
pch = c(16, 17),
bty = "n")

Poids
ok_SP <- !is.na(data$PoidSP) &
!is.na(data$SGILOTSP)
ok_DP <- !is.na(data$PoidDP) &
!is.na(data$SGILOTDP)
plot(data$PoidSP[ok_SP],
data$SGILOTSP[ok_SP],
pch = 16,
col = "red",
xlab = "Poid",
ylab = "Nombre d'OPG",
main = "Nombre d'OPG en fonction du poids")
points(data$PoidDP[ok_DP],
data$SGILOTDP[ok_DP],
pch = 17,
col = "gold")
abline(lm(data$SGILOTSP[ok_SP] ~ data$PoidSP[ok_SP]),
lwd = 2,
col = "red")
abline(lm(data$SGILOTDP[ok_DP] ~ data$PoidDP[ok_DP]),
lwd = 2,
col = "gold")
legend("topleft",
legend = c("SP", "DP"),
col = c("red", "gold"),
pch = c(16, 17),
bty = "n")

Différences d’infestation : SP-DP :
ok <- !is.na(mois_num) &
!is.na(annee) &
!is.na(data$SGILOTSP) &
!is.na(data$SGILOTDP)
date_diff <- as.Date(
paste(annee[ok],
sprintf("%02d", mois_num[ok]),
"01",
sep = "-"))
difference <- data$SGILOTSP[ok] - data$SGILOTDP[ok]
couleurs <- ifelse(difference > 0, "red", "gold")
plot(date_diff,
difference,
type = "h",
lwd = 3,
col = couleurs,
xlab = "Date",
ylab = "OPG SP - OPG DP",
main = "Différence d'infestation : SP - DP")
abline(h = 0, lty = 2, lwd = 2)
legend("topright",
legend = c("SP > DP", "SP < DP"),
col = c("red", "gold"),
lwd = 3,
bty = "n")

Ratio SP/DP :
ok <- !is.na(mois_num) &
!is.na(annee) &
!is.na(data$SGILOTSP) &
!is.na(data$SGILOTDP) &
data$SGILOTDP > 0
date_ratio <- as.Date(
paste(annee[ok],
sprintf("%02d", mois_num[ok]),
"01",
sep = "-"))
ratio <- data$SGILOTSP[ok] / data$SGILOTDP[ok]
plot(date_ratio,
ratio,
type = "o",
pch = 16,
col = "red",
xlab = "Date",
ylab = "Ratio OPG SP / DP",
main = "Ratio d'infestation parasitaire SP / DP")
abline(h = 1, lty = 2, lwd = 2)

Infestation moyenne par mois :
mois_nom <- c("Jan", "Fev", "Mar", "Avr", "Mai", "Juin",
"Juil", "Aout", "Sep", "Oct", "Nov", "Dec")
moy_SP <- numeric(12)
moy_DP <- numeric(12)
for (m in 1:12) {
valeurs_SP <- data$SGILOTSP[mois_num == m]
valeurs_DP <- data$SGILOTDP[mois_num == m]
moy_SP[m] <- mean(valeurs_SP, na.rm = TRUE)
moy_DP[m] <- mean(valeurs_DP, na.rm = TRUE)}
plot(1:12,
moy_SP,
type = "o",
pch = 16,
lwd = 2,
col = "red",
xaxt = "n",
xlab = "Mois",
ylab = "Nombre d'OPG moyen",
main = "Nombre d'OPG moyen selon le mois")
lines(1:12,
moy_DP,
type = "o",
pch = 17,
lwd = 2,
col = "gold")
axis(1, at = 1:12, labels = mois_nom)
legend("topright",
legend = c("SP", "DP"),
col = c("red", "gold"),
pch = c(16, 17),
lty = 1,
bty = "n")

Heatmap : Infestation SP selon années et mois
annees_uniques <- sort(unique(annee[!is.na(annee)]))
mat_SP <- matrix(NA,
nrow = length(annees_uniques),
ncol = 12)
rownames(mat_SP) <- annees_uniques
colnames(mat_SP) <- mois_nom
for (i in 1:length(annees_uniques)) {
for (m in 1:12) {
valeurs <- data$SGILOTSP[
annee == annees_uniques[i] &
mois_num == m]
if (sum(!is.na(valeurs)) > 0) {
mat_SP[i, m] <- mean(valeurs, na.rm = TRUE) }}}
heatmap(mat_SP,
Rowv = NA,
Colv = NA,
scale = "none",
margins = c(6, 6),
main = "Infestation moyenne du lot SP selon l'année et le mois")

Heatmap : Infestation DP selon années et mois
annees_uniques <- sort(unique(annee[!is.na(annee)]))
mat_DP <- matrix(NA,
nrow = length(annees_uniques),
ncol = 12)
rownames(mat_DP) <- annees_uniques
colnames(mat_DP) <- mois_nom
for (i in 1:length(annees_uniques)) {
for (m in 1:12) {
valeurs <- data$SGILOTSP[
annee == annees_uniques[i] &
mois_num == m]
if (sum(!is.na(valeurs)) > 0) {
mat_SP[i, m] <- mean(valeurs, na.rm = TRUE)}}}
heatmap(mat_SP,
Rowv = NA,
Colv = NA,
scale = "none",
margins = c(6, 6),
main = "Infestation moyenne du lot DP selon l'année et le mois")

Analyses statistiques :
Analyses descriptives
SP <- data$SGILOTSP[!is.na(data$SGILOTSP)]
DP <- data$SGILOTDP[!is.na(data$SGILOTDP)]
cat("===== SP =====\n")
## ===== SP =====
cat("N =", length(SP), "\n")
## N = 150
cat("Moyenne =", mean(SP), "\n")
## Moyenne = 448.0747
cat("Médiane =", median(SP), "\n")
## Médiane = 350
cat("Ecart-type =", sd(SP), "\n")
## Ecart-type = 425.2526
cat("Minimum =", min(SP), "\n")
## Minimum = 0
cat("Maximum =", max(SP), "\n\n")
## Maximum = 2428
cat("===== DP =====\n")
## ===== DP =====
cat("N =", length(DP), "\n")
## N = 151
cat("Moyenne =", mean(DP), "\n")
## Moyenne = 180.9073
cat("Médiane =", median(DP), "\n")
## Médiane = 139
cat("Ecart-type =", sd(DP), "\n")
## Ecart-type = 161.968
cat("Minimum =", min(DP), "\n")
## Minimum = 0
cat("Maximum =", max(DP), "\n")
## Maximum = 700