9
1/28/2013 1 Compléments sur R Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 Question 1 « Au niveau du cours sur R, j'aimerai revoir les formules exactes et leurs fonctions et non des formules +- vagues comme dans les dias; les différences entre 2 formules qui peuvent ce ressembler. Si c'est possible ce serai super ». sic… Réponse 1 Réponse 1 Pas de « formules », mais bien des définitions de variables expressions boucles définitions de fonctions Réponse 1 Réponse 1 Définitions de variables D’autres types sont utiles (« data frame » ,…) D’autres possibilités de création existent… # Scalaire et numérique nb_students<-380 # Scalaire et caractère grade<-"1BMV" # Tableau (vecteurs ou matrices) cours<-c("bio","chimie","physique","stat","seminaire") v<-1:10 v [1] 1 2 3 4 5 6 7 8 9 10 c(rep(1,5),rep(2,5)) [1] 1 1 1 1 1 2 2 2 2 2

Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

1/28/2013

1

Compléments sur RCompléments sur R

Faculté de Médecine Vétérinaire

12/12/12

F. Farnir, L. Massart

Question 1Question 1

� « Au niveau du cours sur R, j'aimerai

revoir les formules exactes et leurs

fonctions et non des formules +- vagues

comme dans les dias; les différences

entre 2 formules qui peuvent ce

ressembler. Si c'est possible ce serai

super ».

◦ sic…

Réponse 1Réponse 1

� Pas de « formules », mais bien des

◦ définitions de variables

◦ expressions

◦ boucles

◦ définitions de fonctions

Réponse 1Réponse 1

� Définitions de variables

◦ D’autres types sont utiles (« data frame » ,…)

◦ D’autres possibilités de création existent…

# Scalaire et numériquenb_students<-380# Scalaire et caractèregrade<-"1BMV"# Tableau (vecteurs ou matrices)cours<-c("bio","chimie","physique","stat","seminaire")

v<-1:10v[1] 1 2 3 4 5 6 7 8 9 10c(rep(1,5),rep(2,5))[1] 1 1 1 1 1 2 2 2 2 2

Page 2: Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

1/28/2013

2

Réponse 1Réponse 1

� Définitions de variables (suite)

x<-seq(1,11,2)x[1] 1 3 5 7 9 11x*x[1] 1 9 25 49 81 121m<-matrix(x,nr=2)m

[,1] [,2] [,3][1,] 1 5 9[2,] 3 7 11matrix(x,nr=2,byrow=T)

[,1] [,2] [,3][1,] 1 3 5[2,] 7 9 11

Réponse 1Réponse 1

� Expressions

# Calculs simples10*2+1[1] 21x<-102*x+1[1] 21# Calculs (un peu) moins simplesobserves<-c(45,30,25)attendus<-c(40,40,20)chi2<-sum((observes-attendus)**2/attendus)chi2[1] 4.375# Utilisations de fonctions (comme "sum")factorial(10)/factorial(3)/factorial(7)*(0.1**3)*(0.9**7)[1] 0.05739563dbinom(3,10,0.1)[1] 0.05739563

Réponse 1Réponse 1

� Boucles

# Calcul de la somme des 100 premiers entierssomme<-0for (i in 1:100) {

somme<-somme+i}somme[1] 5050100*101/2[1] 5050# Probas binomiales cumulées: p.e. Σ B(i|p=0.1,n=50)proba<-0for (i in 0:10) {

proba<-proba+dbinom(i,prob=0.1,size=50)}proba[1] 0.9906454pbinom(10,prob=0.1,size=50)[1] 0.9906454

Réponse 1Réponse 1

� Fonctions

◦ automatisation de certains calculs

# test de χ² simple: écriture d’une fonctiontest_chi2<-function(observes,attendus) {

chi2<-sum((observes-attendus)**2/attendus)n<-length(observes)ddl<-n-1pchisq(chi2,df=ddl,lower.tail=F)

}# test de χ² simple: utilisations de la fonctiono<-c(50,30)a<-c(40,40)test_chi2(o,a)[1] 0.02534732x<-c(100,200,300)y<-c(120,195,285)test_chi2(x,y)[1] 0.1193725

Page 3: Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

1/28/2013

3

Question 2Question 2

� « Alors en ce qui me concerne, j'ai du mal à distinguer les différentes distributions binomiales (rbinom, qbinom, ...) et à quel moment les utiliser.Ce serait bien aussi si on pouvait revoir les commandes "générales" et à quel moment les utiliser (par exemple sélectionner un chiffre en particulierdans une ligne avec "x[]", les distributions binomiales, les fonctions comme seq(), ...), mais également comment poser une condition(je me rappelle que j'avais été bloquée à cet exercice : "8. Créer le vecteur w tel que w contienne les valeurs positives de z à l'aide des deux méthodes suivantes : la première en utilisant le vecteur c(FALSE,FALSE,TRUE,TRUE,TRUE), la seconde en utilisant la condition z > 0« )

