Untitled

Zofia E Taranu

Aperçu

  1. Organisation du cours (plan du cours, page web)

  2. Les étudiants se présentent

  3. La place de l’analyse des données dans la recherche de terrain

  4. Population, échantillon, etc.

  5. Origine des structures spatiales

  6. Tests statistiques par permutations (effet de la non-normalité)

  7. Travaux pratiques

1. Organisation du cours

Organisation du cours

Travaux pratiques et travail de session :

  • Prévoir 8 à 10 heures de travail par semaine pendant les semaines de cours : Lire les chapitres et les articles recommandés

  • Faire les devoirs : Initiation au langage R

  • Travail de session (+++ heures)

Travail de session

Visera à mettre en oeuvre plusieurs méthodes d'analyse de données étudiées au cours Bio 6077, dans le cadre d’une étude réelle dans votre domaine d’expertise

Travail de session

Visera à mettre en oeuvre plusieurs méthodes d'analyse de données étudiées au cours Bio 6077, dans le cadre d’une étude réelle dans votre domaine d’expertise

  • Introduction : Présenter la problématique ainsi que les questions (écologiques, etc.)

  • Matériel : Décrire le plan d’échantillonnage ou d’expérience ainsi que les tableaux de données

  • Méthodes : Décrire en détail l'analyse de données utilisées

    Montrez que vous avez compris comment elles fonctionnent et à quoi elles servent. Expliquez la pertinence de chaque méthode utilisée. En quoi la méthode permet-elle de répondre à la question à laquelle on lui demande de répondre?

  • Résultats et une brève Discussion qui montre que vous avez compris vos résultats

  • Détails pratiques : Longueur max ~20 pages, plus (possiblement) certains résultats R en annexe

Organisation du cours

  • Enseignement : du point de vue d’une écologiste

  • Objectif : apprendre aux étudiants à analyser leurs données multivariées

Organisation du cours

  • Enseignement : du point de vue d’une écologiste

  • Objectif : apprendre aux étudiants à analyser leurs données multivariées

  • Requis des étudiants :

-- Formation de base en statistique (moyenne, variance, corrélation, notion de tests statistiques)

-- Intérêt dans problèmes écologiques, géographiques, ou autres avec données multivariables

-- Traduire la théorie et les exemples présentés à votre propre domaine d’application

-- Lire les chapitres avant les cours

2. Présentation des étudiants

3. L’analyse des données dans la recherche de terrain

L’analyse des données dans la recherche de terrain

La phase d'échantillonnage doit être planifiée pour répondre à une ou plusieurs questions précises

La qualité de l'analyse et de l'interprétation des données écologiques dépendent de la compatibilité entre les données et les méthodes numériques

Trop souvent, la collecte mal conçue de données écologiques coûteuses génère de grandes quantités de données inutilisables

L’analyse des données dans la recherche de terrain

L’analyse des données dans la recherche de terrain

Le QUOI demande une grande réflection, souvent un gros choix de variables

Une étude pilote peut suggérer des changements à la méthode d'échantillonage; 2e année nous allons échantilloner moins de variables, mais elles seront plus importantes

Le COMMENT donne une direction (où et quand)

Les données écologiques (univariées ou multivariées) peuvent être échantillonnées le long du temps ou de l'espace afin d'étudier des processus physiques ou biologiques temporels ou spatiaux

L’analyse des données dans la recherche de terrain

L’analyse des données dans la recherche de terrain

Pour l'ANALYSE, l'échantillonnage doit répondre aux exigences de la méthode numérique, par exemple, certaines méthodes sont limitées à certaines conditions particulières, comme l'espacement égal des observations d'une série temporelle

Bien que le traitement numérique est au cœur de la recherche écologique, la qualité des résultats ne peut dépasser la qualité des analyses numériques réalisées sur les données

L’analyse des données dans la recherche de terrain

Le message clé est qu'il y a une rétroaction entre l'échantillonnage et l'analyse, ce qui est une nouvelle approche

Auparavent, les écologistes échantillonnaient les données et les statisticiens les analysaient comme ils le pouvaient avec très peu de connaissance du système

Dans ce cours, vous apprendrez comment faire des analyses avancées pour aider à la réflection et l'échantillonnage

4. Population et échantillon

Population et échantillon

Les données écologiques représentent l'une des réalisations possibles d'un processus aléatoire, et en échantillonnant la population, on peut faire une inférence sur les paramètres de population de tels processus

Population et échantillon

Les données écologiques représentent l'une des réalisations possibles d'un processus aléatoire, et en échantillonnant la population, on peut faire une inférence sur les paramètres de population de tels processus

Échantillon ("sample")

Fragment d'un ensemble, prélevé pour juger de cet ensemble. Fraction d’une population statistique sur laquelle des mesures (observations) sont effectuées dans le but de connaître les propriétés de cette population

Échantillon représentatif

Échantillon qui reflète fidèlement la complexité et la composition de la population. L'échantillonnage aléatoire ainsi que l'inventaire exhaustif (recensement), sont deux façons d’obtenir un échantillon représentatif d'une population

Population et échantillon

Échantillon aléatoire

Un échantillon est aléatoire si chaque élément de la population a une probabilité connue et non nulle d'appartenir à l'échantillon. Un échantillon aléatoire est représentatif de la population dont il est extrait

Échantillonnage aléatoire simple

Prélèvement au hasard, et de façon indépendante, d'un certain nombre n d'éléments de la population statistique de N éléments. Chaque élément de la population doit avoir la même probabilité d'être sélectionné

Population et échantillon

Variable

Toute caractéristique mesurable ou observable sur un élément d'échantillonnage (var. propre) ou sur son environnement (var. associée)

Synonymes: descripteur, caractère, attribut, observation, trait, profile (en géophysique), item (dans les questionnaires de psychologie), stimulus (en étude du comportement)

Variable aléatoire

Variable dont la valeur (ou l'état) est le résultat d’un processus aléatoire. Pour un élément donné, la valeur précise prise par une variable aléatoire n'est pas connue avant qu'une observation n'ait été faite

Population et échantillon

Variable contrôlée

Variable dont la valeur est déterminée par le chercheur et connue de façon précise. En expérimentation contrôlée, il s'agit des variables dont la valeur est déterminée par l'expérimentateur qui connaît ainsi leur valeur précise, à l'erreur de manipulation près. De même, les stations et les moments d’échantillonnage spécifiés dans le plan d’échantillonnage sont déterminés à l’avance par le chercheur et leur position est connue de façon précise; il s’agit donc, au sens strict, de variables contrôlées

Variable indépendante (explicative) et dépendante (variable réponse) en régression

Ces notions seront étudiées au cours no 11 (régression)

Population et échantillon

Biais

Erreur systématique due à la méthode employée

Dispositif de mesure biaisé

Dispositif qui manque de justesse et provoque une erreur systématique dans l'estimation des valeurs (surestimation, sous-estimation)

Estimateur biaisé

Estimateur dont l’espérance mathématique n’est pas égale à la vraie valeur du paramètre

4. Origine des structures spatiales

Origine des structures spatiales

L'une des hypothèses classiques des statistiques est l'indépendance des observations. Cependant, l'expérience démontre que les organismes ne sont pas répartis aléatoirement ou uniformément dans l'environnement naturel, car des processus tels que la croissance, la dispersion, la reproduction et la mortalité, génèrent une corrélation spatiale dans les données

Origine des structures spatiales

L'une des hypothèses classiques des statistiques est l'indépendance des observations. Cependant, l'expérience démontre que les organismes ne sont pas répartis aléatoirement ou uniformément dans l'environnement naturel, car des processus tels que la croissance, la dispersion, la reproduction et la mortalité, génèrent une corrélation spatiale dans les données

L'écologie du paysage étudie la variation spatiale de la composition des espèces à travers les paysages. Cette variation est appelée la diversité bêta

La génétique du paysage étudie la variation spatiale de la structure génétique des individus ou des populations locales à travers les paysages

Origine des structures spatiales

Les écologistes veulent comprendre et modéliser la structure de la communauté spatiales [ou temporelles] par l'analyse des assemblages d'espèces observés dans les sites d'échantillonnage géoréférencés

  • Pour un écologiste, l'assemblages d'espèces est la meilleure variable réponse disponible pour estimer l'impact des changements [anthropiques] dans les écosystèmes

  • Difficulté : les assemblages d'espèces forment des tableaux de données multivariées (sites x espèces)

  • De même, les généticiens du paysage analysent des données génétiques multivariées décrivant des individus ou des populations locales observées sur des sites d'échantillonnage géoréférencés

Origine des structures spatiales

En écologie, la diversité bêta est la variation de la composition des espèces parmi les sites

  • La diversité bêta temporelle est la variation de la composition des espèces parmi les observations d'un site à travers le temps

  • De même, la diversité génétique bêta décrit la variation génétique entre les sites sur la carte

  • La diversité bêta n'est pas aléatoire. Elle est organisé dans des communautés naturelles. Elle expose des structures spatiales

Ile Callot, Finistère

Importance de l'échelle des observations

Dans la diapositive précédente, la répartition des marguerites semblait aléatoire à l'échelle de la prise de vue

Notre perception des structures spatiales varie avec l'échelle des observations

Importance de l'échelle des observations

Si on prend du recul, on voit qu'il y a une église médiévale, une haie, et un chemin de gravier, qui ensemble créent une parcelle appropriée pour les marguerites

Donc il y a une structure induite

Stonehenge, Royaume-Sud de l'Angleterre

Distribution non aléatoire et hautement organisée des organismes :

Dès qu'on réalise qu'il y a une structure spatiale on se met tout de suite à générer des hypothèses. Le pourquoi!

Stonehenge, Royaume-Sud de l'Angleterre

Nombreux piliés liés par d'autres pierres, comme un toit, qui protège le haut des piliés des intempréries (gradient d'humidité)

