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 →

Le test de Shapiro-Wilk teste l’hypothèse nulle selon laquelle l’échantillon est issu d’une population normalement distribuée. Si la p-value est inférieure au niveau alpha fixé (souvent 0.05) alors on rejette l’hypothèse nulle et on en conclut que l’échantillon est issu d’une population qui n’est pas normalement distribuée. Voici un exemple avec R : #on simule des échantillons#d issu d’une loi normaled<-rnorm(100, mean = 5, sd = 3)#e issu d’une loi uniformee<-runif(100, min = 2, max = 4)# on réalise un test de shapiroshapiro.test(d)qqnorm(d) #p=0.35 on ne rejette pas l’hypothèse et on vérifie avec un QQplotshapiro.test(e)qqnorm(e) # p=0.00036 on rejette l’hypothèse et on vérifie avec unRead More →

La fonction « by » est très intéressante pour éviter des boucles « for » et ainsi optimiser le code data(iris)summary(iris)by(iris[,-5],iris[,5],mean)  ou encore quant vous voulez effectuer une fonction qui n’est pas définie. by(iris[,-5],iris[,5],function(ob){#mettez ici l’opération que vous voulez faire sur le subsetreturn()})  Le problème peut être que by retourne une liste et que l’on voudrait avoir un tableau de données. C’est ce que fait la fonction do.call, elle prend une liste et effectue une action dessus (ici rbind). data(iris)summary(iris)do.call(rbind,by(iris[,-5],iris[,5],mean) )Read More →

Devant les importantes possibilités de R, il est possible et utile de lancer certaines recherches en ligne de commande pour trouver des fonctions ou des paquets associés.(NB : une connexion internet est requise) Tout d’abord, pour obtenir l’aide (en anglais) d’une fonction, il y a 2 possibilités : help(LaFonction) #LaFonction = le nom de la fonction#ou?LaFonction#Exemple avec la fonction matrix() qui permet de créer une matrice?matrix Si R vous renvoie un message d’erreur disant que « LaFonction » n’existe pas, c’est que : – soit elle n’existe effectivement pas ! Dans ce cas, vous pouvez essayer de rechercher une fonction qui permet ce que vous voulez viaRead More →

De nombreux systèmes sont modélisés par des équations différentielles ordinaires. R peut permettre de résoudre certains de ces systèmes et aussi d’estimer leurs paramètres. On prend ici l’exemple d’un modèle épidémiologique temporel SI. #edo SIXlibrary(deSolve) # on utilise deSolve#on définit le système dans une fonction six icisix<-function(t,x,parms){    with( as.list(c(parms,x)),{    rp<-ap*exp(-bp*t)    rs<-as*exp(-0.5*(log(t/gs)/bs)^2)        dI<- (rp*X*S+rs*I*S)    dS<- -(rp*X*S+rs*I*S)    res<-c(dI,dS)    list(res)})}#on définit les paramètres pour la simulation du systèmeparms<-c(ap=0.002, bp=0.0084, as=5.9e-7, bs=0.25, gs=1396, X=1, N=1010)#on crée un vecteur pour le tempstimes<-seq(0:3000)#valeurs initiales des variables (ici tous les individus sont sains au début)y<- xstart <-(c(I = 0, S = 1010))#on résout le système avec la fonction lsodaout<-as.data.frame(lsoda(xstart, times, six,Read More →

On cherche souvent à modéliser un échantillon par une loi de probabilité. A partir d’un jeu de données, comment peut-on trouver les paramètres d’une loi préalablement fixée? Plusieurs méthodes peuvent être utilisées. On prend l’exemple ici du délai entre l’infection d’un individu et la détection de cet individu comme malade.On modélise ici ce délai (en jours) par une loi de Weibull (on peut aussi essayer les lois gamma et lognormale par exemple) La méthode la plus simple est d’utiliser la fonction fitdistr du package MASS.Cette fonction permet d’ajuster de nombreuses lois par maximum de vraisemblance. Regardons ce que ça donne pour une loi Weibull. #onRead More →

Il existe plusieurs façons de faire un graphique avec deux ordonnées. En voici une qui utilise les outils graphiques de base # Données d’exemple (peu importe…)times<-seq(0,3000)p<- 0.002197451 * exp(- 0.0009076665 *times)b1<- 7.376812e-08b2<-0.2652811b3<- 1986.235s<-b1*exp(-0.5*(log(times/b3)/b2)^2)# On ouvre une nouvelle fenêtre plot.new()# On choisit les paramètres de la fenêtre, voir ?par, ici mar correspond aux marges par(mar=c(5,4,3,4))# On met le premier graphique en définissant les limites des axesplot.new()plot.window(xlim=c(0,3000),ylim=c(0,0.0022))lines(p~times,type=’l’,col=’burlywood1′,lwd=3)# on ajoute les axes et leurs légendesaxis(1)axis(2)title(xlab= »time »)title(ylab= »rp »)# On superpose le graphique avec un axe des ordonnées différent qui sera à droite du graphique (axis(4))plot.window(xlim=c(0,3000),ylim=c(0,8e-08))lines(s~times,type=’l’,col=’burlywood3′,lwd=3)axis(4)#titre du graphiquetitle(main= »force of infection »)#légende de l’ordonnée n°2mtext(« rs »,side=4,line=2.5)#on termine le graphiquebox()Read More →

Contacter l’équipe ThinkR Pour toutes questions, suggestion ou problèmes rencontrés sur le site, vous pouvez nous contacter par l’intermédiaire de ce formulaire. Si vous avez des questions sur les formations proposées par ThinkR, vous pouvez aussi nous laisser un message. Nous vous répondrons au plus vite.Read More →