Réponse 2.1Réponse 2.1

� Fonctions binomiales [r ~ B(n,p)]

◦ qbinom(q,size=n,prob=p)

� donne la valeur de r correspondant à une probacumulée q

◦ pbinom(r,size=n,prob=p)

� donne la proba cumulée de r

◦ dbinom(r, size=n,prob=p)

� donne la proba de r

◦ rbinom(m, size=n,prob=p)

� tire m valeurs de r au hasard

Réponse 2.1Réponse 2.1

� Commençons par dbinom

# Représentons la dist. binomiale pour n = 50 et p = 0.40n<-50p<-0.4x<-0:ny<-dbinom(x,prob=p,size=n)plot(x,y,main="Binomiale(n=50,p=0.40)",type="h")

Réponse 2.1Réponse 2.1

� Commençons par dbinom

Page 4: Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

1/28/2013

4

Réponse 2.1Réponse 2.1

� Ensuite, pbinom

# Voyons la binomiale cumulée pour n = 50 et p = 0.40n<-50p<-0.4x<-0:ny<-pbinom(x,prob=p,size=n)plot(x,y,main="Binomiale(n=50,p=0.40)",type="h")

Réponse 2.1Réponse 2.1

� Ensuite, pbinom

Réponse 2.1Réponse 2.1

� Ensuite, qbinom

# Calcul de r pour une proba cumulée de 0.3n<-50p<-0.4x<-0:nq<-0.3qbinom(q,prob=p,size=n)[1] 18plot(x,y,main="Binomiale(n=50,p=0.40)",type="h")abline(h=q,col="red")

Réponse 2.1Réponse 2.1

� Ensuite, qbinom

Page 5: Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

1/28/2013

5

Réponse 2.1Réponse 2.1

� Enfin, rbinom

# Echantillonnage dans la distributionn<-50p<-0.4size<-1000ech<-rbinom(size,prob=p,size=n)hist(ech,main="B(n=50,p=0.40) empirique",col="blue")

Réponse 2.1Réponse 2.1

� Enfin, rbinom

Réponse 2.1Réponse 2.1

� Signalons encore que:

◦ Le même genre de concepts existe pour

beaucoup d’autres distributions:

<d|p|q|r> <distrib>(<paramètres>)

� le préfixe d, p, q ou r a la même signification que

pour la binomiale

� <distrib> est une distribution

(binom, norm, unif, chisq, t, f, pois, hyper…)

� les <paramètres> dépendent de la distribution

choisie (voir l’aide)

Réponse 2.1Réponse 2.1

� Exemple: illustrer le fait que la variance

des moyennes d’échantillons extraits

d’une distribution normale de variance σ²

vaut σ²/n

# Taille d’échantillon (par exemple)n<-25# Paramètres de la distribution normale (par exemple)mu<-100sigma<-10# Initialisation du vecteur des moyennes d’échantillonsxbar<-rep(0,1000)# Boucle sur les échantillonsfor (i in 1:1000) {

xbar[i]<-mean(rnorm(n,mu,sigma))}# Variance des moyennes (attendu: 10²/25 = 4)var(xbar)[1] 4.503911

Page 6: Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

1/28/2013

6

Réponse 2.2Réponse 2.2

� Utilisation de « sous-structures »

◦ Il est possible de n’utiliser qu’une partie d’une

structure (vecteur, matrice) lors d’une

opération# Exemple 1: utilisation d’une partie de matricem<-matrix(1:12,nr=3)m

[,1] [,2] [,3] [,4][1,] 1 4 7 10[2,] 2 5 8 11[3,] 3 6 9 12col1<-m[,1]col1[1] 1 2 3lig2<-m[2,]lig2[1] 2 5 8 11

Réponse 2.2Réponse 2.2

� Utilisation de « sous-structures »

◦ Il est possible de n’utiliser qu’une partie d’une

structure (vecteur, matrice) lors d’une

opération

# Exemple 2: utilisation d’une partie d’un vecteurv<-1:20(v%%2)==0[1] FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE [10] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE [19] FALSE TRUEpairs<-v[(v%%2)==0]pairs

[1] 2 4 6 8 10 12 14 16 18 20impairs<-v[(v%%2)==1]impairs

[1] 1 3 5 7 9 11 13 15 17 19

# Exemple 3: utilisation d’une partie d’un vecteurmu=170std=10taille<-rnorm(1000,mean=mu,sd=std)seuil<-mu+2*stdgrands<-taille[taille>seuil]length(grands)[1] 21

Question 3Question 3