Deux types de processus spatiaux

Une structure spatiale peut apparaître dans une variable y parce que y dépend d'une ou plusieurs variables causales X corrélées spatialement (Modèle 1) ou parce que le processus qui a produit y est spatial et a généré une corrélation entre les points de données (Modèle 2)

Deux types de processus spatiaux

Modèle 1 - Dépendance spatiale induite : les variables explicatives X sont responsables des structures spatiales de l'assemblage d'espèces. Elles représentent le contrôle environnemental ou biotique des assemblages d'espèces, ou la dynamique historique. Les structures spatiales sont généralement à grande échelle

Si la fonction est mal spécifiée (omission des variables explicatives clés) on peut interpréter incorrectement le patron spatial des résidus comme une autocorrélation, ce qui nous amène au Modèle 2

Deux types de processus spatiaux

Modèle 2 - Dynamique de la communauté : les structures spatiales sont générées par l'assemblage d'espèces elles-mêmes, créant une autocorrélation dans les variables réponses (espèces)

Mécanismes: processus neutres tels que dérive écologique et dispersion limitée, interactions entre espèces. Les structures spatiales sont généralement fines

Deux types de processus spatiaux

Modèle 2 - Dynamique de la communauté :

Filtres successifs bloquent les espèces et différencient les assemblages d'espèces

Deux types de processus spatiaux

Modèle 2 - Dynamique de la communauté :

Brièvement, l'équation indique que les yj sont les valeurs y reliées à d'autres sites i situés dans la zone d'influence spatiale du processus générant l'autocorrélation

Deux types de processus spatiaux

Modèle 2 - Dynamique de la communauté :

La valeur au site j peut être modélisée sous la forme d'une somme pondérée (avec des poids wi) des influences d'autres sites i situés dans la zone d'influence du processus générant l'autocorrélation (grand cercle)

Deux types de processus spatiaux

Modèle 2 - Dynamique de la communauté :

Le modèle complet décrivant la valeur yj d'une variable réponse y au site j est écrit comme :

y est modélisé en fonction des variables explicatives Xj et uj, qui est le résidu spatialement autocorrélé à deux composantes : l'autocorrélation spatiale (SAj = [ \(\sum\) wi (yi - \(\mu\) y)]) dans le résiduel et une composante d'erreur aléatoire (\(\epsilon\) j)

Exemple - processus spatiaux

Nous allons maintenant voir les deux processus qui peuvent être à l'origine d'une structure spatiale (Modèle 1 et Modèle 2) dans un système simplifié constitué de 4 étangs reliés par un ruisseau avec un petit courant qui circule de gauche à droite

Nous allons voir cinq cas de complexité croissante

Exemple - processus spatiaux

Cas 1 : Il n'y a pas de relation entre les valeurs de x (fermé = indépendant), ni entre celles de y, et aucune relation entre x et y

Représentation de ce processus dans un programme de simulation: yj = \(\epsilon\)j où les \(\epsilon\)j sont iid (distribué de façon indépendante et identique)

Exemple - processus spatiaux

Cas 2 : Modèle classique de contrôle environnemental mentionné dans Modèle 1. Il n'y a pas de dépendance spatiale (corrélation spatiale) entre les valeurs de x, ni entre celles de y

Peut être implémenté dans des simulations par l'équation yj = \(\beta\)0 + \(\beta\)xxj + \(\epsilon\)j où \(\beta\)0 est une constante et la dépendance fonctionnelle de y sur x est représentée par un paramètre de régression \(\beta\)x

Exemple - processus spatiaux

Cas 3 : Autocorrélation spatiale (SA) dans y. Les flèches indiquent qu'une fraction aléatoire du zooplancton de l'étang yj-2 est transférée à l'étang yj-1, et ainsi de suite dans la chaîne d'étangs. Cette similarité dans les valeurs y due à la proximité dans l'espace est appelée autocorrélation spatiale

Ce processus peut être simulé en générant un écart aléatoire dans le premier étang, y1 = \(\epsilon\)1, et en le propagant dans la chaîne des étangs avec l'équation yj = wyyj-1 + \(\epsilon\)j

Exemple - processus spatiaux

Cas 4 : Dépendance spatiale induite. Une structure spatiale est observée dans y parce que cette variable reflète la structure spatiale autocorrélée de x par la dépendance fonctionnelle de y sur x

Deux équations sont nécessaires pour représenter ce processus dans des simulations numériques : la première décrit l'autocorrélation en x le long de la chaîne d'étangs et la seconde décrit la dépendance spatiale de y sur x

Exemple - processus spatiaux

Cas 5 : Situation souvent rencontrée dans la nature (combine les cas 3 et 4). Il existe une autocorrélation spatiale en x et y, plus une dépendance fonctionnelle de y sur x

Les équations qui décrivent ce cas seraient une autocorrélation spatiale (SA) en x et une dépendance spatiale et une autocorrélation en y (Modèles 1 et 2)

Exemple - processus spatiaux

Le défi est de comprendre quel scénario nous avons!

Espoir - le processus de x arrive souvent à différente (plus grande) échelle que celui de y

Les méthodes décrites au Chapitre 14 montreront comment démêler les deux processus, en utilisant ce fait qu'ils correspondent souvent à différentes échelles spatiales

Pause

Exemple de surfaces autocorrélées

Should the Mantel test be used in spatial analysis?   

require(RandomFields)
## Loading required package: RandomFields
## Loading required package: sp
## Loading required package: RandomFieldsUtils
## 
## Attaching package: 'RandomFields'
## The following objects are masked from 'package:base':
## 
##     abs, acosh, asin, asinh, atan, atan2, atanh, cos, cosh, exp,
##     expm1, floor, gamma, lgamma, log, log1p, log2, logb, max, min,
##     round, sin, sinh, sqrt, tan, tanh, trunc
require(graphics)
RFoptions(spConform=FALSE); RFoptions(seed=NULL) # Package Random Fields options

nx = 56
coord = 1:nx
n = nx^2
grid.coord <- expand.grid(coord, coord)
colnames(grid.coord) <- c("Easting", "Northing")
surf <- vector(mode="numeric", length=n)

