La manière la plus simple d’ajuster une fonction à des données est la méthode « géométrique » des moindres carrés (minimiser la somme des carrés des écarts correspond à maximiser la vraisemblance avec une loi normale). La fonction nls de R permet de réaliser ceci de manière simple. Voyons deux exemples : #exemple modèle de croissance exponentiel #on crée une fonction qui correspond à un modèle de Malthus malthus<-function(t,N0,r){N0*exp(r*t)} t<-seq(0:100) NO<-2 r<-0.05 plot(malthus(t,NO,r)~t,type=’l’,col=’green’,lwd=2) #on crée des données en ajoutant du bruit sim<-malthus(t,NO,r)+rnorm(t,sd=0.3*malthus(t,NO,r)) plot(sim~t,pch=20) #on ajuste la fonction sur les données simulées en utilisant les moindres carrés fitmalthus<-nls(sim~malthus(t,a,b),start=list(a=1,b=0.01)) fitmalthus summary(fitmalthus) #on vérifie plot(sim~t,pch=20) lines(malthus(t,NO,r)~t,type=’l’,col=’green’,lwd=2) lines(malthus(t,coef(fitmalthus)[1],coef(fitmalthus)[2])~t,type=’l’,col=’red’,lwd=2) #exemple 2 avecRead More →

La manière la plus simple d’ajuster une fonction à des données est la méthode "géométrique" des moindres carrés (minimiser la somme des carrés des écarts correspond à maximiser la vraisemblance avec une loi normale). La fonction nls de R permet de réaliser ceci de manière simple. Voyons deux exemples : #exemple modèle de croissance exponentiel #on crée une fonction qui correspond à un modèle de Malthus malthus<-function(t,N0,r){N0*exp(r*t)} t<-seq(0:100) NO<-2 r<-0.05 plot(malthus(t,NO,r)~t,type=’l’,col=’green’,lwd=2) #on crée des données en ajoutant du bruit sim<-malthus(t,NO,r)+rnorm(t,sd=0.3*malthus(t,NO,r)) plot(sim~t,pch=20) #on ajuste la fonction sur les données simulées en utilisant les moindres carrés fitmalthus<-nls(sim~malthus(t,a,b),start=list(a=1,b=0.01)) fitmalthus summary(fitmalthus) #on vérifie plot(sim~t,pch=20) lines(malthus(t,NO,r)~t,type=’l’,col=’green’,lwd=2) lines(malthus(t,coef(fitmalthus)[1],coef(fitmalthus)[2])~t,type=’l’,col=’red’,lwd=2) #exemple 2 avecRead More →

La fonction paste permet de "coller" des chaînes de caractères, cela peut être utile pour plein de chose : définir le nom d’un fichier de sortie, écrire une formule pour un modele… a<-"coucou"b<-"comment vas-tu?"paste(a,b)# coucou comment vas-tu? paste(a,b,sep="+") #  coucou+comment vas-tu? # le paramètre sep permet de définir le caractère utilisé pour concaténer les chaînes de caractèresRead More →

La fonction paste permet de « coller » des chaînes de caractères, cela peut être utile pour plein de chose : définir le nom d’un fichier de sortie, écrire une formule pour un modele… a<-« coucou »b<-« comment vas-tu? »paste(a,b)# coucou comment vas-tu? paste(a,b,sep= »+ ») #  coucou+comment vas-tu? # le paramètre sep permet de définir le caractère utilisé pour concaténer les chaînes de caractèresRead More →

Lorsque l’on réalise des scripts qui vont tourner un certain temps avant d’aboutir au résultat final, il est essentiel d’en optimiser le fonctionnement pour gagner du temps. Il nous faut pour cela un bon indicateur : comment savoir le temps que dure une fonction ou un script ? Vous pouvez utiliser la fonction system.time system.time(for ( i in 1:10000){print(i)})system.time(for ( i in 1:10000){cat(i)})Read More →