� Suite à ton message, je pensais que M.Farniraurait pu nous faire un résumé des fonctions de R (comment elles s'écrivent, à quoi elles servent...) parce que comme l'aide est en anglais et que ce n'est pas toujours forcément évident de comprendre les exemples, j'ai un peu de mal à appliquer les fonctions.Par exemple, pour faire une boucle "for", j'ai eu du mal à comprendre où il fallait mettre les "{ }" ou si il fallait mettre des virgules ou des espaces entre chaque terme de la boucle.

Réponse 3Réponse 3

� On distingue 2 types de fonctions

◦ Les « fonctions internes » (c-à-d. déjà programmée dans un des « packages » constituant R), directement utilisables

◦ Les « fonctions utilisateurs », créées par l’utilisateur pour répondre à ses besoins.

� La liste des fonctions internes est très longue, nous en avons déjà rencontré plusieurs

◦ p.e. rnorm, sum, mean, pchisq, …

Page 7: Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

1/28/2013

7

Réponse 3Réponse 3

� « Fonction utilisateur »

◦ définie par l’utilisateur selon le schéma:

<nom> <- function(<param_1>,…,<param_p>)

{ <instruction_1>; …; <instruction_n> }

� <nom> est un nom choisi (+/-) arbitrairement

� <param_i> est un paramètre de la fonction (il peut

y en avoir 0, 1 ou plusieurs)

� <instruction_j> est une expression R (il peut y en

avoir 0 (!), 1 ou plusieurs)

Réponse 3Réponse 3

� « Exemple simple »

# Calcul d’une somme de carrés# On fournit le vecteur x# La fonction (nommée "sc") retourne Σxi²sc<-function(x) {

sum(x*x)}# Utilisationa<-1:10sc(a)[1] 385y<-rnorm(10,mean=100,sd=10)d<-y-mean(y)v<-sc(d)/9sqrt(v)[1] 13.32844

Réponse 3Réponse 3

� « Exemple moins simple »

# Calcul d’un test de t (comparaison de 2 groupes)# On fournit les vecteurs x et y# La fonction retourne p(t > |t_obs|)test.t<-function(x,y) {

xb<-mean(x); yb<-mean(y);nx<-length(x); ny<-length(y); df<-nx+ny-2vx<-var(x); vy<-var(y); vc<-((nx-1)*vx+(ny-1)*vy)/(nx+ny-2);t<-abs(xb-yb)/sqrt(vc*(1/nx+1/ny));c(t=t,df=df,p=2*(1-pt(t,df)))

}# Utilisationx<-rnorm(10)y<-rnorm(20)test.t(x,y)

t df p 0.1921164 28.0000000 0.8490376

Réponse 3Réponse 3

� « Exemple plus compliqué… »

# Calcul de l’intégrale de f(x) entre x=a et x=bintegrale<-function(f,a,b) {

x<-seq(a,b,0.001)fx<-f(x)integ<-0for (i in 2:length(x)) {

integ<-integ+0.0005*(fx[i]+fx[i-1])}integ

}# Utilisationfx<-function(x) { x**2+2*x+1 }integrale(fx,0,2)[1] 8.66667# Vérification: x³/3+x²+x entre x=2 et x=0# vaut: (2³/3+2²+2) = 26/3 = 8.66667

Page 8: Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

1/28/2013

8

Question 4Question 4

� Pour le cours supplémentaire qui aura lieu le 12 décembre, je souhaiterai revoir les notions de bases de la programmation de R ainsi que des exemples.

� Ok ?

Question 4Question 4

� J'aimerais bien que Farnir nous explique avec plus de détails l'exercice 3 et ses sous-points de la séance 2-3:

Représenter graphiquement la fonction f(x,y) = 10*sin((x²+y²)1/2)/ (x²+y²)1/2

Question 4Question 4# Générer les valeurs de x et de y de -10 à +10 # (truc: penser à seq)x<-seq(-10,10,0.2)y<-seq(-10,10,0.2)# Définir une fonction calculant f(x,y)f<-function(a,b) {

v<-a**2+b**2if (v[1]==0) {

1} else {

10*sin(sqrt(v))/sqrt(v)}

}# Calculer les valeurs de f pour toutes les combinaisons# de x et de yz<-outer(x,y,f)dim(z)[1] 201 201

Question 4Question 4# Générer un graphique avec la fonction persp(x,y,z)persp(x,y,z)# Ajouter des options# theta=30persp(x,y,z,theta=30)# phi=30persp(x,y,z,theta=30,phi=30)# expand=0.5persp(x,y,z,theta=30,phi=30,expand=0.5)# col="lightblue"persp(x,y,z,theta=30,phi=30,expand=0.5,col="lightblue")# shade=0.25persp(x,y,z,theta=30,phi=30,expand=0.5,col="lightblue",shade=0.25)# ticktype="detailed"persp(x,y,z,theta=30,phi=30,expand=0.5,col="lightblue",shade=0.25,ticktype="detailed")

Page 9: Question 1 Compléments sur R - uliege.be · 1/28/2013 1 Compléments sur R Faculté de Médecine Vétérinaire 12/12/12 F. Farnir, L. Massart Question 1 «Au niveau du cours sur

1/28/2013

9