---
title: "Exploration de données ouvertes avec R"
author: "François Pelletier"
format: pdf
---

## Exploration de données ouvertes avec R

* François Pelletier
* francois@francoispelletier.org
* LinuQ
* 31 octobre 2015

## Contenu de la présentation

* Présentation du logiciel statistique R
* Opérateurs, objets et types
* Exemple
* Ressources

## Présentation du logiciel statistique R

* Logiciel libre
* Langage de programmation S
* Multi-paradigme: objet, impératif et fonctionnel

## Environnement

* Ensemble de fonctions de base
* Extension avec des paquets
* Extenstion écrites souvent en C, C++ et FORTRAN

```{r}
library("MASS")
```

## Développer en R

* RStudio
* Emacs + ESS
* Eclipse + StatET

## Opérateurs de base

```{r}
# Assignation
(x <- c(1,2,3))
# Extraction
(y <- data.frame(a=x[1],b=x[2]))
# Objets
(z <- y$a)
```

## Les objets en R

Les objets dans R ont une classe, un type et une dimension

```{r}
monVecteur <- c(1,2,3,4)
class(monVecteur)
typeof(monVecteur)
dim(monVecteur)
```

```{r}
maMatrice <- matrix(nrow = 2,ncol = 2, data = monVecteur)
class(maMatrice)
typeof(maMatrice)
dim(maMatrice)
```

## Les types en R

Nous avons vu le vecteur et la matrice.

Il y a aussi les facteurs, qui permettent d'utiliser des modalités qualitatives:

```{r}
factor(c("oui","non","non","oui","nsp","oui","non"))
```

les tableaux, une extension multidimensionnelle des matrices:

```{r}
array(1:8,dim=c(2,2,2))
```

les listes, qui sont des collections d'objets de types différents:

```{r}
list("1",TRUE,c(1,2,3),function(x) x^2)
```

et les cadres de données, semblables à des tables SQL:

```{r}
data.frame(numero_membre=c(1,2,3,4),
           nom_membre=c("François","Jean","Marie","Stéphanie"),
           age_membre=c(26,53,41,32),
           stringsAsFactors = TRUE)
```

## Structures de contrôle

```{r}
# option
if(TRUE) "vrai" else "faux"
# sélection
1:5<3
(1:10)[-3:-5]
```

## Boucles

Explicites (à éviter)

```{r}
for (i in 1:2)
  print(i)
```

Implicites

```{r}
y <- sapply(3:4,print)
```

## Les fonctions

Déclaration:

```{r}
maFonction <- function(x, ...)
{
  if (x)
    sum(...)
  else
    0
}
maFonction(FALSE,1,2,3)
maFonction(TRUE,1,2,3)
```

## Quelques statistiques

```{r}
set.seed(123)
mesDonnees <- rnorm(10,mean = 5,sd = 3)
range(mesDonnees)
summary(mesDonnees)
quantile(mesDonnees,c(seq(.25,.75,.25)))
```

## Un premier graphique

```{r}
library("ggplot2")
monData <- 
  data.frame(x=seq_along(mesDonnees),
                       y=mesDonnees[order(mesDonnees)])

monGraph <- 
  ggplot(data=monData,aes(x=x,y=y)) + 
  geom_line() + 
  theme_classic()
```

```{r}
monGraph
```

## Un premier modèle

```{r}
(monModele <- lm(y~x,data=monData))
```

Sommaire du modèle

```{r}
summary(monModele)
```

Analyse de variance du modèle

```{r}
anova(monModele)
```

## Ressources

* [R Project](https://www.r-project.org/)
* [Revolution R](http://revolutionanalytics.com/)
* [CRAN R Other Docs (incluant livres en français)](https://cran.r-project.org/other-docs.html)
* [Wikibooks R Programming](https://en.wikibooks.org/wiki/R_Programming)
* [R Bloggers](http://www.r-bloggers.com/)
* [Awesome R](https://github.com/qinwf/awesome-R)