# Simulate autocorrelated surface with spherical variogram model
var=1
range=5   # Valeurs de portée: {5,10,20,30,40,50,60,70}

model = RMspheric(var=var, scale=range)
Surface = RFsimulate(model = model, x=coord, y=coord, grid=TRUE)

# Plot a map of autocorrelated data using function image() of package {graphics}
image(1:nx, 1:nx, t(Surface), main="Map of response surface, Range=5", xlim=c(0,(nx+1)), ylim=c(0,(nx+1)), xlab="", ylab="", asp=1)

Exemple de surfaces autocorrélées

Porté est petite par rapport à la taille d'échantillonnage, donc petites taches pales et foncés l'une à côté de l'autre

plot of chunk unnamed-chunk-2

Cas 5 - données simulées

The consequences of spatial structure for the design and analysis of ecological field surveys   

HAUT : Une variable environnementale x est construite sur une carte qui correspond à la somme d'une structure déterministe (distribution unimodale; gauche), une variable aléatoire autocorrélée (SA), et une erreur aléatoire à chaque point (pas de structure)

Cas 5 - données simulées

The consequences of spatial structure for the design and analysis of ecological field surveys   

BAS : L'effet de x sur y est obtenu en transportant la surface x, pondéré par un coefficient de régression \(\beta\)x = 0.3, sur lequel on ajoute l'autocorrélation de la variable réponse et l'erreur aléatoire à chaque point

Cas 5 - données simulées

Lorsqu'il existe une structure spatiale significative dans les données, une hypothèse de dépendance spatiale induite (Modèle 1) peut être examinée par la régression multiple ou analyse canonique

Le partitionnement de la variation et l'ordination peuvent être utilisés pour déterminer si la structure spatiale dans les données réponse peut être expliquée par les variables environnementales (Cas 4) ou s'il reste une portion inexpliquée qui soutiendrait une hypothèse d'autocorrélation spatial dans y (Cas 5)

Tests en présence de corrélation spatiale

La corrélation spatiale dans une variable altère la capacité à effectuer des tests statistiques standards

Comme la valeur d'un site donné est influencée par les valeurs observées aux sites voisins et peut être au moins partiellement prévisible, ces valeurs ne sont pas indépendantes l'une de l'autre

Tests en présence de corrélation spatiale

L'influence de la corrélation spatiale sur les tests statistiques peut être illustrée à l'aide du coefficient de corrélation

Lorsque deux variables sont corrélées spatialement, l'intervalle de confiance du r de Pearson (qui suppose des termes d'erreur indépendants et identiquement distribués) est plus étroite que lorsque calculé correctement => on déclare donc trop souvent que les coefficients du r de Pearson sont significativement différents de zéro

On verra au dernier cours une solution pour contrôler cette structure spatiale

Degrés de liberté

Les effets de la corrélation spatiale sur les tests statistiques peuvent également être examinés du point de vue des degrés de liberté

Degrés de liberté

Les effets de la corrélation spatiale sur les tests statistiques peuvent également être examinés du point de vue des degrés de liberté

Le problème avec les données spatialement corrélées est le manque d'indépendance, c'est à dire, le fait que les nouvelles observations n'apportent pas chacune un degré de liberté complet car les valeurs dans certains sites donnent à l'observateur une connaissance préalable des valeurs à d'autres sites. Il est donc difficile de connaître la distribution de référence appropriée pour le test

Si la structure spatiale est une tendance à grande échelle, une solution est de détendancer les données. Par contre, si la corrélation spatiale fait partie du processus à l'étude, cela revient à jeter le bébé avec l'eau du bain

Il est donc préférable d'analyser les données corrélées spatialement en tant que telles (reverrons vers la fin du cours)

Tests modifiés

L'alternative pour tester la signification statistique est de modifier la méthode statistique afin de tenir compte de la corrélation spatiale, par exemple, le test t modifié de Dutilleul

Les tests corrigés reposent sur des estimations modifiées de la variance de la statistique et sur des estimations corrigées de la taille effective de l'échantillon et du nombre de degrés de liberté

Cas 5 - données simulées

Un test de signification statistique est valide si le taux de rejet de H0 n'est pas supérieur au niveau de signification \(\alpha\), pour toutes valeurs \(\alpha\), lorsque l'hypothèse nulle est vraie

Ces simulations ont donc permis de mesurer la fréquence de l'erreur de type I (qui se produit lorsque l'hypothèse nulle est rejetée alors que les données sont conformes à H0)

Cas 5 - données simulées

Cas 5 - données simulées

Pour le test t ordinaire (a), le niveau de signification est correct lorsqu'il n'y a pas d'autocorrélation ou lorsque l'autocorrélation est présente dans une des variables. L'erreur de type I est cependant gonflé lorsque l'autocorrélation est présente dans les deux variables

Le test t modifié de Dutilleul (b) compense pour l'autocorrélation spatiale et entraîne un taux correct d'erreur de type I avec tous les modèles d'échantillonnage étudiés

Les résultats indiquent que l'autocorrélation spatiale dans y et x affecte les tests classiques (coefficients de corrélation ou de régression). Mais l'autocorrélation spatiale dans une seule des deux variables n'affecte pas le test!

6. Tests statistiques par permutations

Tests statistiques

Le rôle d'un test statistique est de déterminer si un paramètre de la population (estimé à partir de l'échantillon) peut prendre la valeur donnée par H0

Déterminer si les données soutiennent H0 à un certain niveau de confiance prédéterminé

Tests statistiques

Le rôle d'un test statistique est de déterminer si un paramètre de la population (estimé à partir de l'échantillon) peut prendre la valeur donnée par H0

Déterminer si les données soutiennent H0 à un certain niveau de confiance prédéterminé

Considérons un coefficient de corrélation calculé entre deux variables; H0 est souvent que la valeur du paramètre de corrélation, $\rho $, est nulle dans la population statistique

Pour juger la validité de H0 , la seule information disponible est une estimation du coefficient de corrélation, r, obtenu à partir d'un échantillon d'objets tirés de la population statistique

Tests statistiques

Le rôle d'un test statistique est de déterminer si un paramètre de la population (estimé à partir de l'échantillon) peut prendre la valeur donnée par H0

Déterminer si les données soutiennent H0 à un certain niveau de confiance prédéterminé

Considérons un coefficient de corrélation calculé entre deux variables; H0 est souvent que la valeur du paramètre de corrélation, $\rho $, est nulle dans la population statistique

Pour juger la validité de H0 , la seule information disponible est une estimation du coefficient de corrélation, r, obtenu à partir d'un échantillon d'objets tirés de la population statistique

Un test statistique tente de répondre à la question suivante :

Étant donné H0 que $\rho $ = 0 dans la population et une corrélation estimée de, par exemple r = 0.2, est-il justifié de conclure que la différence entre 0.2 et 0 est due à la variation d'échantillonnage?

Statistique pivotale

La statistique à tester dépend du problème. Par exemple, pour déterminer si deux échantillons proviennent de la même population, ou possèdent la même moyenne, on choisit une statistique qui mesure la différence entre les deux moyennes ($\bar {X1} $ - $\bar {X2} $), ou une forme pivotale telle que la statistique t

Statistique pivotale

La statistique à tester dépend du problème. Par exemple, pour déterminer si deux échantillons proviennent de la même population, ou possèdent la même moyenne, on choisit une statistique qui mesure la différence entre les deux moyennes ($\bar {X1} $ - $\bar {X2} $), ou une forme pivotale telle que la statistique t

Une statistique pivotale a une distribution sous H0 qui reste la même pour toutes valeurs de l'effet mesuré, ici ($\bar{X1} $ - $\bar{X2} $), parce que la différence de la statistique des moyennes est divisée par l'écart type (dispersion) des deux échantillons

Dans le cas distribution non normale, on peut tester la statistique t par méthodes des permutations

Statistique pivotale

  • Pour la corrélation => t est la forme pivotale de r

  • Pour la régression simple => t est la forme pivotale de \(\beta\)1

  • Pour la régression multiple (plusieur xi) c'est surtout important d'avoir une statistique pivotale => t est la forme pivotale des \(\beta\)i

Test unilatéral ou bilatéral

Dans l'analyse de corrélation, par exemple, si on souhaite déterminer si le coefficient de corrélation ($\rho $) est significativement différent de zéro dans le sens positif ou négatif (c'est à dire, il existe une relation linéaire entre deux variables), on formule une hypothèse bilatéral

L'hypothèse alternative (H1) est $\rho $ ≠ 0

Test unilatéral ou bilatéral

Dans l'analyse de corrélation, par exemple, si on souhaite déterminer si le coefficient de corrélation ($\rho $) est significativement différent de zéro dans le sens positif ou négatif (c'est à dire, il existe une relation linéaire entre deux variables), on formule une hypothèse bilatéral

L'hypothèse alternative (H1) est $\rho $ ≠ 0

Si, par contre, l'hypothèse impose qu'une relation, si présente, ait un signe donné, on formule une hypothèse unilatérale

Par exemple, si on suppose que les pluies acides, qui abaissent le pH, ont un effet négatif sur les écosystèmes terrestres et aquatiques, dans une étude de la corrélation entre le pH et la diversité, on formulerait l'hypothèse H1 que le pH et la diversité sont positivement corrélés (le faible pH est associé à une faible diversité, H1: $\rho $ > 0)

Test unilatéral ou bilatéral

Dans un test bilatéral, on regarde dans les deux queues de la distribution statistique de référence des valeurs aussi ou plus extrêmes que la valeur observée de la statistique. Dans un test unilatéral, on ne regarde que dans la queue correspondant au signe donné par l'hypothèse alternative

Le test unilatéral fournit donc plus de puissance pour détecter un effet dans une direction en ne testant pas l'effet dans l'autre direction

Tests statistiques par permutations

Dans les tests statistiques standard, la statistique de test calculée à partir des données est référencée à l'une des distributions statistiques calculées par un logiciel informatique approprié (par exemple, distributions z, t, F et $\chi $2)

Cependant, cela ne peut être fait que si certaines hypothèses sont remplies par les données...

Tests statistiques par permutations

Conditions d’application du test t paramétrique

  • La variable doit être quantitative

  • Échantillons tirés de populations à distribution normale

  • Échantillons tirés de populations dont les variances sont égales

  • Indépendance des observations. Cela signifie que la valeur d’une observation ne doit aucunement influencer la valeur d’une autre observation. Cette condition est violée, en particulier, dans le cas d’observations effectuées dans l’espace géographique ou au cours du temps: de telles observations sont souvent autocorrélées

Tests statistiques par permutations

Si ces conditions, tel que l'hypothèse de normalité, ne sont pas remplies, une méthode de permutation doit être utilisée pour effectuer le test t ou autres

  • Par contre, cela ne résout pas le problème d'autocorrelation; seulement de distribution (normale ou pas)

Tests statistiques par permutations

Si ces conditions, tel que l'hypothèse de normalité, ne sont pas remplies, une méthode de permutation doit être utilisée pour effectuer le test t ou autres

  • Par contre, cela ne résout pas le problème d'autocorrelation; seulement de distribution (normale ou pas)

  • La méthode ne résout pas non plus les problèmes liés à l'hypothèse soumise à un test

Par exemple, pour les différences entre les moyennes de l'échantillon (deux groupes: test t, plusieurs groupes: test F de l'ANOVA), deux hypothèses nulles sont testées simultanément : l'égalité des moyennes et l'égalité des variances

Le test par permutation ne permet pas de tester sans ambiguïté l'égalité des moyennes sans vérifier d'abord l'égalité des variances en utilisant un autre test plus spécifique (deux groupes: rapport F, plusieurs groupes: le test de Bartlett de l'égalité des variances)

Tests statistiques par permutations

Dans les tests de permutation (ou randomisation), au lieu de comparer la valeur réelle d'une statistique de test à une distribution statistique standard, la distribution de référence est générée à partir des données elles-mêmes

Fournit une approche efficace pour tester lorsque les données ne sont pas conformes aux hypothèses de distribution de la méthode statistique que l'on veut utiliser (par exemple, la normalité)

Tests statistiques par permutations

A titre d'exemple, considérons la situation où l'on doit tester l'importance d'un coefficient de corrélation entre deux variables, x1 et x2

