mirror of
https://app-learninglab.inria.fr/moocrr/gitlab/da84ababf0696af51bddad556af86353/mooc-rr.git
synced 2026-06-17 09:35:24 +02:00
Premier essai exo 1 module 2 R
This commit is contained in:
parent
ba33c22234
commit
7bfce02e67
1 changed files with 32 additions and 72 deletions
|
|
@ -1,6 +1,6 @@
|
|||
#+TITLE: Votre titre
|
||||
#+AUTHOR: Votre nom
|
||||
#+DATE: La date du jour
|
||||
#+TITLE: À propos du calcul de \pi
|
||||
#+AUTHOR: Louis Lacoste
|
||||
#+DATE: 2022-11-17
|
||||
#+LANGUAGE: fr
|
||||
# #+PROPERTY: header-args :eval never-export
|
||||
|
||||
|
|
@ -11,74 +11,34 @@
|
|||
#+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/lib/js/jquery.stickytableheaders.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/readtheorg/js/readtheorg.js"></script>
|
||||
|
||||
* Quelques explications
|
||||
* 1 En demandant à la lib maths
|
||||
Mon ordinateur m'indique que \pi vaut /approximativement/
|
||||
#+begin_src R :results output :session *R* :exports both
|
||||
pi
|
||||
#+end_src
|
||||
|
||||
Ceci est un document org-mode avec quelques exemples de code
|
||||
R. Une fois ouvert dans emacs, ce document peut aisément être
|
||||
exporté au format HTML, PDF, et Office. Pour plus de détails sur
|
||||
org-mode vous pouvez consulter https://orgmode.org/guide/.
|
||||
#+RESULTS:
|
||||
: [1] 3.141593
|
||||
|
||||
Lorsque vous utiliserez le raccourci =C-c C-e h o=, ce document sera
|
||||
compilé en html. Tout le code contenu sera ré-exécuté, les résultats
|
||||
récupérés et inclus dans un document final. Si vous ne souhaitez pas
|
||||
ré-exécuter tout le code à chaque fois, il vous suffit de supprimer
|
||||
le # et l'espace qui sont devant le ~#+PROPERTY:~ au début de ce
|
||||
document.
|
||||
|
||||
Comme nous vous l'avons montré dans la vidéo, on inclut du code
|
||||
R de la façon suivante (et on l'exécute en faisant ~C-c C-c~):
|
||||
|
||||
#+begin_src R :results output :exports both
|
||||
print("Hello world!")
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: [1] "Hello world!"
|
||||
|
||||
Voici la même chose, mais avec une session R (c'est le cas le
|
||||
plus courant, R étant vraiment un langage interactif), donc une
|
||||
persistance d'un bloc à l'autre (et on l'exécute toujours en faisant
|
||||
~C-c C-c~).
|
||||
|
||||
#+begin_src R :results output :session *R* :exports both
|
||||
summary(cars)
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: speed dist
|
||||
: Min. : 4.0 Min. : 2.00
|
||||
: 1st Qu.:12.0 1st Qu.: 26.00
|
||||
: Median :15.0 Median : 36.00
|
||||
: Mean :15.4 Mean : 42.98
|
||||
: 3rd Qu.:19.0 3rd Qu.: 56.00
|
||||
: Max. :25.0 Max. :120.00
|
||||
|
||||
Et enfin, voici un exemple de sortie graphique:
|
||||
#+begin_src R :results output graphics :file "./cars.png" :exports results :width 600 :height 400 :session *R*
|
||||
plot(cars)
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:./cars.png]]
|
||||
|
||||
Vous remarquerez le paramètre ~:exports results~ qui indique que le code
|
||||
ne doit pas apparaître dans la version finale du document. Nous vous
|
||||
recommandons dans le cadre de ce MOOC de ne pas changer ce paramètre
|
||||
(indiquer ~both~) car l'objectif est que vos analyses de données soient
|
||||
parfaitement transparentes pour être reproductibles.
|
||||
|
||||
Attention, la figure ainsi générée n'est pas stockée dans le document
|
||||
org. C'est un fichier ordinaire, ici nommé ~cars.png~. N'oubliez pas
|
||||
de le committer si vous voulez que votre analyse soit lisible et
|
||||
compréhensible sur GitLab.
|
||||
|
||||
Enfin, pour les prochains exercices, nous ne vous fournirons pas
|
||||
forcément de fichier de départ, ça sera à vous de le créer, par
|
||||
exemple en repartant de ce document et de le commiter vers
|
||||
gitlab. N'oubliez pas que nous vous fournissons dans les ressources de
|
||||
ce MOOC une configuration avec un certain nombre de raccourcis
|
||||
claviers permettant de créer rapidement les blocs de code R (en
|
||||
faisant ~<r~ ou ~<R~ suivi de ~Tab~).
|
||||
|
||||
Maintenant, à vous de jouer! Vous pouvez effacer toutes ces
|
||||
informations et les remplacer par votre document computationnel.
|
||||
* 2 En utilisant la méthode des aiguilles de Buffon
|
||||
Mais calculé avec la *méthode* des [[https://fr.wikipedia.org/wiki/Aiguille_de_Buffon][aiguilles de Buffon]], on obtiendrait
|
||||
comme *approximation* :
|
||||
#+begin_src R :results output :session *R* :exports both
|
||||
set.seed(42)
|
||||
N = 100000
|
||||
x = runif(N)
|
||||
theta = pi/2*runif(N)
|
||||
2/(mean(x+sin(theta)>1)
|
||||
#+end_src
|
||||
* 3 Avec un argumennt "fréquentiel" de surface
|
||||
Sinon, une méthode plus simple à comprendre et ne faisant pas
|
||||
intervenir d'appel à la fonction sinus se base sur le fait que si
|
||||
X \sim U(0,1) et Y \sim U(0,1) alors P[X^{2} + Y^{2} \leq 1] = \pi/4 (voir
|
||||
[[https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Monte-Carlo#D%C3%A9termination_de_la_valeur_de_%CF%80][méthode de Monte Carlo sur Wikipedia]]). Le code suivant illustre ce
|
||||
fait :
|
||||
#+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R*
|
||||
set.seed(42)
|
||||
N = 1000
|
||||
df = data.frame(X = runif(N), Y = runif(N))
|
||||
df$Accept = (df$X**2 + df$Y**2 <= 1)
|
||||
library
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue