6.1 Impact du sexe sur les paramètres du modèle
6.1.4 Impact du sexe sur la période1
Pour connaˆıtre l’influence du sexe sur la période1, j’ai utilisé le t-test. Les résultats ci-dessous indiquent que la p-value est de 0.70. Ce qui est supérieur à 0.05. On rejette l’hypothèse qui stipule que la période1 moyenne des porcs du sexe masculin est significativement différente de celle du sexe féminin avec une p-value = 0.7.
Welch Two Sample t-test
data: Periode1_Mean by sexe t = -0.42, df = 3, p-value = 0.70
alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval:
-2.03 1.55
sample estimates:
mean in group 1 mean in group 3
8.60 8.84
7 Analyses de sensibilité séquentielles à une seule variable
L’analyse de sensibilité globale est un outil essentiel pour les modélisateurs dans tous les do- maines d’application. Son but est de quantifier et de comparer l’influence de paramètres incer- tains (ou d’autres variables d’entrée) sur la sortie d’un modèle donné. Ainsi, avons-nous fait l’analyse de sensibilité globale de nos paramètres pour voir leur influence sur la réponse de l’ani- mal. Sur la figure 25 ci-dessus, la subdivision supérieure montre les valeurs de sortie extrêmes,
inter-quartiles et médianes à toutes les périodes de temps. La subdivision inférieure représente les indices de sensibilité à toutes les périodes de temps pour les principaux effets et les inter- actions de premier ordre. Dans la partie inférieure de la figure 37 , les indices de sensibilité au temps sont donnés par les longueurs des différentes couleurs le long de la barre de progression verticale du temps (t4, t9, t14, t19). Cela insinu que tout au long de la journée, le mesor est le paramètre qui influe le plus sur la réponse de l’animal. De 0h à 2 h et de 21h à 23 h nous constatons comme l’indique la couleur verte de la figure 25 que la température de l’animal est moyennement sensible aux amplitudes. Entre 3h et 9h et 15h à 21h, la température de l’animal est moyennement sensible aux phases. De 10h à 15h, la température de l’animal est sensible aux périodes. La conclusion qui en découle est que le mésor est le paramètre qui influe sur la réponse de l’animal. Les autres paramètres influent aussi sur la réponse de l’animal mais à des heures précises de la journée et à faible proportion.
Figure IV.12 – Influence des paramètres sur la réponse de l’animal
8 Conclusion
En somme, ce chapitre a été consacré aux résultats de notre travail. Nous constatons que notre modèle s’ajuste bien à nos données et le taux d’erreur est relativement faible. L’analyse de la sensitivité des paramètres nous renseigne que le mésor est le paramètre qui joue beaucoup sur la réponse de l’animal et donc sur le modèle.
9 Conclusion générale
Ce mémoire - ci, présente le travail réalisé tout au long de mon stage au sein de l’équipe Alinut à l’Institut National de Recherche Agronomique. L’objectif du stage était de modéliser les rythmes nycthéméraux de la température corporelle du porc et de voir sur les paramètres du modèle l’impact du sexe. Pour atteindre ces objectifs, la première approche était de faire un état de l’art sur les modèles mathématiques existants dans la littérature et ensuite l’approche statistique utilisée consiste à concevoir un modèle mixte composant le modèle cosinor à 4 composantes et la régression non linéaire sur un animal et ensuite l’appliquer sur tous les animaux du jeu de données et voir l’impact des facteurs sexe sur les paramètres du modèle. J’ai utilisé l’analyse de sensitivité pour pouvoir voir l’influence des paramètres sur la réponse de l’animal.
Ce stage m’a permis en premier lieu d’appliquer les connaissances théoriques sur un projet concret. En second lieu, il m’a permis d’approfondir mes connaissances dans la modélisation en générale et en particulier celle des rythmes nycthéméraux de la température corporelle du porc.
Pour terminer, il m’a permis de me familiariser avec le logiciel R . Ce rapport contenant quelques scripts en R doit servir à tout chercheur qui aimerait faire une modélisation générale dans la chrono-biologie et en particulier des rythmes nycthéméraux de la température corporelle.
ANNEXES
#installation of packages install.packages("dplyr") install.packages("tidyr") install.packages("tidyverse") install.packages("reshape") install.packages("ggplot2") install.packages("lubridate") install.packages("data.table") install.packages("psych") install.packages("nls2") install.packages("nlme") install.packages("multisensi") install.packages("matrixStats")
#import packages require(minpack.lm) library(dplyr) library(tidyr) library(tidyverse) library(reshape) library(ggplot2) library(lubridate) library(data.table) library(psych) library(nlme) library(nls2) library(multisensi) library(matrixStats) library(gridExtra)
##setup work directory and import data
setwd("C:/Users/egnofam/Documents/stage_analyse_temporelle/donnees/good_data") info_porc<-read.csv2("info_porc.csv") #load csv file infoc_porc
t_corporelle<-read.csv2("t_corporelle.csv") #load csv file fichier t_corporelle
#preprocessing
merge_reprise<-left_join(t_corporelle,info_porc,by="Id")#merge of t_corporelle and info_porc
#delete some non needed columns after merging merge_reprise<-merge_reprise %>%
select(-X.x,-X.y)
#transform data into Date types
merge_reprise$Date_naiss=as.Date(merge_reprise$Date_naiss,format="%d/%m/%Y") merge_reprise$Date1=as.Date(merge_reprise$Date1,format="%d/%m/%Y")
merge_reprise$Date_Utc=as.POSIXct(merge_reprise$Date_Utc,format="%d/%m/%Y %H:%M", tz=
"UTC")
merge_reprise$Date=as.Date(merge_reprise$Date_Utc,format="%d/%m/%Y")
#change the type factor of the temperature into numeric type
merge_reprise$Temperature<-as.numeric(as.character(merge_reprise$Temperature))
#compute the age of the pig and change difftime type into numeric
merge_reprise$Age<-as.numeric(merge_reprise$Date-merge_reprise$Date_naiss)
#sexe data frame
Id.Sexe<-data.frame(Id=c("3270","3343","3626","3.60E+04","323a","346e",
"3390","3393","3707","354f","381a","1524","165b",
"124b","122c","122f","134b","118d","1643","139f","1265"), sexe=c(3,1,3,3,3,1,1,3,1,1,1,3,3,1,1,3,3,1,3,3,1))
Id.Sexe1<-data.frame(Id= c("3270","3343","3626","3.60E+04",
"323a","346e","3390","3393","3707","308d",
"354f","381a","1524","165b","124b","122c",
"122f","134b","1231","118d","1643","139f",
"1265","110f"),
sexe=c(3,1,3,3,3,1,1,3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1))
# delete the last day for all animals (delete each last row because of slaughter) ID<-unique(merge_reprise$Id)
for(i in 1:length(ID)){
merge_reprise=merge_reprise[-dim(merge_reprise)[1],]
}
#delete rows where date are inferior than date1 and where temperature are < 37.5 merge_reprise<-merge_reprise %>%
filter(Date>=Date1+1) %>%
filter(Temperature>=37.5) %>%
filter(Temperature <=41)
#Here we will keep only anaimals who have at least
#one temperature each hour. Then we will compute the mean by hour merge_reprise<-merge_reprise %>%
mutate(hour = as.integer(format(Date_Utc, "%H")))%>%
filter(all(0:23 %in% hour))
################### DESCRIPTIVE ANALYSE ######################
#summary of temeperature
summary(merge_reprise$Temperature)
#structure of temperature
str(merge_reprise$Temperature)
#standard deviation of temperature sd(merge_reprise$Temperature)
#variance of temperature var(merge_reprise$Temperature)
# plot histogram to see the distribution of temperature hist(merge_reprise$Temperature, breaks =100, freq = TRUE,
main = "distribution de la temperature",
xlab="temperature interne, ?C",", ylab=’frequence",col = "darkred") boxplot(merge_reprise$Temperature,col="darkred",
cex.axis=0.8,cex.lab=0.8,ylab="Temperature")
#sexe
table(merge_reprise$Sexe)
#frequence of sexe
barplot(table(merge_reprise$Sexe),col="darkred",
main="Distribution du sexe",xlab="sexe",ylab="Effectifs")
#pie plot
colors<-c("gray","lightgreen")
pie(table(merge_reprise$Sexe),col=colors, main="Repartition du sexe",
labels=round(table(merge_reprise$Sexe) /nrow(merge_reprise),digits=3)) legend("bottomleft", xpd = TRUE, legend =
unique(merge_reprise$Sexe),fill=colors)
#compute the model to fit animals : our model contains data and the time
#in data we have M=mesor and 4 amplitudes noted as : A1,A2,A3,A4,
#4 phases noted as: ph1,ph2,ph3,ph4 and 4 periodes : pe1,pe2,pe3,pe4
model<- function(data,t) {
data$M+data$A1*cos(2*pi*t/data$pe3+data$ph2)+
data$A4*cos(2*pi*t/data$pe6+data$ph5)+
data$A7*cos(2*pi*t/data$pe8+data$ph9)+
data$A10*cos(2*pi*t/data$pe11+data$ph12) }
## parameter values used to simulate data p <-list(M=39.89438,A1=0.426806,ph2=-117.785,
pe3=8,A4=0.0407673,ph6=-85.832,pe5=24, A7=0.161942,ph9=85.832,pe8=12,
A10=0.0748196,ph12=-38.294,pe11=6)
## residual function
residFun <- function(p, observed, xx) observed - model(p,xx)
## starting values for parameters
parStart <- list(M=39.89438,A1=0.426806,
ph2=-117.785,pe3=8,A4=0.05,ph5=-85.832,pe6=24,
A7=0.05,ph9=85.832,pe8=12,A10=0.05,ph12=-38.294,pe11=6)
###################### Work on one animal whose id is 3343 ######################
#hour#
one_Animal<-merge_reprise[merge_reprise$Id==3343,]# data frame of one animal
# mean of the temperature of this animal by hour one_Animal_Hour<-setDT(one_Animal)[,
.(Moyenne_Temperature=mean(Temperature)),.(Id,hour)]
mth_One_Animal <- ggplot(data=one_Animal_Hour, aes(x=hour,y=Moyenne_Temperature)) +geom_point() +
xlab("temps (h)") + ylab("temperature moyenne de l’animal dont l’id est 3343") print(mth_One_Animal)#we print the mean of temperature by hour of this animal
## perform fit with one animal by hour
nls.out <- nls.lm(par=parStart,lower=c(M=37.5,A1=0.05, ph2=-360,pe3=1,A4=0.05,ph5=-360, pe6=1,A7=0.05,ph9=-360,pe8=1,A10=0.05, ph12=-360,pe11=1),upper =c(M=41.5,A1=4,
ph2=360,pe3=24,A4=4,ph5=360,pe6=24,A7=4,ph9=360, pe8=24,A10=4,ph12=360,pe11=24),fn = residFun, observed =one_Animal_Hour$Moyenne_Temperature, xx = one_Animal_Hour$hour,
control = nls.lm.control(nprint=1,maxiter = 1024))
## plot model evaluated at final parameter estimates one_Animal_Hour_test=data.frame(hour=0:23,
temperature=model(as.list(coef(nls.out)), one_Animal_Hour$hour)) mth_One_Animal + geom_line(data=one_Animal_Hour_test,
aes(x=hour,y=temperature),colour="#339900", size=1)
#date#
# mean of the temperature of this animal by hour one_Animal_Date <- setDT(one_Animal)[,
.(Moyenne_Temperature=mean(Temperature)),.(Id,Date,hour)]
mtd_One_Animal <- ggplot(data=one_Animal_Date, aes(x=hour,y=Moyenne_Temperature)) +
geom_line() + xlab("temps (date)") +
ylab("temperature moyenne par heure et par date de l’animal dont l’id = 3343") + facet_wrap(~ Date)
print(mtd_One_Animal)#we print the mean of temperature by hour of this animal and by date
## perform fit with one animal by date during his life
udate=unique(one_Animal_Date$Date) #we keep unique dates into udate variable donnees_one_Animal.est=data.frame()#we declare data frame which will stock the
estimated parameters of the animal
gpred_one_Animal=NULL # we initialise the prediction of one animal
#for each date, we intialise starters parameters and we fit the model and we save parameters into donnees_one_Animal.est
#and we make predictions with this parameters for (i in 1:length(udate)) {
parStart <- list(M=mean(one_Animal_Date[one_Animal_Date$Date==
udate[i]]$Moyenne_Temperature),A1=0.426806, ph2=-117.785,pe3=8,A4=0.0407673,ph5=-85.832, pe6=24, A7=0.161942,ph9=85.832,pe8=12, A10=0.0748196,ph12=-38.294,pe11=6)
fit_temp_time_one_Animal<-nls.lm(par=parStart,lower=
c(M=37.5,A1=0.001,ph2=-360,pe3=1, A4=0.001,ph5=-360,pe6=1,A7=0.01,
ph9=-360,pe8=1,A10=0.01,ph12=-360,pe11=1), upper =c(M=41.5,A1=4,ph2=360,pe3=24, A4=4,ph5=360,pe6=24,A7=4,ph9=360,
pe8=24,A10=4,ph12=360,pe11=24),fn = residFun, observed=one_Animal_Date[one_Animal_Date$Date==
udate[i]]$Moyenne_Temperature
,xx =one_Animal_Date[one_Animal_Date$Date==udate[i]]$hour , control = nls.lm.control(maxiter = 200,nprint=1))
#
donnees_one_Animal.est <-
rbind(donnees_one_Animal.est,coef(fit_temp_time_one_Animal)) gpred_one_Animal <-
c(gpred_one_Animal,model(as.list(coef(fit_temp_time_one_Animal)), one_Animal_Date[one_Animal_Date$Date==udate[i]]$hour) )
}
#we name all the parameters names(donnees_one_Animal.est) <-
c("Mesor","Amp1","phase1","periode1","Amp2","phase2",
"periode2","Amp3","phase3","periode3","Amp4","phase4","periode4")
#regrouper les dates uniques de chaque Id et les renommer
#we group each unique date of each Id and we rename variables of data frame (gnof_pred_one_Animal)
donnees_one_Animal.est<- cbind(unique(one_Animal_Date %>%
select(Date)),donnees_one_Animal.est) gnof_pred_one_Animal<-data.frame(one_Animal_Date$Id,
one_Animal_Date$hour,gpred_one_Animal=gpred_one_Animal) gnof_pred_one_Animal<-cbind(gnof_pred_one_Animal,
one_Animal_Date$Date) names(gnof_pred_one_Animal)<-
c("Id","hour","gpred_one_Animal","Date")
#print prediction with original data
mtd_One_Animal+geom_line(data=gnof_pred_one_Animal,mapping=
aes(x = hour,y=gpred_one_Animal,color="darkgreen"))
# we print the evolution of mesor by date
mesor_3343<-ggplot(data = donnees_one_Animal.est, aes(x=Date,y=Mesor))+geom_line(color="darkgreen") print(mesor_3343)
###################### Work on all animals ######################
#compute the mean of the temperature by date and by Id
#data frame to stock the mean of temperature by date mean_temperature_D=setDT(merge_reprise)[,
.(Moyenne_Temperature=mean(Temperature)),.(Id,Date)]
mean_temperature_D<-left_join(mean_temperature_D,
Id.Sexe1,by="Id") #we join the Id columns to the dataframe mtdi<-ggplot(mean_temperature_D,aes(x=Date,
y=Moyenne_Temperature,color=factor(Id)))+ geom_line()+
labs(title="Moyenne de temperature par date de tous les animaux pendant toute leur vie",
x="Date",y="Moyenne Temperature / date") print(mtdi) #we print the mtdi
#BY SEX
mtdi+facet_wrap(~sexe) #we print mtdi by sexe
#compute the mean of the temperature by date, by hour and by Id mean_temperature_D_H=setDT(merge_reprise)[,
.(Moyenne_Temperature=mean(Temperature)),.(Id,hour,Date)]
mean_temperature_D_H<-left_join(mean_temperature_D_H,Id.Sexe1,by="Id") mtdhi<-ggplot(mean_temperature_D_H,aes(x=Date,y=Moyenne_Temperature,
color=factor(sexe)))+geom_line()+
labs(title="Moyenne de temperature par date/heure de tous les animaux pendant toute leur vie ",
x="Date",y="Moyenne Temperature / date")
#by Id
mtdhi+facet_wrap(~Id)#we print mtdhi
#compute the mean of the temperature by id and by hour for all animals
#data frame of all animals by id and by hour mean_temperature_H<-setDT(merge_reprise)[,
.(Moyenne_Temperature=mean(Temperature)), .(Id,hour)]
mean_temperature_H<-left_join(mean_temperature_H, Id.Sexe1,by="Id")
mthi<-ggplot(mean_temperature_H,aes(x=hour,
y=Moyenne_Temperature,color=factor(Id)))+geom_line()+
labs(title="Moyenne de temperature par heure et par Id de 5 jours ? 153 jours (durant leur vie)",
x="hour",y="Moyenne Temperature") print(mthi)
#use facetwrap to plot all animals for hour by sex mthi+facet_wrap(~sexe)
#use facetwrap to plot all animals for Date by sex mtdi+facet_wrap(~sexe)
#use facetwrap to plot all animals for hour by Id mthi+facet_wrap(~Id)
#use facetwrap to plot all animals for Date by Id mtdi+facet_wrap(~Id)
# loop by id
Idun=unique(mean_temperature_H$Id) #unique Id
#initialize the data frame to stock parameters when fitting the model to animals temperature
donnees.hour_All_Animal.est <- data.frame()
#initialisation of the variable to stock residual sum of square r1=data.frame()#to stock RSS
r2=data.frame(unique(mean_temperature_H$Id)) #to stock Id
#initialisation de la variable prediction gpred_All_Animal <- NULL
#we loop each id to fit them for (i in 1:length(Idun)) {
parStart <- list(M=mean(
mean_temperature_H[mean_temperature_H$Id==Idun[i],]$
Moyenne_Temperature),A1=0.426806,ph2=-117.785, pe3=8,A4=0.0407673,ph5=-85.832,pe6=24, A7=0.161942, ph9=85.832,pe8=12,A10=0.0748196,ph12=-38.294,pe11=6) fit_temp_time_all_i<-nls.lm(par=parStart,
lower=c(M=37.5,A1=0.001,ph2=-360,pe3=1,A4=0.001, ph5=-360,pe6=1,A7=0.01,ph9=-360,pe8=1,A10=0.01,
ph12=-360,pe11=1), upper =c(M=41.5,A1=4,ph2=360,pe3=24, A4=4,ph5=360,pe6=24,A7=4,ph9=360,
pe8=24,A10=4,ph12=360,pe11=24),fn = residFun, observed=mean_temperature_H[mean_temperature_H$Id==
Idun[i],]$Moyenne_Temperature,xx =
mean_temperature_H[mean_temperature_H$Id==Idun[i],]$hour,
control = nls.lm.control(maxiter = 150,nprint=2))
#
donnees.hour_All_Animal.est <- rbind(
donnees.hour_All_Animal.est,coef(fit_temp_time_all_i)) gpred_All_Animal <- c(gpred_All_Animal,
model(as.list(coef(fit_temp_time_all_i)), 0:23) ) r1=rbind(r1,fit_temp_time_all_i$deviance)
}
r2=cbind(r2,r1) # RSS of each animal
names(r2)=c("Id","RSS") #column name of r2 data frame names(donnees.hour_All_Animal.est) <- c("Mesor","Amp1",
"phase1","periode1","Amp2","phase2","periode2","Amp3",
"phase3","periode3","Amp4","phase4","periode4")
#we bind the id column to estimated parameters dataframe
donnees.hour_All_Animal.est<- cbind(Id.Sexe1,donnees.hour_All_Animal.est)
#Each individual animal predicted for all animals during hours gnof_pred_All_Animal=data.frame(mean_temperature_H$Id,
mean_temperature_H$hour,gpred_All_Animal=gpred_All_Animal) names(gnof_pred_All_Animal)=c("Id","hour","gpred_All_Animal") mthi + geom_line(data=gnof_pred_All_Animal, aes(x=hour,
y=gpred_All_Animal), colour="#339900", size=1)+ facet_wrap(~ Id)
#
mean_Temperature_D_Alldays<-setDT(merge_reprise)[,
.(Moyenne_Temperature=mean(Temperature)),.(Id,Date,hour,Sexe)]
subset_All=setDT(merge_reprise)[,
.(Moyenne_Temperature=mean(Temperature)),.(Id,Date,hour)]
#fit the model to all animals by date of their life gpred_Date_All_Animal <- NULL #data frame for predictions
donnees_Date_All_Animals.est=data.frame()#data frame to stock parameters
data_All_Animals<-data.frame()#data frame to bind donnees_dates and data_All_Animals donnees_dates<-data.frame()
#initialisation de la variable pour stocker r au carr rd1=data.frame() #to stock RSS by date
rd2=data.frame(unique(subset_All$Id)) #to stock Id Idun=list(’3270’,’3343’,’3626’,’3.60E+04’,’323a’,
’346e’,’3390’,’3393’,’3707’,’308d’,’354f’,’381a’,
’1524’,’165b’,’124b’,’122c’,’122f’,
’134b’,’1231’,’118d’,’1643’,’139f’,’1265’,’110f’)
for (j in 1:length(Idun)) {
u=unique(subset_All[subset_All$Id==Idun[j],]$Date)
subset_data_j = mean_Temperature_D_Alldays[mean_Temperature_D_Alldays$Id==Idun[j],]
for (i in 1:length(u)) { parStart <-
list(M=mean(subset_data_j[subset_data_j$Date==u[i]]$Moyenne_Temperature), A1=0.426806,ph2=-117.785,pe3=8,A4=0.0407673,ph5=-85.832,pe6=24, A7=0.161942,ph9=85.832,pe8=12,A10=0.0748196,ph12=-38.294,pe11=6) fit_temp_time_All<-nls.lm(par=parStart,lower=c(M=37.5,A1=0.001,ph2=-360,pe3=1,
A4=0.001,ph5=-360,pe6=1,A7=0.01,ph9=-360, pe8=1,A10=0.01,ph12=-360,pe11=1)
, upper
=c(M=41.5,A1=4,ph2=360,pe3=24,A4=4,ph5=360,pe6=24,A7=4, ph9=360,pe8=24,A10=4,ph12=360,pe11=24),
fn = residFun,observed=
subset_data_j[subset_data_j$Date==u[i]]$Moyenne_Temperature ,xx =subset_data_j[subset_data_j$Date==u[i]]$hour
, control = nls.lm.control(maxiter= 200,nprint=1)) donnees_Date_All_Animals.est <- rbind(donnees_Date_All_Animals.est,
coef(fit_temp_time_All)) donnees_dates<-rbind(donnees_dates,
unique(subset_data_j[subset_data_j$Date==u[i]] %>% select(Date,Id,Sexe))) gpred_Date_All_Animal <-
c(gpred_Date_All_Animal,model(as.list(coef(fit_temp_time_All)), subset_data_j[subset_data_j$Date==u[i]]$hour)) rd1=rbind(rd1,fit_temp_time_all_i$deviance)
} }
rd2=cbind(rd2,rd1) names(rd2)=c("Id","RSS")
names(donnees_Date_All_Animals.est)<-c("Mesor","Amp1",
"phase1","periode1","Amp2","phase2","periode2",
"Amp3","phase3","periode3","Amp4","phase4","periode4")
donnees_Date_All_Animals.est<-cbind(donnees_dates,donnees_Date_All_Animals.est)
length(gpred_Date_All_Animal) length(subset_All$Id)
gpred_Date_All_Animal=data.frame(subset_All$Id,subset_All$Date,subset_All$hour, gpred_Date_All_Animal=gpred_Date_All_Animal)
#gnof_pred_All=cbind(gnof_pred_All,subset_All$Date)
names(gpred_Date_All_Animal)=c("Id","Date","hour","gpred_Date_All_Animal")
#Evolution of mesor by Id
mesor_All<-ggplot(bernard,aes(x=Date,y=Mesor,color=factor(Id)))+
geom_line()+
labs(title="Evolution du m?sor ",x="Date",y="Mesor / date") print(mesor_All)
mesor_All+facet_wrap(~ Id)
#by sexe
mesor_All+facet_grid(Id ~ Sexe)
#mesor_All+facet_grid(Sexe ~ Id)
################################### LACTATION ##################################
#Here we will filter the age of pig and keep in the data set age inferior than 28 merge_reprise_lactation=merge_reprise %>% filter(Age <28 )
#date
#compute the mean of tempearature by id and by date during lactation mean_temperature_date_lactation= setDT(merge_reprise_lactation)[,
.(moyenne_Temperature=mean(Temperature)), .(Id,Date,hour)]
#plot with ggplot
mtdli=ggplot(mean_temperature_date_lactation,aes(x=hour, y=moyenne_Temperature, color=factor(Id)))+geom_line()+
labs(title="Moyenne de temperature par Date pendant la lactation pour tous les animaux",x="Date",y="Moyenne Temperature")
#
mtdli+facet_wrap(~ Date)
#hour
#compute the mean of tempearature by id and by hour during lactation mean_temperature_hour_lactation= setDT(merge_reprise_lactation)[,
.(moyenne_Temperature=mean(Temperature)), .(Id,hour)]
#plot with ggplot
mthli=ggplot(mean_temperature_hour_lactation,aes(x=hour, y=moyenne_Temperature, color=factor(Id)))+geom_line()+
labs(title="Moyenne de temperature par heure pendant la lactation pour tous les animaux",x="hour",y="Moyenne Temperature")
#print(mthl)
#
mthli+facet_wrap(~ Id)
#perform fit for lactation
# boucle by id
Idun_L=unique(mean_temperature_hour_lactation$Id) donnees.All_Animal.Lactation.est <- data.frame()
#initialisation de la variable pour stocker r au carr?
rl1=data.frame()
rl2=data.frame(unique(mean_temperature_hour_lactation$Id))
#initialisation de la variable prediction gpred_All_Animal_Lactation <- NULL
for (i in 1:length(Idun_L)) {