rm(list=ls()) #vous devez choisir le répertoire de travail dans lequel est stocké votre fichier de données #pour cela, dans Rstudio, session/set working directory/to source file location tab<-read.table("traits.csv",header=T,sep=";",dec=".") #Affiche les 6 premières lignes de la table head(tab) ############################## ## EXERCICE 1 ## ############################## pdf("DynamiqueSouche.pdf",height=5,width=7) ##représentation graphique des données pour un temps inférieur à Tmax=300 minutes listeSouche<-c("s104","s304","s270") col_souche<-1:3 #pour choisir la couleur des souches 1 noir, 2 rouge, 3 vert names(col_souche)<-listeSouche #on donne des noms aux éléments de col_Souche pour pouvoir indiquer la couleur correspondant à la souche pch_rep<-16:17 #pour choisir le type de point selon la valeur de rep (1 ou 2) lty_cinetique<-1:3 #pour choisir le type de ligne selon la valeur de cinétique (1 ou 2 ou 3) Tmax<-700 #temps au dela duquel on ne souhaite pas représenter les données plot(-1,-1,xlim=c(0,Tmax),ylim=range(tab[tab$Temps_min<=Tmax,listeSouche]),xlab="Temps (min)",ylab="DO") #trace un graphique vide avec les limites appropriées #ci dessous on répète la meme opération pour chaque souche for (soucheChoisie in listeSouche) { #on trace tous les points correspondant à cette souche, on précise la couleur et le type de points #pch permet de préciser le type de points points(tab$Temps_min,tab[,soucheChoisie],col=col_souche[soucheChoisie],pch=pch_rep[tab$rep],xlab="Temps (min)",ylab="DO") #pour chaque réplicat technique de chaque cinétique on relie les points entre eux for (i in 1:3) { for (j in 1:2) { tempo<-tab[tab$cinetique==i & tab$rep==j,] #pour cela on récupère uniquement les données correspondant à ce replicat technique #puis on trace une ligne. lty permet de préciser le type de ligne lines(tempo$Temps_min,tempo[,soucheChoisie],col=col_souche[soucheChoisie],pch=pch_rep[j],lty=lty_cinetique[i],xlab="Temps (min)",ylab="DO") } } } #on rajoute une légende, pas besoin de passer trop de temps sur la façon dont elle est construite legend("topleft",c(listeSouche,"rep.bio.1","rep.bio.2","rep.bio.3","rep.tech.1","rep.tech.2"),col=c(1:3,rep(8,5)),lty=c(0,0,0,lty_cinetique,0,0),pch=c(15,15,15,-1,-1,-1,pch_rep)) dev.off() #représentation graphique du modele de croissance exponentielle x(t)=x0*exp(rt) temps<-0:300 x0<-10^5 r<-0.006 x<-x0*exp(r*temps) plot(temps,x,type="l",xlab="Temps (min)",ylab="Nb de cellules/ml") ############################## ## EXERCICE 2 ## ############################## #On va estimer les paramètres de la fonction à partir de chaque réplicat, on aura donc 6 estimation de chaque paramètre par souche #On va ranger ces estimations dans une table param<-NULL #on utiliser un algorithme qu'il faut initialiser avec des valeurs de paramètres. #on fait tourner l'algo pour chaque réplicat, on ne vous demande pas de comprendre l'algorithme qui ajuste le modèle aux observations #pour chaque souche, chaque cinétique, chaque réplicat, on fait l'ajustement for (soucheChoisie in listeSouche) { x11() par(mfrow=c(2,3)) for (j in 1:2) { for (i in 1:3) { tempo<-tab[tab$cinetique==i & tab$rep==j & tab$Temps_min<300,c("Temps_min",soucheChoisie)] colnames(tempo)<-c("temps","DO") fit1 <- lm(log(tempo$DO) ~ tempo$temps, data=tempo) res<-cbind.data.frame(souche=soucheChoisie,cinetique=i,rep=j,r=fit1$coefficients[2]) param<-rbind.data.frame(param,res) plot(tempo$temps,log(tempo$DO),main=soucheChoisie) abline(fit1) } } } #observez comment est la table dans laquelle sont rangées les estimations head(param) #représentation des estimations boxplot(r~souche,data=param) aggregate(r~souche,data=param,FUN=mean)