Ce qui précède correspond à une liste de questions posées par les étudiants pendant le TP (groupe B1 de 4M015 2017). Comme il y a beaucoup de possibilités pour faire des codes jolis, je trouve qu’il est plus raisonnable d’apprendre les détails petit à petit. Je sélectionne les problèmes qui sont (sans doute) intéressants pour qu’on puisse avancer ensemble.

N’hésitez pas à m’envoyer un email pour poser des questions.

misc:

Annales du TP noté:

1 Environnements de R

On travaille principalement sur Jupyter Notebook avec IRkernel. Vous pouvez aussi utiliser Rstudio. Voici un guide pour l'installation de Jupyter et IRkernel pour tous les OS.

Installation de Python et Jupyter

Si vous avez des problèmes sur la configuration, n'hésitez pas à me demander De plus, sagecloud permet de compiler les notebooks en ligne (gratuit).

1.1 Conseils pour les débudants de R

Si vous n'avez jamais suivi un cours de R, vous trouvrez dans les liens suivants deux documents par madame Tabea Rebafka pour le cours 4M015.

2 R de base

2.1 Matrices des figures

Cas simple :

par(mfrow=c(1,3))
hist(rnorm(500), breaks=30)
hist(rexp(500), breaks=30)
hist(runif(500), breaks=30)
Figure 1: Matrice d’histogrammes

Cas (un peu) compliqué:

# One figure in row 1 and two figures in row 2
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
hist(rnorm(500), breaks=30)
hist(rexp(500), breaks=30)
hist(runif(500), breaks=30)
Figure 2: Matrice d’histogrammes

2.2 lines et curve

hist(rexp(300), freq=FALSE, breaks = 40)
x<-seq(0,8,by=.1)
# ici, x est un vecteur
lines(x, dexp(x), col = 'darkred')
Figure 3: ex. de la fonction lines

hist(rexp(300), freq=FALSE, breaks = 40)
# ici, x est qqch abstrait
# pour aller plus loin  ?expression
curve(dexp(x), col = 'darkred', add=TRUE, from=.001)
Figure 4: ex. de la fonction curve

2.3 list to data.frame

a <- list()
b <- list() 
a$X <- 1
a$Y <- 2
b$X <- 3
b$Y <- 4
data.frame(do.call(rbind, list(a,b)))
##   X Y
## 1 1 2
## 2 3 4

2.4 Visualisation 3D par plotly et ggplot2

library(ggplot2)

a <- seq(-10,10,0.5)
b <- a

f <- function(x,y){
      return(exp(-.01 *((x-1)^2 + (x+1)^2 + y^2)))
}

# z est une matrice t.q. z(i,j) = f(a_i,b_j) où
# (a_i,b_j)est le maillage. 

### par plotly
# library(plotly)
# plot_ly(x = a, y = b, z = sapply(1:length(b), function (i) return(f(a,b[i]))), type = 'surface')


### par ggplot2
A = length(a)
B = length(b)
df <- data.frame(a=rep(a,times=B),b=rep(b,each=A),f_z=c(sapply(1:length(b), function (i) return(f(a,b[i])))))
ggplot(df, aes(a, b, z=f_z)) + geom_contour(bins = 60, aes(colour = ..level..))