Lorsque l’on réalise des scripts qui vont tourner un certain temps avant d’aboutir au résultat final, il est essentiel d’en optimiser le fonctionnement pour gagner du temps. Il nous faut pour cela un bon indicateur : comment savoir le temps que dure une fonction ou un script ? Vous pouvez utiliser la fonction system.time system.time(for ( i in 1:10000){print(i)})system.time(for ( i in 1:10000){cat(i)})Read More →

L’objectif est de calculer une moyenne sur des réplicats techniques/biologiques.Tous les réplicats d’une condition doivent avoir le même nom. Tout d’abord on crée une matrice d’accueil pour les résultats.Nombre de niveaux : le tableau initial contient y réplicats pour z conditions, donc y * z lignes.La matrice d’accueil n’aura donc plus que z lignes. Prenons l’exemple du jeu de données "iris".Calculons les moyennes par variété pour chaque variable. data(iris)niveaux<-length(levels(iris$Species))iris.moyenne<-matrix(nrow=niveaux, ncol=(ncol(iris)-1))#ensuite on calcule la moyenne pour chaque condition, par variablefor (i in 1:(ncol(iris)-1)){iris.moyenne[,i]<-tapply(iris[,i], iris$Species, mean)}#il n’y a plus qu’à améliorer l’allure des résultatscolnames(iris.moyenne)<-colnames(iris[, 1:4])rownames(iris.moyenne)<-levels(iris$Species)iris.moyenne On peut également créer une matrice pour des écarts-types par exemple, en remplaçantRead More →

L’objectif est de calculer une moyenne sur des réplicats techniques/biologiques.Tous les réplicats d’une condition doivent avoir le même nom. Tout d’abord on crée une matrice d’accueil pour les résultats.Nombre de niveaux : le tableau initial contient y réplicats pour z conditions, donc y * z lignes.La matrice d’accueil n’aura donc plus que z lignes. Prenons l’exemple du jeu de données « iris ».Calculons les moyennes par variété pour chaque variable. data(iris)niveaux<-length(levels(iris$Species))iris.moyenne<-matrix(nrow=niveaux, ncol=(ncol(iris)-1))#ensuite on calcule la moyenne pour chaque condition, par variablefor (i in 1:(ncol(iris)-1)){iris.moyenne[,i]<-tapply(iris[,i], iris$Species, mean)}#il n’y a plus qu’à améliorer l’allure des résultatscolnames(iris.moyenne)<-colnames(iris[, 1:4])rownames(iris.moyenne)<-levels(iris$Species)iris.moyenne On peut également créer une matrice pour des écarts-types par exemple, en remplaçantRead More →

R est un langage itératif, c’est a dire que le logiciel va interpréter une ligne de code après l’autre.Pour gagner de la place, on peut vouloir écrire une série d’opérations sur une seule ligne. On perd en lisibilité, mais pour les choses simples cela peut être pratique. rm(list=ls(all=TRUE))a<-5b<-7# peut s’écrire sur une ligne grace au séparateur ;rm(list=ls(all=TRUE));a<-5;b<-7 # pour les boucles for while ou les if, on peut compresser comme cela x<-10for ( i in 1:10){print(i)x<-xiprint(x)print("coucou")} # s’écrit en une lignex<-10;for ( i in 1:10){print(i);x<-xi;print(x);print("coucou")}  Read More →

R est un langage itératif, c’est a dire que le logiciel va interpréter une ligne de code après l’autre.Pour gagner de la place, on peut vouloir écrire une série d’opérations sur une seule ligne. On perd en lisibilité, mais pour les choses simples cela peut être pratique. rm(list=ls(all=TRUE))a<-5b<-7# peut s’écrire sur une ligne grace au séparateur ;rm(list=ls(all=TRUE));a<-5;b<-7 # pour les boucles for while ou les if, on peut compresser comme cela x<-10for ( i in 1:10){print(i)x<-x*iprint(x)print(« coucou »)} # s’écrit en une lignex<-10;for ( i in 1:10){print(i);x<-x*i;print(x);print(« coucou »)}  Read More →