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 →

Pour éviter de se tromper dans l’ordre où les paramètres sont passés à une fonction, il vaut mieux les nommer. Ainsi l’ordre n’importera pas. Cela permet en plus de passer une valeur par défaut. essai<-function(par1=3, par2=20) {print(par1)print(par2)}essai()#[1] 3#[1] 20essai(1,2)#[1] 1#[1] 2essai(par1=1)#[1] 1#[1] 20essai(par2=10)#[1] 3#[1] 10essai(par2=10, par1=4)#[1] 4#[1] 10Read More →

Par défaut, R n’utilise qu’une seule fenêtre graphique. Il efface alors les anciens graphiques quand on en génère un nouveau. Il faut utiliser x11() pour ouvrir une nouvelle fenêtre data(iris)plot(iris)x11()plot(1:10) Sous windows avec l’interface graphique par défaut, le nombre de fenêtres simultanées est limité a 65. Il faut donc faire attention.Read More →

Si vous voulez vous assurer qu’une instruction qui n’aboutit pas ne bloque pas votre script ou encore si vous avez besoin de gérer les exceptions, vous pouvez utiliser la fonction try. rm(list=ls(all=TRUE)) # pour partir d’une mémoire viergeprint(a)# va vous renvoyer un message d’erreur… et aura bloqué votre script si vous l’aviez lancé via source() par exempletry(print(a))# vous affiche l’erreur mais ne gêne pas la suite du processustry(print(a),silent=T)# ne vous affiche même pas l’erreur Ici l’exemple donné n’a que peu d’utilité, mais ce principe de gestion des erreurs (en particulier avec tryCatch) peut vous rendre beaucoup de services dans une boucle ou autre.Read 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 est face à un jeux de données, il peut être pratique d’en avoir une vue d’ensemble : de savoir si les variables sont quali ou quanti, de connaître les niveaux des facteurs etc… Exemple : on va créer un data.frame avec du quantitatif et du qualitatif x<-c(1,4,5,9) y<-c(« bleu », »bleu », »rouge », »noir ») data<-data.frame(x,y) str(data) La fonction str() renvoie le nombre d’observations du jeu de données, dresse la typologie de chaque variable (facteur/numérique/intervalle) et donne les premiers éléments. Quand il s’agit de facteurs, elle donne également le nombre de modalités.Read More →

Si vous sélectionnez une partie d’un jeu de données de départ, parfois certaines modalités de facteurs n’existent plus mais R les considère toujours pour une ACM par exemple et vous vous retrouvez avec des modalités qui n’existent pas dans votre jeu de données. Voici une petite astuce pour les éliminer. -> D’abord vous obtenez votre jeu de données à partir du jeu de données de départ qui regroupe toutes les modalités-> Puis l’astuce consiste à enregistrer ce jeu de données puis le recharger. write.csv2() #pour enregistrer le jeu de données avec les modalités inutilesread.csv2() #pour le recharger -> Faites ensuite un str(), les modalités inutilesRead More →