Le critère d’Akaike (AIC) est un critère utilisé pour la sélection de modèles. Ce critère représente un compromis entre le biais diminuant avec le nombre de paramètres libres et la parcimonie, volonté de décrire les données avec le plus petit nombre de paramètres possible. Il se calcule de la façon suivante -2log-likelihood + knpar. Par défaut on a souvent k=2. Le meilleur modèle est celui qui possède l’AIC le plus faible. On obtient ce critère en utilisant la fonction AIC(objet,k=?), k=2 par défaut. Prenons un exemple library(MASS) #pour la fonction fitdistr #  z est un vecteur contenant les données, on essaie de modéliser ces données parRead More →

Il existe plusieurs façons de représenter des surfaces en 3D. Je vous en propose une qui utilise la fonction de base persp(). #on construit les fonctions à représenter f1 et f2 f1<-function(x,y){    15*sin(sqrt(x^2+y^2))}################mu1<-0 mu2<-0 s11<-15 s12<-20 s22<-10 rho<-0.5 f2<-function(x,y){term1<-1/(2*pi*sqrt(s11*s22*(1-rho^2)))term2<–1/(2*(1-rho^2))term3<-(x-mu1)^2/s11term4<-(y-mu2)^2/s22term5<–2*rho*((x-mu1)*(y-mu2))/(sqrt(s11)*sqrt(s22))term1*exp(term2*(term3+term4-term5))}# on définit deux vecteurs correspondant aux axes x et yx<-seq(-15,15,length=50)y<-x# on calcule la valeur de z=f(x,y) pour tous les couples x[i],y[i] avec la fonction outerz1<-outer(x,y,f1)z2<-outer(x,y,f2)#on utilise la fonction perspx11()persp(x,y,z1,theta=30,phi=40,expand=0.5,col= »lightblue »,ticktype= »detailed »)x11()persp(x,y,z2,theta=40,phi=30,expand=0.5,col= »lightgreen »,ticktype= »detailed ») Il est possible d’ajouter des points au graphique en utilisant points(trans3d()).Regardez bien tous les arguments de la fonction persp() : ?persp. Ils sont nombreux et vous permettront d’obtenir votre surface sous l’angle que vous voulez. Enfin ilRead More →

R permet de faire beaucoup de chose avec les graphiques mais il faut coder ce qu’on veut faire. Nous allons voir ici comment ajouter des courbes, des points et des droites sur un plot. #on crée des données pour l’exemple x<-seq(0:100)a<-2b<-5y1<-a*x+by2<-a*x^0.5+by3<-a*x^0.3+b*xynoisy1<-y1+rnorm(length(y1),sd=0.2*y1)ynoisy2<-y2+rnorm(length(y2),sd=0.2*y2)ynoisy3<-y3+rnorm(length(y3),sd=0.2*y3)#étape 1 on trace la fonction y1 avec un plotplot(y1~x,type=’l’,col= »green »,lwd=2,ylim=c(0,300))#étape 2 on veut ajouter les fonctions y2 et y3 sur le même graphiques : on utilise lineslines(y2~x,type=’l’,col= »blue »,lwd=2)lines(y3~x,type=’l’,col= »purple »,lwd=2)#étape 3 on veut ajouter les nuages de point ynoisy1 2 et 3 sur le graphique: on utilise pointspoints(ynoisy1~x,pch=20,col= »grey »)points(ynoisy2~x,pch=20,col= »black »)points(ynoisy3~x,pch=22,col= »black »)#étape 4 on veut ajouter une droite verticale pour x=50 : on utilise abline(v=) v pour vertical abline(v=50,col= »red »)#étape 5 on veutRead 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 →

Dans les résultats d’analyse statistique, R affiche souvent des étoiles à côté des p values avec le code suivant : Signif. codes:  0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1 Il est possible de les enlever: #on utilise les données irisirissummary(iris)#pour l’exemple on fait une analyse de variance : la longueur des sépales est-elle expliquée par l’espèce?reg<-lm(iris$Sepal.Length~iris$Species)anova(reg)summary(reg) R affiche les résultats avec les étoiles pour les p-values : Analysis of Variance Table Response: iris$Sepal.Length              Df Sum Sq Mean Sq F value    Pr(>F)    iris$Species   2 63.212  31.606  119.26 < 2.2e-16 ***Residuals    147 38.956   0.265       On décide de les enlever en utilisant optionsRead More →

On a parfois besoin d’un jeux de données qui reprend toutes les combinaisons possibles de plusieurs facteurs.Bien sûr on peut le faire à la main, mais il y a beaucoup plus intelligent : la fonction expand.grid fait ça très bien. expand.grid(c(« voiture », »velo »),c(« bleue », »rouge », »vert »),c(« mercedes », »peugeot »)) Cette commande permet de générer toutes les combinaisons possibles : voiture bleue mercedes, voiture bleue peugeot…Read More →

Les packages contiennent un certain nombre de fonctions. Il peut être intéressant de voir comment elles sont codées, pour les comprendre ou les améliorer par exemple. #il suffit de taper son nomlm  # affiche le code source de la fontion lmpage(lm) # affiche une nouvelle fenêtre avec le code source bien mis en forme (avec indentation)dput(lm, control = « useSource ») # permet de voir les commentaires s’il y en a, en pratique page utilise dputpage(lm, control = « useSource ») # cela fonctionne donc aussi.Read More →

R nous donne la possibilité, très pratique, de créer des fonctions personnalisées.Voici l’architecture globale : nomdemafonction<-function(variable1,variable2…){#ici on met le contenu de la fonction (généralement on effectue des transformations aux variables passées en argument)return(Variabledesortie)# il s’agit du résultat que va renvoyer la fonction}#une fois la fonction créée on peut l’utiliser: nomdemafonction(varA,varB) Contrairement à d’autres languages, il n ‘y a pas de contrôle du type de variable que l’on peut utiliser. Il faudra l’inclure dans la fonction pour, par exemple, vérifier que la variable A est bien un vecteur (et pas un data.frame par exemple) Voici un exemple de fonction, il s’agit d’une fonction simple qui vaRead More →

Une variable globale est une variable qui sera accessible partout dans R. C’est-à-dire même quand vous sourcez un fichier, peu importe votre espace de nom. Il n’est pas très propre d’utiliser cette méthode, mais cela peut rendre service. varglob <<- 4 # est une variable globalevarpasglob <- 4# n’est pas globaleRead More →

Le couple save et load a l’inconvénient de forcer le nom de l’objet que vous voulez charger.Exemple : si vous avez enregistré la variable « a » qui vaut 3 grace à save, load vous donnera une variable « a » qui vaut 3, mais vous n’allez pas pouvoir charger cette variable dans un autre objet, et cela écrasera votre variable « a » d’origine. rm(list=ls(all=TRUE)) a<-5 save(a,file= »fichier ») a<-3 load(« fichier ») a # a vaut maintenant 5 , et avec load et save il n’est pas possible de charger ce 5 dans une autre variable pour « sauvegarder » votre 3 dput et dget permettent de stocker un objet dans un fichier et deRead More →