Méthode de permuation

  1. Permuter au hasard les valeurs de x1 tout en maintenant les valeurs de x2 fixées (ou l'inverse, ce qui produirait également un appariement aléatoire de valeurs)

  2. Recalculer la valeur du coefficient de corrélation et la statistique t associée pour les vecteurs paires aléatoirement x1 et x2, obtenant une valeur t*

  3. Répéter un grand nombre de fois (999 ou 9999 fois). Les différentes permutations produisent un ensemble de valeurs t* obtenues sous H0

  4. Ajouter à ceux-ci la valeur t calculée pour les vecteurs non randomisés. Ensemble, elles forment une estimation de la distribution d'échantillonnage de t sous H0, qui sera utilisée comme distribution de référence

Tests statistiques par permutations

Méthode de permuation

5. Comparer la valeur observée de la statistique t à la distribution de référence

Si la valeur observée de t est typique des valeurs obtenues sous l'hypothèse nulle (ce qui indique qu'il n'y a pas de relation entre x1 et x2), H0 ne peut pas être rejeté. Si elle est trop extrême, H0 est rejetée

Tests statistiques par permutations

Méthode de permuation

5. Comparer la valeur observée de la statistique t à la distribution de référence

Si la valeur observée de t est typique des valeurs obtenues sous l'hypothèse nulle (ce qui indique qu'il n'y a pas de relation entre x1 et x2), H0 ne peut pas être rejeté. Si elle est trop extrême, H0 est rejetée

6. Calculer la valeur p associée, qui est la proportion de valeurs dans la distribution référence qui sont aussi ou plus extrêmes que la valeur observée de la statistique t

Tests statistiques par permutations

Comparison of permutation methods for the partial correlation and partial Mantel tests   

Tests statistiques par permutations

(a) présente des taux d'erreur empiriques de type I à $\alpha $ = 0,05 pour le coefficient de corrélation r(x1x2) (test t paramétrique et test par permutation) obtenus à l'aide de simulations où $\rho $(x1x2) étaient 0 dans les populations statistiques

Les tests de permutation ont toujours une erreur de type I correcte, quelle que soit la forme de la répartition des erreurs. Cependant, pour les données non normales, le test paramétrique t a une erreur de type I gonflée

Exemple numérique

Considérons le cas suivant de deux variables observées sur 10 objets :

Ces valeurs ont été tirées au hasard à partir d'une distribution normale bivariée corrélée positivement

Exemple numérique

Les statistiques et les probabilités associées pour cette paire de variables sont :

r = 0.70156, t = 2.78456, n = 10 : prob (unilatéral) = 0.0119, prob (bilatéral) = 0.0238

Exemple numérique

Pour le test par permuation, Il y a 10! = 3.6288 × 106 permutations possibles des 10 valeurs de x1 (ou x2). Ici, 999 de ces permutations ont été générées

Les valeurs calculées pour la statistique de test (t) entre x1 permuté et x2 fixe ont la distribution indiquée ci-dessous; La valeur observée, t = 2.78456, a été ajoutée à cette distribution

Exemple numérique

Les probabilités associées à ces distributions pour les tests unilatéral et bilatéral sont

Test unilatéral [H0 : $\rho $= 0; H1: $\rho $ > 0]: prob (t* ≥ 2.78456) = (1 + 17)/1000 = 0.018 Test bilatéral [H0 : $\rho $= 0; H1: $\rho $ ≠ 0]: prob(|t*| ≥ 2.78456) = (8 + 0 + 1 + 17)/1000 = 0.026

(les résultats en utilisant la statistique r seraient les mêmes)

Exemple de fonction permutationnelle

La fonction corPerm1 réalise, par permutation, un test bilatéral du coefficient de corrélation de Pearson entre deux vecteurs. La statistique du test est r :

Paramètres de la fonction: x, y (les deux vecteurs de données), et nperm = nombre de permutations

corPerm1 <- function(x, y, nperm=999) {
r.ref <- cor(x,y)
nGT <- 1
for(i in 1:nperm){
   y.perm <- sample(y)
   r.perm <- cor(x,y.perm)
   if( abs(r.perm) >= abs(r.ref) ) nGT <- nGT+1
   }
P <- nGT/(nperm+1)
cat('\nPearson correlation (two-tailed test)','\n')
cat('r =',r.ref,'\n')
cat('Prob(',nperm,'permutations) =',P,'\n','\n')
return(list( Correlation=r.ref, No.perm=nperm, P.perm=P ))
}

Exemple de fonction permutationnelle

Exemple: tester la corrélation entre deux vecteurs de nombres aléatoires N (0,1)

x <- rnorm(50,0,1); y <- rnorm(50,0,1)
source("corPerm.R")
## Warning in file(filename, "r", encoding = encoding): cannot open file
## 'corPerm.R': No such file or directory
## Error in file(filename, "r", encoding = encoding): cannot open the connection
cor.out = corPerm1(x, y, 999); cor.out # Comparez le résultat à : cor.test(x,y)
## 
## Pearson correlation (two-tailed test) 
## r = -0.1532992 
## Prob( 999 permutations) = 0.322 
## 
## $Correlation
## [1] -0.1532992
## 
## $No.perm
## [1] 999
## 
## $P.perm
## [1] 0.322

Exemple de fonction permutationnelle

La fonction corPerm2 realise aussi, par permutation, un test bilateral du coefficient de correlation de Pearson entre deux vecteurs, mais la statistique du test est maintenant t (au lieu de r) :

corPerm2 <- function(x,y,nperm=999) {
temp <- cor.test(x,y) # The object "temp" produced by "cor.test" contains 9 elements
r.ref <- temp$estimate  # correlation r
t.ref <- temp$statistic # statistique t
nGT <- 1
for(i in 1:nperm) {
   y.perm  <-  sample(y)
   temp.perm <- cor.test(x,y.perm)
   t.perm <- temp.perm$statistic
   if( abs(t.perm) >= abs(t.ref) ) nGT <- nGT+1
   }
P <- nGT/(nperm+1)
cat('\nPearson correlation (two-tailed test)','\n')
cat('r =',r.ref,'\n')
cat('t =',t.ref,'\n')
cat('d.f. =',temp$parameter,'\n')
cat('95% C.I. of r = [',temp$conf.int[1],' ',temp$conf.int[2],']','\n')
cat('Prob(param) =',temp$p.value,'\n')
cat('Prob(',nperm,'permutations) =',P,'\n','\n')
return(list(Correlation=r.ref, tStat=t.ref, No.perm=nperm, P.perm=P))
}

Exemple de fonction permutationnelle

x <- rnorm(50,0,1); y <- rnorm(50,0,1)
source("corPerm.R")
## Warning in file(filename, "r", encoding = encoding): cannot open file
## 'corPerm.R': No such file or directory
## Error in file(filename, "r", encoding = encoding): cannot open the connection
cor.out = corPerm2(x, y, 999); cor.out # Comparez le résultat à : cor.test(x,y)
## 
## Pearson correlation (two-tailed test) 
## r = 0.008528809 
## t = 0.05909147 
## d.f. = 48 
## 95% C.I. of r = [ -0.270461   0.2861971 ] 
## Prob(param) = 0.9531246 
## Prob( 999 permutations) = 0.951 
## 
## $Correlation
##         cor 
## 0.008528809 
## 
## $tStat
##          t 
## 0.05909147 
## 
## $No.perm
## [1] 999
## 
## $P.perm
## [1] 0.951

Exemple de fonction permutationnelle

La fonction corPerm3 realise, par permutation, un test du coefficient de correlation de Pearson entre deux vecteurs. La statistique du test est t :

Test unilateral à gauche : tail = -1; Test unilateral à droite : tail = 1; Test bilateral : tail = 2

corPerm3 <- function(x,y,nperm=999,tail=2) {
if((tail != -1) & (tail != 1) & (tail != 2)) 
   {stop ("Incorrect value for parameter 'tail'")}
if(tail == -1) temp <- cor.test(x, y, alternative = "less")
if(tail ==  1) temp <- cor.test(x, y, alternative = "greater")
if(tail ==  2) temp <- cor.test(x, y, alternative = "two.sided")
r.ref <- temp$estimate
t.ref <- temp$statistic

nGT <- 1
for(i in 1:nperm)
   {
   y.perm  <-  sample(y)
   temp.perm <- cor.test(x,y.perm)
   t.perm <- temp.perm$statistic
   if(tail == -1) if(t.perm <= t.ref) nGT <- nGT+1
   if(tail ==  1) if(t.perm >= t.ref) nGT <- nGT+1
   if(tail ==  2) if( abs(t.perm) >= abs(t.ref) ) nGT <- nGT+1
   }
P <- nGT/(nperm+1)
cat('\nPearson correlation','\n')
if(tail == -1) cat('one-tailed test, left-hand tail','\n')
if(tail ==  1) cat('one-tailed test, right-hand tail','\n')
if(tail ==  2) cat('two-tailed test','\n')
cat('r =',r.ref,'\n')
cat('t =',t.ref,'\n')
cat('d.f. =',temp$parameter,'\n')
cat('95% C.I. of r = [',temp$conf.int[1],' ',temp$conf.int[2],']','\n')
cat('Prob(param) =',temp$p.value,'\n')
cat('Prob(',nperm,'permutations) =',P,'\n','\n')
return(list(Correlation=r.ref, tStat=t.ref, No.perm=nperm, P.perm=P))
}

Exemple de fonction permutationnelle

x <- rnorm(50,0,1); y <- rnorm(50,0,1)
source("corPerm.R")
## Warning in file(filename, "r", encoding = encoding): cannot open file
## 'corPerm.R': No such file or directory
## Error in file(filename, "r", encoding = encoding): cannot open the connection
# one-tailed test in the right-hand tail
cor.out = corPerm3(x, y, 999, 1); cor.out # Comparez le résultat à : cor.test(x, y, alternative="greater")
## 
## Pearson correlation 
## one-tailed test, right-hand tail 
## r = -0.04966357 
## t = -0.3445044 
## d.f. = 48 
## 95% C.I. of r = [ -0.2817952   1 ] 
## Prob(param) = 0.6340141 
## Prob( 999 permutations) = 0.632 
## 
## $Correlation
##         cor 
## -0.04966357 
## 
## $tStat
##          t 
## -0.3445044 
## 
## $No.perm
## [1] 999
## 
## $P.perm
## [1] 0.632

Exemple de fonction permutationnelle

La fonction corPerm4 realise, par permutation, un test du coefficient de correlation de Pearson entre deux vecteurs. La statistique du test est t. Un histogramme des statistiques t est aussi produit après chaque tranche de permutations. Une ligne verticale rouge indique la position de la vraie valeur (t.ref) dans l'histogramme

Paramètres de la fonction : x, y, nperm, slice (nombre de nouvelles permutations avant qu'un histogramme ne soit produit. Par défaut: 50), tail (unilateral ou bilateral)

corPerm4 <- function(x,y,nperm=499,slice=50,tail=2){
    permute.t <- function(y, x, nperm, t.vec)
    {
    for(i in 1:nperm)
        {
        y.perm  <-  sample(y)
        temp.perm <- cor.test(x,y.perm)
        t.perm <- temp.perm$statistic
        t.vec <- c(t.vec, t.perm)
        }
    t.vec
    }

    permute.test <- function(t.vec, nper, nperm.cum, tail, nGT, range.t, step)
    {
    t.ref <- t.vec[1]
    for(i in (nperm.cum-nper+1):nperm.cum)
       {
       if(tail == -1) if(t.vec[i] <= t.ref) nGT <- nGT+1
       if(tail ==  1) if(t.vec[i] >= t.ref) nGT <- nGT+1
       if(tail ==  2) if( abs(t.vec[i]) >= abs(t.ref) ) nGT <- nGT+1
        }
    P <- nGT/(nperm.cum+1)
    cat('Prob(',nperm.cum,'permutations) =',P,'\n','\n')
    hist(t.vec[1:nperm.cum], breaks=seq(range.t[1],range.t[2],step), xlim=range.t)
    abline(v=t.ref, col="red")
    list(nGT=nGT, P.perm=P)
    }

x <- as.matrix(x)
y <- as.matrix(y)
n <- nrow(x)

if((tail != -1) & (tail != 1) & (tail != 2)) 
   {stop ("Incorrect value for parameter 'tail'")}
if(tail == -1) temp <- cor.test(x, y, alternative = "less")
if(tail ==  1) temp <- cor.test(x, y, alternative = "greater")
if(tail ==  2) temp <- cor.test(x, y, alternative = "two.sided")
r.ref <- temp$estimate
t.ref <- temp$statistic
t.vec <- t.ref
cat('\nPearson correlation','\n')
if(tail == -1) cat('one-tailed test, left-hand tail','\n')
if(tail ==  1) cat('one-tailed test, right-hand tail','\n')
if(tail ==  2) cat('two-tailed test','\n')
cat('r =',r.ref,'\n')
cat('t =',t.ref,'\n')
cat('d.f. =',temp$parameter,'\n')
cat('95% C.I. of r = [',temp$conf.int[1],' ',temp$conf.int[2],']','\n')
cat('Prob(param) =',temp$p.value,'\n','\n')

# Compute the vector of t statistics under permutation. The first value is t.ref
t.vec <- permute.t(y, x, nperm, t.vec)
range.t <- range(t.vec)
step <- (range.t[2]-range.t[1])/10

# Produce the histograms
nGT <- 1
nper <- (slice-1)
nperm.cum <- nper
res <- permute.test(t.vec,nper,nperm.cum,tail,nGT,range.t,step)
nGT <- res$nGT

while(nperm.cum < nperm) {
    cat("Another group of",slice,"permutations? 'Y' = yes, 'N' = no","\n") 
    Go <- toupper(scan(file="",what="character",nlines=1,quiet=T))
if((Go == "Y") | (Go == "y")) {
    nper <- slice
    nperm.cum <- nperm.cum+nper
    res <- permute.test(t.vec,nper,nperm.cum,tail,nGT,range.t,step)
    nGT <- res$nGT
    } else {
    return(list(Correlation=r.ref, t.stat=t.ref, No.perm=nperm.cum, P.perm=res$P.perm, t.vec=t.vec))
    }
}

return(list(Correlation=r.ref, t.stat=t.ref, No.perm=nperm.cum, P.perm=res$P.perm, t.vec=t.vec))
}

Exemple de fonction permutationnelle

x <- rnorm(50,0,1); y <- rnorm(50,0,1)
source("corPerm4.R")
## Warning in file(filename, "r", encoding = encoding): cannot open file
## 'corPerm4.R': No such file or directory
## Error in file(filename, "r", encoding = encoding): cannot open the connection
# one-tailed test in the right-hand tail
cor.out = corPerm4(x,y,nperm=499,tail=1); cor.out # Compare the results to:  cor.test(x, y, alternative="greater")
## 
## Pearson correlation 
## one-tailed test, right-hand tail 
## r = -0.1671941 
## t = -1.174893 
## d.f. = 48 
## 95% C.I. of r = [ -0.3873728   1 ] 
## Prob(param) = 0.8770834 
##  
## Prob( 49 permutations) = 0.88 
## 
## Another group of 50 permutations? 'Y' = yes, 'N' = no
## Error in if ((Go == "Y") | (Go == "y")) {: argument is of length zero

plot of chunk unnamed-chunk-10

## $Correlation
##         cor 
## -0.04966357 
## 
## $tStat
##          t 
## -0.3445044 
## 
## $No.perm
## [1] 999
## 
## $P.perm
## [1] 0.632

Exemple de fonction permutationnelle

## Warning in file(filename, "r", encoding = encoding): cannot open file
## 'corPerm4.R': No such file or directory
## Error in file(filename, "r", encoding = encoding): cannot open the connection
## Error in if ((Go == "Y") | (Go == "y")) {: argument is of length zero

plot of chunk unnamed-chunk-11

Exemple de fonction permutationnelle

One-tailed test examples using the mite data

library(vegan)
## Warning: package 'vegan' was built under R version 3.2.3
## Loading required package: permute
## Loading required package: lattice
## This is vegan 2.3-4
source("corPerm4.R")
## Warning in file(filename, "r", encoding = encoding): cannot open file
## 'corPerm4.R': No such file or directory
## Error in file(filename, "r", encoding = encoding): cannot open the connection
data(mite)
group.1 <- c(1,2,4:8,10:15,17,19:22,24,26:30)
group.2 <- c(3,9,16,18,23,25,31:35)
mite.hel.1 <- decostand(mite[,group.1], "hel")
mite.hel.2 <- decostand(mite[,group.2], "hel")
# cor(mite.hel.2)
res.1.2 = corPerm4(mite.hel.2[,1],mite.hel.2[,2], nperm=499, tail=-1)
## 
## Pearson correlation 
## one-tailed test, left-hand tail 
## r = -0.1584339 
## t = -1.323192 
## d.f. = 68 
## 95% C.I. of r = [ -1   0.04114775 ] 
## Prob(param) = 0.09510184 
##  
## Prob( 49 permutations) = 0.18 
## 
## Another group of 50 permutations? 'Y' = yes, 'N' = no
## Error in if ((Go == "Y") | (Go == "y")) {: argument is of length zero

plot of chunk unnamed-chunk-12

res.2.5 = corPerm4(mite.hel.2[,2],mite.hel.2[,5], nperm=499, tail=1)
## 
## Pearson correlation 
## one-tailed test, right-hand tail 
## r = 0.1899019 
## t = 1.594995 
## d.f. = 68 
## 95% C.I. of r = [ -0.008715242   1 ] 
## Prob(param) = 0.05767548 
##  
## Prob( 49 permutations) = 0.1 
## 
## Another group of 50 permutations? 'Y' = yes, 'N' = no
## Error in if ((Go == "Y") | (Go == "y")) {: argument is of length zero

plot of chunk unnamed-chunk-12

res.2.6 = corPerm4(mite.hel.2[,2],mite.hel.2[,6], nperm=499, tail=1)
## 
## Pearson correlation 
## one-tailed test, right-hand tail 
## r = 0.3385848 
## t = 2.967303 
## d.f. = 68 
## 95% C.I. of r = [ 0.1503929   1 ] 
## Prob(param) = 0.002071922 
##  
## Prob( 49 permutations) = 0.04 
## 
## Another group of 50 permutations? 'Y' = yes, 'N' = no
## Error in if ((Go == "Y") | (Go == "y")) {: argument is of length zero

plot of chunk unnamed-chunk-12

Travaux pratiques

Travaux pratiques

Introduction à R   

Travaux pratiques en R => p. 1-4, 49-50   

Atelier R du CSBQ   

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

# Importer le fichier 'Merle' dans l'objet de type 'data frame' 'merle' :
merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
# Vérification pour savoir si les données ont été lues correctement: 
str(merle)
## Error in str(merle): object 'merle' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

# Saisie des valeurs de la première colonne: la longueur de l'aile. La longueur est recopiée dans l'objet 'aile':
merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
merle$aile
## Error in eval(expr, envir, enclos): object 'merle' not found
aile = merle[,1]
## Error in eval(expr, envir, enclos): object 'merle' not found
aile # Vérification du contenu de l'objet 'aile' 
## Error in eval(expr, envir, enclos): object 'aile' not found
is.vector(aile)
## Error in is.vector(aile): object 'aile' not found
is.matrix(aile)
## Error in eval(expr, envir, enclos): object 'aile' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

# Transformation du vecteur 'aile' en un objet de type 'matrix' en cas de besoin:
merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile.mat = as.matrix(aile)
## Error in as.matrix(aile): object 'aile' not found
# Vérification du contenu de la matrice 'aile.mat' 
is.vector(aile.mat)
## Error in is.vector(aile.mat): object 'aile.mat' not found
is.matrix(aile.mat)
## Error in eval(expr, envir, enclos): object 'aile.mat' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

# 'aile' et 'aile.mat' sont-ils des objets R du même type ? 
merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile = merle[,1]; aile.mat = as.matrix(aile)
## Error in eval(expr, envir, enclos): object 'merle' not found
## Error in as.matrix(aile): object 'aile' not found
class(aile)
## Error in eval(expr, envir, enclos): object 'aile' not found
class(aile.mat)
## Error in eval(expr, envir, enclos): object 'aile.mat' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile = merle[,1]
## Error in eval(expr, envir, enclos): object 'merle' not found
# Calcul de la moyenne des longueurs d'aile (commande 'mean'):
moyenne = mean(aile) # ou : moyenne = mean(aile.mat) 
## Error in mean(aile): object 'aile' not found
moyenne # Vérification de la valeur de la moyenne
## Error in eval(expr, envir, enclos): object 'moyenne' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile = merle[,1]
## Error in eval(expr, envir, enclos): object 'merle' not found
# Calcul de la médiane des longueurs d'aile (commande 'median'):
mediane = median(aile) # ou : mediane = median(aile.mat) 
## Error in median(aile): object 'aile' not found
mediane # Vérification de la valeur de la médiane
## Error in eval(expr, envir, enclos): object 'mediane' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile = merle[,1]
## Error in eval(expr, envir, enclos): object 'merle' not found
variance = var(aile) # Calcul de la variance des longueurs d'aile (commande 'var')
## Error in is.data.frame(x): object 'aile' not found
variance # Vérification de la variance => ou : variance2 = var(aile.mat); variance2; is.vector(variance2); is.matrix(variance2)
## Error in eval(expr, envir, enclos): object 'variance' not found
is.vector(variance) 
## Error in is.vector(variance): object 'variance' not found
is.matrix(variance)
## Error in eval(expr, envir, enclos): object 'variance' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile = merle[,1]; aile.mat = as.matrix(aile)
## Error in eval(expr, envir, enclos): object 'merle' not found
## Error in as.matrix(aile): object 'aile' not found
# Calcul de la taille de l'échantillon 'n': 
n = length(aile); n
## Error in eval(expr, envir, enclos): object 'aile' not found
## [1] 3136
n1 = nrow(aile.mat); n1
## Error in nrow(aile.mat): object 'aile.mat' not found
## Error in eval(expr, envir, enclos): object 'n1' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile = merle[,1]; aile.mat = as.matrix(aile)
## Error in eval(expr, envir, enclos): object 'merle' not found
## Error in as.matrix(aile): object 'aile' not found
# Calcul du coefficient d'asymétrie A3
# Calcul préparatoire: estimation non biaisée du moment d'ordre 3, k3:
k3 = (n*sum((aile.mat-mean(aile.mat))^3))/((n-1)*(n-2))
## Error in eval(expr, envir, enclos): object 'aile.mat' not found
k3 # Vérification de k3 
## Error in eval(expr, envir, enclos): object 'k3' not found
# Calcul du coefficient d'asymétrie, noté A3:
A3 = k3/((sqrt(variance))^3)
## Error in eval(expr, envir, enclos): object 'k3' not found
A3 # Vérification de A3
## Error in eval(expr, envir, enclos): object 'A3' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile = merle[,1]; aile.mat = as.matrix(aile)
## Error in eval(expr, envir, enclos): object 'merle' not found
## Error in as.matrix(aile): object 'aile' not found
# Calcul du coefficient d'aplatissement A4
# Calcul préparatoire: estimation non biaisée du moment d'ordre 4, k4, et vérification:
k4 = (n*(n+1)*(sum((aile.mat-mean(aile.mat))^4))-3*(n-1)*((sum((aile.mat-mean(aile.mat) )^2))^2))/((n-1)*(n-2)*(n-3))
## Error in eval(expr, envir, enclos): object 'aile.mat' not found
k4
## Error in eval(expr, envir, enclos): object 'k4' not found
# Calcul du coefficient d'aplatissement, noté A4, et vérification: 
A4 = k4/((sqrt(variance))^4)
## Error in eval(expr, envir, enclos): object 'k4' not found
A4
## Error in eval(expr, envir, enclos): object 'A4' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile = merle[,1]
## Error in eval(expr, envir, enclos): object 'merle' not found
# Calcul de l'étendue de la variation (ou plage de variation):
etendue = max(aile)-min(aile) # ou : plage = range(aile); plage
## Error in is(list(...)[[1]], ZF_MODEL): object 'aile' not found
etendue
## Error in eval(expr, envir, enclos): object 'etendue' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

merle <- read.table("Merle.txt")
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
aile = merle[,1]
## Error in eval(expr, envir, enclos): object 'merle' not found
# Calcul de l'écart type, noté sx: 
sx = sd(aile)
## Error in is.data.frame(x): object 'aile' not found
sx
## Error in eval(expr, envir, enclos): object 'sx' not found

Travaux pratiques

merle <- read.table("Merle.txt"); aile = merle[,1]
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
## Error in eval(expr, envir, enclos): object 'merle' not found
hist(merle[,1]) # Tracer un histogramme 
## Error in hist(merle[, 1]): object 'merle' not found

Travaux pratiques

merle <- read.table("Merle.txt"); aile = merle[,1]
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
## Error in eval(expr, envir, enclos): object 'merle' not found
par(mai = c(1.5, 0.75, 0.5, 0.5)) # Modifie les marges du graphique. Voir ?par
# On peut spécifier les détails de présentation de l’histogramme
hist(merle[,1], breaks = "Sturge", freq = TRUE, right =FALSE, main = NULL, xlab = NULL, ylab = NULL, axes = TRUE) 
## Error in hist(merle[, 1], breaks = "Sturge", freq = TRUE, right = FALSE, : object 'merle' not found

Travaux pratiques

merle <- read.table("Merle.txt"); aile = merle[,1]
## Warning in file(file, "rt"): cannot open file 'Merle.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
## Error in eval(expr, envir, enclos): object 'merle' not found
par(mai = c(1.5, 0.75, 0.5, 0.5))
hist(merle[,1], breaks = "Sturge", freq = TRUE, right =FALSE, main = NULL, xlab = NULL, ylab = NULL, axes = TRUE) 
## Error in hist(merle[, 1], breaks = "Sturge", freq = TRUE, right = FALSE, : object 'merle' not found
# Identifiez les axes et ajoutez un titre
mtext(text="Frequence", side=2, line=3, cex=1, font=1)
## Error in mtext(text = "Frequence", side = 2, line = 3, cex = 1, font = 1): plot.new has not been called yet
mtext(text="Longueur de l'aile (mm)",side=1, line=3,font=1)
## Error in mtext(text = "Longueur de l'aile (mm)", side = 1, line = 3, font = 1): plot.new has not been called yet
mtext(text="Histogramme de la longueur de l'aile", side=1, line=6, cex=1.5, font=1)
## Error in mtext(text = "Histogramme de la longueur de l'aile", side = 1, : plot.new has not been called yet

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

# Reprendre l'exercice pour la variable Masse(kg), Hauteur(cm) ou Longueur(cm) du fichier 'Ours.txt'. 

# Attention à la lecture de ce fichier de données !
# Essayez les commandes suivantes pour les données d'ours : 
ours <- read.table("ours.txt")
## Warning in file(file, "rt"): cannot open file 'ours.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
str(ours)
## Error in str(ours): object 'ours' not found

Travaux pratiques

ours <- read.table("ours.txt")
## Warning in file(file, "rt"): cannot open file 'ours.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
plot(ours)
## Error in plot(ours): error in evaluating the argument 'x' in selecting a method for function 'plot': Error: object 'ours' not found

Travaux pratiques

1. Calcul des statistiques de base en langage R: exemple Merle

# Solution :
ours <- read.table("ours.txt",header=T)
## Warning in file(file, "rt"): cannot open file 'ours.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
str(ours) # ou: head(ours)
## Error in str(ours): object 'ours' not found

Travaux pratiques

## Warning in file(file, "rt"): cannot open file 'ours.txt': No such file or
## directory
## Error in file(file, "rt"): cannot open the connection
## Error in plot(ours): error in evaluating the argument 'x' in selecting a method for function 'plot': Error: object 'ours' not found

Travaux pratiques

Attribution de valeurs aux paramètres d’une fonction R

# Les fonctions R peuvent avoir plusieurs paramètres (voir par exemple ?read.table ou encore ?hist) 
# et ces paramètres ont souvent des valeurs par défaut. Par exemple, la fonction
add3 <- function(a = 0, b = 10, c = -5) a+b+c
# possède trois paramètres, a, b et c, qui représentent des nombres. On a attribué des valeurs par défaut à ces paramètres : 
# a = 0, b = 10, c = –5. La fonction additionne les trois nombres. Exemple :
add3() # donne comme résultat la somme des trois valeurs par défaut.
## [1] 5
# On peut remplacer les valeurs par défaut par des valeurs fournies par l’utilisateur. 
# Exemple de remplacement selon la position des paramètres :
add3(2, 4, 6) # L’ordre détermine l’attribution des valeurs aux paramètres
## [1] 12

Travaux pratiques

Attribution de valeurs aux paramètres d’une fonction R

# Les fonctions R peuvent avoir plusieurs paramètres (voir par exemple ?read.table ou encore ?hist) 
# et ces paramètres ont souvent des valeurs par défaut. Par exemple, la fonction
add3 <- function(a = 0, b = 10, c = -5) a+b+c

# Même résultat si on fournit des valeurs aux paramètres a, b et c de façon explicite : 
add3(a=2, b=4, c=6) # ou encore : add3(b=4, c=6, a=2)
## [1] 12

Travaux pratiques

Attribution de valeurs aux paramètres d’une fonction R

# Les fonctions R peuvent avoir plusieurs paramètres (voir par exemple ?read.table ou encore ?hist) 
# et ces paramètres ont souvent des valeurs par défaut. Par exemple, la fonction
add3 <- function(a = 0, b = 10, c = -5) a+b+c

# 1. Attribution selon la position. Quelle valeur prendra c ? 
add3(2, 4)
## [1] 1
# 2. Attribution explicite d’une valeur à b. Quelle valeur prendront a et c ? 
add3(b=7)
## [1] 2

Travaux pratiques

17. Utilisation de R comme calculette

# Addition simple
1+1
## [1] 2
# Racine carrée d’un nombre
sqrt(10)
## [1] 3.162278
# Créer une série de nombres
seq(0,5,length=6)
## [1] 0 1 2 3 4 5

Travaux pratiques

# Générer un graphique
plot(sin(seq(0,2*pi,length=100)))

plot of chunk unnamed-chunk-36

Travaux pratiques

# Créer un vecteur contenant des nombres
x = c(2,3,5,2,7,1) 
x
## [1] 2 3 5 2 7 1
# Calculer une moyenne
mean(x)
## [1] 3.333333
# Calculer un écart type
sd(x)
## [1] 2.250926

Travaux pratiques

# Créer un vecteur contenant des nombres
x = c(2,3,5,2,7,1) 

# Mettre des nombres en ordre croissant
sort(x)
## [1] 1 2 2 3 5 7

Travaux pratiques

# Générateur de nombres aléatoires
x=rnorm(10,0,1); mean(x)
## [1] -0.08708111
sd(x)
## [1] 0.7822509
x=rnorm(1000,0,1); mean(x)
## [1] 0.00818655
sd(x)
## [1] 1.009613

Travaux pratiques

# Générer un vecteur de zéros
Vector=matrix(0,10,1) 
Vector
##       [,1]
##  [1,]    0
##  [2,]    0
##  [3,]    0
##  [4,]    0
##  [5,]    0
##  [6,]    0
##  [7,]    0
##  [8,]    0
##  [9,]    0
## [10,]    0

Travaux pratiques

# Créer une boucle réalisant une série d’opérations
NumberOfSamples = 100
SampleSize = 30
VectorOfValues = matrix(0, NumberOfSamples, 1)
# Calcul de la moyenne d’échantillons de nombres aléatoires N(0,1) 
for (i in 1: NumberOfSamples) {
x=rnorm(SampleSize, 0, 1)
VectorOfValues[i,1] = mean(x) }
VectorOfValues
##                [,1]
##   [1,] -0.239626830
##   [2,] -0.119107471
##   [3,] -0.146127854
##   [4,] -0.077442406
##   [5,]  0.136241021
##   [6,]  0.129412205
##   [7,]  0.132724766
##   [8,]  0.185402469
##   [9,]  0.128278471
##  [10,] -0.017752345
##  [11,]  0.053134409
##  [12,]  0.222421216
##  [13,] -0.367408275
##  [14,]  0.119320516
##  [15,]  0.227433222
##  [16,]  0.145444250
##  [17,] -0.068791385
##  [18,]  0.074266414
##  [19,] -0.137086709
##  [20,]  0.135009320
##  [21,]  0.013212762
##  [22,]  0.017829085
##  [23,] -0.009384285
##  [24,]  0.271707544
##  [25,] -0.091023537
##  [26,]  0.187017121
##  [27,] -0.227591177
##  [28,] -0.133787011
##  [29,] -0.173781135
##  [30,] -0.239397020
##  [31,]  0.004574426
##  [32,]  0.008870349
##  [33,] -0.088618849
##  [34,] -0.343511974
##  [35,] -0.180007740
##  [36,] -0.053576425
##  [37,]  0.006162509
##  [38,] -0.006032335
##  [39,] -0.176685758
##  [40,] -0.054767433
##  [41,]  0.198319282
##  [42,]  0.402261038
##  [43,]  0.128126518
##  [44,] -0.067855677
##  [45,] -0.099194381
##  [46,]  0.073871843
##  [47,] -0.194817715
##  [48,] -0.056477319
##  [49,] -0.410293207
##  [50,]  0.118313530
##  [51,]  0.031950169
##  [52,] -0.045774177
##  [53,]  0.253659169
##  [54,]  0.051653125
##  [55,]  0.161733587
##  [56,]  0.230054290
##  [57,]  0.360476697
##  [58,]  0.084775276
##  [59,] -0.127905468
##  [60,] -0.101033422
##  [61,] -0.100518890
##  [62,]  0.001891123
##  [63,] -0.049427777
##  [64,] -0.263984136
##  [65,] -0.064535152
##  [66,] -0.148064716
##  [67,] -0.283936195
##  [68,]  0.191232428
##  [69,] -0.126050427
##  [70,]  0.259900983
##  [71,] -0.179331206
##  [72,]  0.206191807
##  [73,]  0.085123717
##  [74,] -0.357619322
##  [75,]  0.241072901
##  [76,]  0.047311361
##  [77,] -0.175981006
##  [78,]  0.029537346
##  [79,]  0.326138894
##  [80,] -0.179292997
##  [81,] -0.045050308
##  [82,] -0.253862600
##  [83,]  0.028106587
##  [84,] -0.111891283
##  [85,]  0.159393419
##  [86,]  0.065268214
##  [87,]  0.197781738
##  [88,]  0.375512668
##  [89,]  0.044480750
##  [90,] -0.118367574
##  [91,]  0.412942954
##  [92,] -0.067449898
##  [93,] -0.152631919
##  [94,]  0.071177049
##  [95,]  0.075099009
##  [96,]  0.048631850
##  [97,] -0.140538971
##  [98,]  0.157413528
##  [99,] -0.241400063
## [100,] -0.107015797