Cours no. 2

BIO 6077: Analyse quantitative des données biologiques

Chapitres du livre: Chapitre 1 (1.4 à 1.7) et 2

Aperçu

1. Chapitre 1

  • Descripteurs écologiques et mathématiques

  • Descripteurs intensifs, extensifs, additifs et non additifs

  • Transformations

  • Codage de variables qualitatives

  • Données manquantes

2. Chapitre 2

  • Utilisations de l'algèbre matricielle

  • Produit Hadamard

  • Déterminant

  • Analyse de vecteurs et valeurs propres

Chapitre 1

Descripteurs écologiques

Toute étude écologique est basée sur des descripteurs (par exemple, espèces)

Il s'agit des attributs utilisés pour décrire ou comparer les objets étudiés (sites, quadrats, observations, unités d'échantillonnage, organismes individuels, OTUs ou sujets)

Dans ce cours, les termes descripteur et variable seront utilisés de façon interchangeable

Descripteurs mathématiques

Descripteurs mathématiques

Descripteurs quantitatifs (ou métriques) : Incluent tous descripteurs qui peuvent être tracés sur un axe continu de nombres réels (où l'augmentation de 1 à 2, par exemple, est quantitativement identique à l'augmentation de 6 à 7)

Variables quantitatives à échelle relative : Zéro signifie l'absence de la caractéristique d'intérêt (par exemple, données d'abondance ou température mesurée en Kelvin)

Variables quantitatives à échelle d'intervalle : Zéro est choisi arbitrairement. Ceci empêche des comparaisons du type «cette température (en °C) est deux fois plus élevée que celle-là»

Descripteurs mathématiques

Descripteurs quantitatifs (ou métriques) : Incluent tous descripteurs qui peuvent être tracés sur un axe continu de nombres réels (où l'augmentation de 1 à 2, par exemple, est quantitativement identique à l'augmentation de 6 à 7)

Variables quantitatives à échelle relative : Zéro signifie l'absence de la caractéristique d'intérêt (par exemple, données d'abondance ou température mesurée en Kelvin)

Variables quantitatives à échelle d'intervalle : Zéro est choisi arbitrairement. Ceci empêche des comparaisons du type «cette température (en °C) est deux fois plus élevée que celle-là»

Descripteurs semiquantitatifs : Afin d'accélérer les observations sur le terrain ou dans le laboratoire, les écologistes enregistrer parfois des observations sous la forme de descripteurs semiquantitatifs. Par exemple, en attribuant un score de classes ordonnées: score 1 < score 2 < score 3, etc.

Descripteurs mathématiques

Descripteurs qualitatifs : Posent souvent un problème aux écologistes, qui sont tentés de les rejeter, ou de les réduire à une série de variables binaires

Différentes méthodes basées sur des tableau de contingence peuvent être utilisées pour comparer ces descripteurs (ou avec des descripteurs ordonnés divisés en classes). Certains coefficients de ressemblance permettent d'utiliser ces descripteurs comme base pour le regroupement ou l'ordination

Descripteurs mathématiques

Descripteurs qualitatifs : Posent souvent un problème aux écologistes, qui sont tentés de les rejeter, ou de les réduire à une série de variables binaires

Différentes méthodes basées sur des tableau de contingence peuvent être utilisées pour comparer ces descripteurs (ou avec des descripteurs ordonnés divisés en classes). Certains coefficients de ressemblance permettent d'utiliser ces descripteurs comme base pour le regroupement ou l'ordination

Descripteurs binaires : Par exemple, présence-absence d'une espèce. Ce n'est que pour des raisons historiques qu'ils sont considérés comme une classe spéciale (programmation des premiers ordinateurs)

Peuvent être traités soit comme des variables qualitatives, semi-quantitatives ou quantitatives (dans une analyse de composante ou correspondance principale, une régression ou une analyse canonique)

Descripteurs intensifs et extensifs

Intensif : La valeur est définie indépendamment de la taille de l'unité d'échantillonnage. Par exemple, la température de l'eau est définie indépendamment de la taille du seau d'eau dans lequel un thermomètre est placé

Nous ne disons pas «12°C par litre» mais simplement «12°C»

Extensif : La valeur, dans un système homogène, varie proportionnellement avec la taille de l'unité d'échantillonnage. Par exemple, le nombre d'individus et la biomasse dans un quadrat ou un volume, à un moment donné

Descripteurs additifs et non additifs

Additif : Les variables extensives sont aussi additives car les valeurs provenant de deux unités d'échantillonnage peuvent être ajoutées pour fournir une estimation de la valeur dans l'unité combinée

En revanche, la richesse dans une unité d'échantillonnage ne peut pas être calculée comme la somme des nombres d'espèces trouvés dans deux sous-unités. Cette somme serait généralement supérieure au nombre d'espèces trouvées dans l'unité combinée, car certaines espèces sont communes aux deux sous-unités

Non additif : Les valeurs de pH, les logarithmes, les rapports, les indices et les directions des vecteurs (direction du vent)

Les valeurs des variables non additives doivent être transformées d'une certaine manière avant (et si) elles peuvent être combinées significativement.

Transformations

Transformation linéaire : Un changement d'échelle linéaire de la variable y est décrit par la transformation y'= b0 + b1y, où y' est la valeur après transformation

Cela nécessite une translation, ajoutant ou soustrayant une constante (b0) à toutes les données. La translation est souvent utilisée pour ramener à zéro la moyenne. La deuxième transformation, l'expansion, est un changement d'échelle obtenu en multipliant ou en divisant toutes les valeurs observées par une constante (b1)

Transformations

Transformations non linéaires : Lorsque deux variables ne sont pas linéairement liées, leur relation peut être décrite par une équation de deuxième degré ou autres degrés supérieurs, ou par d'autres formes fonctionnelles

Transformations

Transformations non linéaires : Lorsque deux variables ne sont pas linéairement liées, leur relation peut être décrite par une équation de deuxième degré ou autres degrés supérieurs, ou par d'autres formes fonctionnelles

La fonction exponentielle, dans laquelle une variable y2 augmente en progression géométrique par rapport à y1, est décrite selon l'une des équations suivantes :

Transformations

Transformations non linéaires : Lorsque deux variables ne sont pas linéairement liées, leur relation peut être décrite par une équation de deuxième degré ou autres degrés supérieurs, ou par d'autres formes fonctionnelles

La fonction exponentielle, dans laquelle une variable y2 augmente en progression géométrique par rapport à y1, est décrite selon l'une des équations suivantes :

Ces relations peuvent être linéarisées en utilisant le logarithme de la variable y2 (appelée y2' ci-dessous) au lieu de y2 elle-même. Les relations ci-dessus deviennent alors :

Transformations

Transformations non linéaires : La relation entre les variables peut souvent être reconnue en les traçant l'une contre l'autre

Dans le panneau supérieur, y2 varie comme le logarithme naturel de y1. Dans le panneau inférieur, y2 est une fonction exponentielle de y1. Les courbes peuvent prendre différentes formes, en fonction des constantes de modification b, b0, b1 et b2

Transformations

Cadrage et standardisation : Pour comparer les descripteurs de différentes unités, il faut d'abord les ramener à une échelle commune, soit en éliminant les différences de taille, ou en réduisant à la fois la taille et la variabilité à une échelle commune

La translation permet de centrer les données

Diviser chaque yi par la plus grande valeur observée est une façon, basé sur l'expansion, d'amener toutes les valeurs dans le cadre de [0, 1]

Transformations

Cadrage et standardisation : D'autres méthodes permettent d'ajuster simultanément la taille et la variabilité des descripteurs. Le cadrage réduit les valeurs d'une variable à l'intervalle [0, 1] en soustrayant le minimum à chaque variable puis en divisant par la gamme :

La méthode la plus utilisée pour rendre compatibles les descripteurs est de standardiser les données en soustrayant la moyenne (translation) et en divisant par l'écart-type (sy) de la variable (expansion) :

Ces transformations nous permettent de se débarrasser des unités physiques. Mettre un grand nombre de variables avec différentes unités dans une analyse est très utile (tel que l'ACP!)

Transformations

Normalisation : Est effectuée sur des descripteurs pour rendre leurs distributions de fréquences de valeurs ressembler à la courbe normale

La normalisation a également la propriété de réduire l'hétéroscédasticité (égalité des variances) des descripteurs

Transformations

Normalisation : Est effectuée sur des descripteurs pour rendre leurs distributions de fréquences de valeurs ressembler à la courbe normale

La normalisation a également la propriété de réduire l'hétéroscédasticité (égalité des variances) des descripteurs

L'analyse des données devrait toujours commencer avec une évaluation des distributions, car plusieurs méthodes utilisées dans l'analyse de données multivariées ont été développées en supposant que les variables sont normalement distribuées

On peut trouver la meilleur normalisation pour chaque variable séparément, ou sinon, une transformation qui normalise le mieux plusieurs variables en même temps

Transformations

Normalisation : Les données écologiques sont souvent fortement asymétrique (une espèce est abondante dans quelques sites et absente dans plusieurs sites)

Les données asymétriques sont souvent transformées en prenant des logarithmes ou des racines carrées. La racine carrée est moins drastique et est utilisée pour normaliser les données qui ont une distribution de Poisson

Transformations

Normalisation : Les données écologiques sont souvent fortement asymétrique (une espèce est abondante dans quelques sites et absente dans plusieurs sites)

La transformation logarithmique est applicable aux données qui partent plus largement d'une distribution normale

Transformations

Normalisation : La transformation arcsine est appropriée pour les pourcentages et les proportions

Transformations

Normalisation : En cas de doute, on peut essayer plusieurs de ces transformations et effectuer un test de normalité. Sinon, la méthode Box-Cox peut être utilisée pour trouver la meilleure transformation

Si $\gamma $ = 1, la fonction est une transformation linéaire simple; Si $\gamma $ = 1/2, la fonction devient la transformation racine carrée; Lorsque $\gamma $ = 0, la transformation est logarithmique; $\gamma $ = -1 donne la transformation réciproque

Codage binaire de variables qualitatives

Ce codage permet l'utilisation de descripteurs qualitatifs dans des procédures telles que la régression multiple, l'analyse discriminante ou l'analyse canonique

Un descripteur qualitatif avec états s peut être décomposé en (s - 1) variables binaires Vj

Dans cet exemple, V1 à V3 suffisent à coder pour les quatre états du descripteur nominal, à l'exclusion de V4. Si la variable V4 avait été incluse, son information aurait été linéairement dépendante => V4 = 1intercept – (V1 + V2 + V3)

Codage de variables qualitatives

Il existe d'autres méthodes pour coder une variable qualitative, tel que le contraste de Helmert

Considérons un facteur expérimental avec des niveaux s. La première variable de Helmert contraste les premier et deuxième niveaux; La seconde variable contraste le troisième aux deux premiers; La troisième variable contraste le niveau 4 avec les trois premiers; etc. :

Codage de variables qualitatives

D'autres formes de codage ont été développées pour des types particuliers de variables. Par exemple, nous pourrions coder les relations spatiales entre les localités d'un réseau géographique

Un groupe de lacs reliés par un réseau de rivière. Un numéro est attribué à chaque segment de rivière alors que les noeuds représentent les points de furcation. Cette méthode de codage des processus spatiaux directionnels sera développée à la au Chapitre 14 où elle servira de base à la méthode d'analyse spatiale des cartes des vecteurs propres asymétriques (AEM)

Données manquantes

Les matrices de données écologiques sont souvent affectées par des données manquantes

1. Supprimer des lignes ou des colonnes

2. Adaptation des algorithmes pour données manquantes

  • Algorithme qui saute les données manquantes lors des calculs

3. Estimer les valeurs manquantes

  • La méthode le plus simple, mais pas la meilleure, est de remplacer les valeurs manquantes par la moyenne de la variable

  • Estimer les valeurs manquantes par une régression

  • Interpoler les valeurs manquantes dans les données spatialement corrélées

Chapitre 2

Algèbre matricielle

Nombreuses raisons pour l'utilisation de l'algèbre matricielle en l'écologie :

  • Le format des fichiers dans lesquels les ensembles de données écologiques sont enregistrés est un format matriciel

  • L'utilisation de la notation matricielle fournit une représentation élégante et compacte des informations écologiques

  • L'algèbre matricielle permet d'effectuer des opérations sur des ensembles de données entiers

  • Les méthodes multidimensionnelles sont presque impossibles à conceptualiser et à expliquer sans recourir à l'algèbre matricielle

Matrice des données écologiques

Les données écologiques sont généralement enregistrées dans un tableau où chaque colonne j correspond à un descripteur yj (espèce présente, variable physique ou chimique, etc.) et chaque objet xi (site d'échantillonnage, observation, etc) occupe une rangée

Matrice des données écologiques

Il n'est pas toujours évident quels sont les objets et quels sont les descripteurs

Pour identifier sans ambiguïté les objets et les descripteurs, il faut décider quelle est la variable définie a priori

Matrice des données écologiques

Il n'est pas toujours évident quels sont les objets et quels sont les descripteurs

Pour identifier sans ambiguïté les objets et les descripteurs, il faut décider quelle est la variable définie a priori

La distinction entre les objets et les descripteurs n'est pas seulement théorique

  • On peut analyser soit les relations entre les descripteurs pour l'ensemble des objets de l'étude (analyse en mode R)
  • Soit les relations entre les objets en fonction de l'ensemble des descripteurs (étude du mode Q)

Les techniques mathématiques qui sont appropriées pour étudier les relations entre les objets ne sont pas les mêmes que celles des descripteurs!

Algèbre linéaire

Le tableau des données écologiques décrites dans le diapo précédent est un assemble de nombres connu comme une matrice. La branche des mathématiques traitant des matrices est l'algèbre linéaire

Ordre : Il existe n lignes et p colonnes. Une matrice d'ordre (ou de dimension) n × p est écrite Ynp

Matrices d'association

Deux matrices importantes peuvent être dérivées de la matrice des données écologiques: la matrice d'association entre les objets et la matrice d'association entre les descripteurs

On peut examiner la relation entre les deux premiers objets x1 et x2. Pour ce faire, les première et deuxième lignes de la matrice Y sont utilisés pour calculer une mesure d'association (similarité our distance) => a12

Matrices d'association

De même, l'association de x1 avec x3, x4, ..., xp, peut être calculée, et l'association entre x2 avec tous les autres objets, ainsi de suite... Ce qui nous donne A, la matrice d'association

Le nombre de rangées est égal au nombre de colonnes, ce nombre étant égal ici au nombre d'objets n

Les matrices d'association sont souvent (mais pas toujours) symétriques, les éléments du triangle supérieur étant égaux à ceux du triangle inférieur

Matrices d'association

On peut aussi examiner les relations entre les descripteurs :

Matrices d'association

On peut aussi examiner les relations entre les descripteurs :

Mesure d'association : Dans le cas des objets, la mesure d'association aii d'un objet avec lui-même prend habituellement une valeur de 1 (similarité) ou de 0 (distance)

Pour l'association entre descripteurs, la corrélation aii est 1, alors que la (co)variance fournit une estimation aii de la variabilité entre les valeurs du descripteur i

Matrices d'association

Ann est habituellement plus grand que App parce qu'il y a souvent plus d'observations (rangées) que de descripteurs (colonnes)

Matrices spéciales

Les matrices avec un nombre égal de lignes et de colonnes sont appelées des matrices carrées

Ces matrices sont les seules matrices pour lesquelles il est possible de calculer :

  • un déterminant
  • un inverse
  • des valeurs propres et des vecteurs propres

Ces opérations peuvent donc être effectuées sur des matrices d'association, qui sont des matrices carrées

Définitions relatives aux matrices carrées

Trace : Les éléments diagonaux d'une matrice sont ceux avec des indices identiques pour les lignes et les colonnes (bii). La somme des éléments diagonaux est appelée la trace de la matrice

Définitions relatives aux matrices carrées

Matrice diagonale D: Une matrice carrée où tous les éléments non diagonaux sont zéros

Matrice identité : Une matrice diagonale où tous les éléments diagonaux sont égaux à l'unité est appelée matrice identité. et noté D(1) ou I

Définitions relatives aux matrices carrées

Matrice scalaire : Une matrice diagonale de la forme :

Définitions relatives aux matrices carrées

Matrice triangulaire : Une matrice carrée avec tous les éléments au-dessus (ou en dessous) de la diagonale étant zéro est appelée une matrice triangulaire inférieure (ou supérieure)

Ces matrices sont très importantes dans l'algèbre matricielle parce que leur déterminant est égal au produit de tous les termes sur la diagonale principale!

Définitions relatives aux matrices carrées

Transpose : La transposition d'une matrice B de format (n × p) est notée B 'et est une nouvelle matrice de format (p × n) où les lignes d'une matrice sont les colonnes de l'autre

Définitions relatives aux matrices carrées

Symétrique : Une matrice carrée identique à son transpose

Les matrices d'association sont généralement symétriques. Des matrices non symétriques (ou asymétriques) peuvent cependant être rencontrées. Cela se produit, par exemple, lorsque chaque coefficient de la matrice mesure l'influence asymétrique écologique d'un organisme sur un autre (A est un prédateur de B, B est une proie de A)

Vecteurs et mise à l'échelle

Un vecteur (colonne) est noté comme

Les n nombres sont les coordonnées d'un point dans un espace euclidien n-dimensionnel, qui peut être vu comme le point final d'une ligne commençant à l'origine

Vecteurs et mise à l'échelle

Le vecteur (colonne) [4 3]' à deux nombres réels (4, 3) qui peuvent être représentés dans un espace euclidien bidimensionnel :

Vecteurs et mise à l'échelle

En utilisant le théorème de Pythagore, il est facile de calculer la longueur de tout vecteur

La longueur (ou la norme) du vecteur b est notée ||b||

Vecteurs et mise à l'échelle

La comparaison de différents vecteurs nécessite souvent une mise à l'échelle où tous les éléments sont divisés par la même valeur caractéristique. La normalisation est une mise aà l'échelle où chaque élément est divisé par la longueur du vecteur

L'importance de la normalisation est que la longueur d'un vecteur normalisé est égale à l'unité, peu importe le nombre de dimension!

Vecteurs et mise à l'échelle

Addition et multiplication des matrices

L'addition matricielle est associative et commutative

Exemple : Des poissons (3 espèces) ont été échantillonnés à cinq sites dans un lac, une fois par mois pendant l'été. Pour obtenir une idée générale des différences entre les sites, le nombre total de poissons capturés à chaque site est calculé sur l'ensemble de l'été :

Seules des matrices du même ordre peuvent être ajoutées ensemble. C'est pourquoi, dans la première matrice, le site 5 a été inclus avec des abondances de 0. L'addition de deux matrices consiste en une addition terme par terme

Addition et multiplication des matrices

Dans la algèbre matricielle, la multiplication suit une convention qui est illustrée par le produit scalaire

Le résultat d'un produit scalaire est un nombre qui est égal à la somme des produits de ces éléments avec numéros d'ordre correspondants

Seuls les vecteurs ayant le même nombre d'éléments peuvent être multipliés

Addition et multiplication des matrices

Vecteurs orthogonaux : On peut montrer que le produit scalaire de deux vecteurs obéit à la relation

Lorsque l'angle entre deux vecteurs est $\phi $ = 90°, cos $\phi $ = 0 et le produit scalaire b'c = 0. Par conséquent, deux vecteurs dont le produit scalaire est égal à zéro sont orthogonaux (à angle droit)

Pour une paire quelconque de vecteurs b et c avec des valeurs centrées sur leur moyenne respective, cos $\phi $ = r(b, c) où r est le coefficient de corrélation

Addition et multiplication des matrices

Vecteurs orthogonaux : On peut montrer que le produit scalaire de deux vecteurs obéit à la relation

Lorsque l'angle entre deux vecteurs est $\phi $ = 90°, cos $\phi $ = 0 et le produit scalaire b'c = 0. Par conséquent, deux vecteurs dont le produit scalaire est égal à zéro sont orthogonaux (à angle droit)

Pour une paire quelconque de vecteurs b et c avec des valeurs centrées sur leur moyenne respective, cos $\phi $ = r(b, c) où r est le coefficient de corrélation

Le produit de deux matrices est l'extension logique du produit de deux vecteurs

Le produit de deux matrices B et C sera une nouvelle matrice ayant le même nombre de lignes que B et le même nombre de colonnes que C

Addition et multiplication des matrices

Le produit de deux matrices est l'extension logique du produit de deux vecteurs

Addition et multiplication des matrices

8 propriétés des produits matriciels :

1. 2. 3. 4. 5. 6. 7. 8.

Addition et multiplication des matrices

Produit Hadamard : L'Hadamard, *, de deux matrices du même ordre (n × p) est le produit cellule par cellule de ces deux matrices

Déterminant

Il est souvent nécessaire de transformer une matrice en une nouvelle, de telle sorte que l'information de la matrice d'origine soit préservée, alors que de nouvelles propriétés qui sont essentielles pour les calculs ultérieurs sont acquises

  • Le déterminant, det(B) ou |B|, est une fonction d'une matrice carrée

  • La valeur d'un déterminant est calculée comme la somme de tous les produits possibles contenant un, et un seul, élément de chaque ligne et chaque colonne

Déterminant

Le déterminant d'une matrice d'ordre supérieur à 2 peut être calculé en utilisant différentes méthodes, parmi lesquelles l'expansion par des mineurs

En recherchant un déterminant d'ordre 3, on peut obtenir un déterminant d'ordre 3 - 1 = 2 en croisant une ligne (i) et une colonne (j). Ce déterminant d'ordre inférieur est le mineur associé à bij :

Déterminant

Lorsque multiplié par (-1)i + j, le mineur devient le cofacteur. Ainsi, le cofacteur de b12 est :

L'expansion par des mineurs d'un déterminant d'ordre n est :

Déterminant

Ainsi, en revenant au déterminant de la matrice exemple, l'expansion par les éléments de la première rangée donne :

Déterminant - exemple numérique

Le nombre de calculs nécessaires pour développer un déterminant augmente très rapidement avec une ordre n croissant. Une autre méthode plus rapide est habituellement utilisée. Avant de décrire cette méthode, certaines propriétés des déterminants doivent être examinées...

Propriétés du déterminant

  1. det(A) = det(A') parce que le déterminant peut être calculé à partir des lignes ou des colonnes de la matrice
  2. Si deux rangées sont interchangées, le signe du déterminant est inversé
  3. Si deux rangées sont identiques, le déterminant est zéro
  4. Si un scalaire est un facteur d'une rangée, il devient un facteur déterminant
  5. Si une ligne est un multiple d'une autre ligne, le déterminant est zéro
  6. Si tous les éléments d'une ligne sont 0, le déterminant est zéro
  7. Si un scalaire c est un facteur de toutes les lignes, il devient un facteur cn du déterminant => det(cB) = cn det(B)

Propriétés du déterminant

8. Si un multiple d'une rangée est ajouté à une autre rangée, la valeur du déterminant reste inchangé

9. Le déterminant d'une matrice triangulaire (et donc aussi de matrice diagonale) est le produit de ses éléments diagonaux

10. La somme des produits des éléments d'une rangée avec les cofacteurs correspondants d'une rangée différente est égale à zéro

11. Pour deux matrices carrées d'ordre n, det(A) • det(B) = det(AB)

Condensation pivotante

Les propriétés 8 et 9 peuvent être utilisées pour le calcul rapide du déterminant. La méthode est appelée condensation pivotante

La matrice est d'abord réduite à la forme triangulaire en utilisant la propriété 8

Lorsque la partie triangulaire inférieure de la matrice est nulle, la propriété 9 est utilisée pour calculer le déterminant qui est alors le produit des éléments diagonaux modifiés

Condensation pivotante

Le déterminant est le produit des éléments diagonaux: 1 × (-3) × 1 = (-3)

Rang d'une matrice

Une matrice carrée contient n vecteurs qui peuvent être linéairement indépendants ou non

Deux vecteurs sont linéairement dépendants lorsque les éléments d'un sont proportionnels aux éléments de l'autre :

Un vecteur est linéairement dépendant de deux autres lorsque ses éléments sont une combinaison linéaire des éléments des deux autres

Rang d'une matrice

Le rang d'une matrice carrée est défini comme le nombre de vecteurs ligne linéairement indépendants (ou vecteurs colonne) dans la matrice

Selon la propriété 5 des déterminants une matrice dont le rang est inférieur à son ordre a un déterminant égal à zéro

Rang d'une matrice

Trouver le rang d'une matrice peut donc être basé sur le déterminant des sous-matrices d'ordre inférieur qu'il contient

Le rang d'une matrice carrée est l'ordre de la plus grande sous-matrice carrée avec le déterminant non nul qu'il contient; C'est aussi le nombre maximal de vecteurs linéairement indépendants trouvés parmi les lignes ou les colonnes

Rang d'une matrice

Le déterminant peut être utilisé pour diagnostiquer l'indépendance des vecteurs formant une matrice X

  • Pour une matrice carrée les lignes ou les colonnes sont linéairement indépendants si det (X) ≠ 0

  • Pour une matrice rectangulaire avec plus de lignes que de colonnes (n > p), le déterminant peut être déterminée à partir de la matrice de covariance S de X

    Si det(S) ≠ 0, tous les colonnes de X sont linéairement indépendantes. Si np, det(S) = 0

Pour une matrice carrée on a deux méthodes (SVD ou eigen) mais pour une matrice rectangulaire on a juste SVD

Rang d'une matrice

Le rang d'une matrice carrée est défini comme le nombre de lignes ou de colonnes linéairement indépendantes

mat = matrix(c(-1,3,4,-1,0,1,1,-2,-3),3,3)
library(rgl); rgl.open()
rgl.points(mat,color="green",size=6)

limits = apply(mat,2,range)

rgl.lines(x=c(-5,5),y=c(0,0),z=c(0,0))
rgl.lines(y=c(-5,5),x=c(0,0),z=c(0,0))
rgl.lines(z=c(-5,5),x=c(0,0),y=c(0,0))

rgl.texts(limits[2,1],0,0,"Var1")
rgl.texts(0,limits[2,2],0,"Var2")
rgl.texts(0,0,2,"Var3")

Rang d'une matrice

mat = matrix(c(-1,3,4,-1,0,1,1,-2,-3),3,3)
(svd.res = svd(mat))$d # rank = 2
## [1] 6.401171e+00 1.012431e+00 4.107915e-16
eigen(cov(mat))$values # rank of cov(mat) = 2
## [1] 1.223800e+01 9.533147e-02 8.981454e-16
mat.random = matrix(rnorm(9),3,3)
(svd.res = svd(mat.random))$d # rank = 3
## [1] 2.3442708 1.3223466 0.5706232

Rang d'une matrice

# Nombre de dimensions requises pour la représentation dans l'espace euclidien
mat.rand.cent = scale(mat.random, center=TRUE, scale=FALSE)
# eigen(cov(mat.random)) # rank of cov(mat.random) = 2
svd(mat.rand.cent) # rank = 2
## $d
## [1] 2.144553e+00 5.725801e-01 1.406985e-16
## 
## $u
##            [,1]       [,2]      [,3]
## [1,]  0.0584793  0.8143997 0.5773503
## [2,] -0.7345305 -0.3565553 0.5773503
## [3,]  0.6760512 -0.4578444 0.5773503
## 
## $v
##            [,1]      [,2]        [,3]
## [1,] -0.9058264 0.2507049 -0.34150476
## [2,]  0.2336829 0.9680604  0.09083719
## [3,]  0.3533706 0.0024789 -0.93548015

Inversion d'une matrice

Dans l'algèbre matricielle, l'opération de division de C par B n'existe pas. L'opération équivalente est la multiplication de C par l'inverse de B => B-1

Seules les matrices carrées ont des inverses uniques et la relation B B-1 = B-1 B

B-1 n'existe que si det(B) ≠ 0. Les matrices qui peuvent être inversées sont appelées non singulières

Inversion d'une matrice

L'inversion de la matrice B peut être effectuée en utilisant la méthode de Gauss-Jordan. Pour ce faire, la matrice B (n × n) est d'abord augmentée à droite avec une matrice identique de même taille I

Inversion d'une matrice

La transformation de Gauss-Jordan se déroule en deux étapes :

  1. Les termes diagonaux sont utilisés comme pivots pour rendre tous les termes hors diagonale égaux à zéro

    Si on trouve un zéro sur la diagonale, ce zéro sera changé à une valeur (non zéro) à l'étape suivante, sauf si la matrice est singulière

  2. Lorsque tous les termes hors diagonale sont zéros, les termes diagonaux sont portés à 1 en divisant par sa valeur

    Si l'un des éléments diagonaux est zéro, aucune division ne peut le ramener à 1 et la matrice est singulière (ne peut pas être inversée)

Inversion d'une matrice

La transformation de Gauss-Jordan se déroule en deux étapes :

Inversion d'une matrice

L'inverse d'une matrice a plusieurs propriétés intéressantes, y compris:

  1. B-1B = BB-1 = I

  2. |B-1| = 1/|B|

  3. [B-1]-1 = B

  4. [B']-1 = B-1]'

  5. Si B et C sont des matrices carrées non singulières, [BC]-1 = C-1B-1

  6. Dans le cas d'une matrice symétrique, puisque B'= B, alors [B-1]' = B-1

Inversion d'une matrice

L'inverse d'une matrice a plusieurs propriétés intéressantes, y compris:

7. Une matrice orthonormale (vecteurs de colonne sont normalisés => ajustés à la longueur 1) carrée B a la propriété que B' = B

Comme BB = I et B'B = D(1) = I lorsque les colonnes de B sont normalisés, et que B'B = BB = I, il suit que B'= B

8. L'inverse d'une matrice diagonale est une matrice diagonale dont les éléments sont les inverses des éléments originaux: [D(xi)]-1 = D(1/xi)

Applications de l'inversion matricielle

L'inversion est utilisée dans de nombreux types d'applications telles que la résolution de systèmes d'équations linéaires et le calcul de coefficients de régression

Par exemple, avec le système d'équations lineéaires Ab = c :

Applications de l'inversion matricielle

Pour trouver les valeurs de b1, b2 et b3, le vecteur b doit être isolé, ce qui nécessite une inversion de A

Applications de l'inversion matricielle

mat = matrix(c(1,4,7,2,5,8,3,6,10), 3, 3)
vec = c(2,2,3)
vec.b = solve(mat, vec)
vec.b
## [1] -1.000000e+00 -2.331468e-15  1.000000e+00
# Verifier les résultats
mat %*% vec.b
##      [,1]
## [1,]    2
## [2,]    2
## [3,]    3

Applications de l'inversion matricielle

mat = matrix(c(1,4,7,2,5,8,3,6,10), 3, 3)
vec = c(2,2,3)

# qr.solve peut gérer des matrices non carrées
vec.b.qr = qr.solve(mat, vec)
vec.b.qr
## [1] -1.000000e+00  1.963836e-15  1.000000e+00
vec.b.qr2 = qr.solve(mat[1:2,], c(2,2))
vec.b.qr2
## [1] -2  2  0

Applications de l'inversion matricielle

mat = matrix(c(1,4,7,2,5,8,3,6,10), 3, 3)
vec = c(2,2,3)

# qr.solve peut gérer des matrices non carrées
vec.b.qr2 = qr.solve(mat[1:2,], vec[1:2])
vec.b.qr2
## [1] -2  2  0
mat[1:2,] %*% vec.b.qr2
##      [,1]
## [1,]    2
## [2,]    2

Applications de l'inversion matricielle

mat = matrix(c(1,4,7,2,5,8,3,6,10), 3, 3)
vec = c(2,2,3)

# qr.solve peut gérer des matrices non carrées
vec.b.qr3 = qr.solve(mat[c(1,3),], vec[2:3])
vec.b.qr3
## [1] -1.666667  1.833333  0.000000
mat[c(1,3),] %*% vec.b.qr3
##      [,1]
## [1,]    2
## [2,]    3

Applications de l'inversion matricielle

Les coefficients de régression sont facilement calculés pour plusieurs modèles en utilisant l'inversion matricielle

Les coefficients b sont estimés par la méthode des moindres carrés, ce qui minimise la somme des carrés des différences entre les valeurs observées y et les valeurs \(\hat{y}\)

Applications de l'inversion matricielle

Afin d'obtenir \(\hat{y}\), l'équation matricielle y = Xb est multiplié par X'

X'y = X'Xb ce qui nous la matrice carrée X'X que nous pouvons inverser

Inversion de matrices non singulières et singulières

Inversion d'une matrice non singulière par solve

mat2=matrix(c(1,2,3,4,5,6,7,8,10),3,3,byrow=TRUE)

# La matrice est-elle singulière?
det(mat2)
## [1] -3
# Calcul de l'inverse (fonction 'solve')
mat2.solve=solve(mat2)
mat2.solve
##            [,1]      [,2] [,3]
## [1,] -0.6666667 -1.333333    1
## [2,] -0.6666667  3.666667   -2
## [3,]  1.0000000 -2.000000    1

Inversion de matrices non singulières et singulières

Inversion d'une matrice singulière avec solve

mat1=matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3)

# Calcul de la matrice de covariance
mat1.cov=cov(mat1)

# La matrice est-elle singulière?
det(mat1.cov)
## [1] 0
# Calcul de l'inverse (fonction 'solve')
mat1.solve=solve(mat1.cov)
## Error in solve.default(mat1.cov): Lapack routine dgesv: system is exactly singular: U[3,3] = 0

Inversion de matrices non singulières et singulières

Inversion d'une matrice singulière par décomposition en valeurs singulières (fonction svd)

mat1=matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3)
mat1.cov=cov(mat1)

# Décomposition en valeurs singulières
mat1.svd=svd(mat1.cov) 

# Deux premières colonnes de l'élément $u
mat1.svd$u[,1:2] 
##            [,1]       [,2]
## [1,] -0.6022530 -0.3705284
## [2,] -0.6022530 -0.3705284
## [3,]  0.5240063 -0.8517144

Inversion de matrices non singulières et singulières

Inversion d'une matrice singulière par décomposition en valeurs singulières (fonction svd)

mat1=matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3)
mat1.cov=cov(mat1)

# Décomposition en valeurs singulières
mat1.svd=svd(mat1.cov) 

# Place les deux premières valeurs propres dans une matrice diagonale
diag(mat1.svd$d[1:2]) 
##          [,1]      [,2]
## [1,] 6.522634 0.0000000
## [2,] 0.000000 0.9773659

Inversion de matrices non singulières et singulières

Inversion d'une matrice singulière par décomposition en valeurs singulières (fonction svd)

mat1=matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3)
mat1.cov=cov(mat1)

# Décomposition en valeurs singulières
mat1.svd=svd(mat1.cov) 

# Inversion 
mat1.inv=mat1.svd$u[,1:2] %*% diag(mat1.svd$d[1:2]^-1) %*% t(mat1.svd$u[,1:2]) # U et V sont identiques parce que mat1.cov est symétrique
mat1.inv
##           [,1]      [,2]      [,3]
## [1,] 0.1960784 0.1960784 0.2745098
## [2,] 0.1960784 0.1960784 0.2745098
## [3,] 0.2745098 0.2745098 0.7843137
# Vérification
mat1.cov %*% mat1.inv
##               [,1]         [,2] [,3]
## [1,]  5.000000e-01 5.000000e-01    0
## [2,]  5.000000e-01 5.000000e-01    0
## [3,] -1.110223e-16 1.110223e-16    1

Inversion de matrices non singulières et singulières

Vérification: inversion par ginv de la bibliothèque {MASS}

library(MASS)
mat1.ginv=ginv(mat1.cov)
mat1.ginv
##           [,1]      [,2]      [,3]
## [1,] 0.1960784 0.1960784 0.2745098
## [2,] 0.1960784 0.1960784 0.2745098
## [3,] 0.2745098 0.2745098 0.7843137

Utilisation de l'inversion en régression multiple

# Voir la fonction 'regression.R'

# Equation pour le calcul des coefficients de régression: b = [X'X]^(-1) X' y

# Les deux premières variables de X sont colinéaires
X = matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3)
colnames(X) = c("Var1","Var2","Var3")

# Ajouter une colonne de '1' à X
Un = rep(1,nrow(X))
X = as.matrix(cbind(Un,X))

y = matrix(rnorm(5,0,1),5,1)

# Utilisation de 'ginv' pour l'inversion matricielle

# Calcul de [X'X]
XprX = t(X) %*% X
det(XprX)  # Le déterminant est 0: matrice singulière
## [1] 0

Utilisation de l'inversion en régression multiple

X = matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3); colnames(X) = c("Var1","Var2","Var3")
Un = rep(1,nrow(X)); X = as.matrix(cbind(Un,X))
y = matrix(rnorm(5,0,1),5,1)

# Utilisation de 'ginv' pour l'inversion matricielle

# Calcul de [X'X]
XprX = t(X) %*% X
b = ginv(XprX) %*% t(X) %*% y
b # -1.224604499 =  Ordonnée à l'origine
##             [,1]
## [1,] -0.12783084
## [2,]  0.02169983
## [3,]  0.02169983
## [4,] -0.04736929
proj = X %*% ginv(XprX) %*% t(X)
y.fit = proj %*% y
y.fit
##             [,1]
## [1,] -0.32127764
## [2,] -0.13577009
## [3,] -0.18710900
## [4,] -0.09634004
## [5,]  0.04179822

Utilisation de l'inversion en régression multiple

X = matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3); colnames(X) = c("Var1","Var2","Var3")
Un = rep(1,nrow(X)); X = as.matrix(cbind(Un,X))
y = matrix(rnorm(5,0,1),5,1)

# Utilisation de 'ginv' pour l'inversion matricielle

# Calcul de [X'X]
XprX = t(X) %*% X
b = ginv(XprX) %*% t(X) %*% y
proj = X %*% ginv(XprX) %*% t(X)
y.fit = proj %*% y
y.fit
##            [,1]
## [1,]  0.6451005
## [2,]  0.5567699
## [3,] -0.2010495
## [4,] -0.5571756
## [5,] -0.7794041

Utilisation de solve pour l'inversion matricielle

# Retenons le vecteur 'Un' et les variables Var2 et Var3
X = matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3); colnames(X) = c("Var1","Var2","Var3")
Un = rep(1,nrow(X)); X = as.matrix(cbind(Un,X))
X.2 = X[,c(1,3,4)]
XprX.2 = t(X.2) %*% X.2
det(XprX.2)    # Le déterminant est 255 > 0: matrice non singulière
## [1] 255
# Inversion par solve(XprX.2)
b2 = solve(XprX.2) %*% t(X.2) %*% y
b2 #  -1.22460450 = Ordonnée à l'origine
##            [,1]
## Un    1.8046131
## Var2 -0.4900239
## Var3 -0.1338977

Utilisation de solve pour l'inversion matricielle

# Retenons le vecteur 'Un' et les variables Var2 et Var3
X = matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3); colnames(X) = c("Var1","Var2","Var3")
Un = rep(1,nrow(X)); X = as.matrix(cbind(Un,X))
X.2 = X[,c(1,3,4)]
XprX.2 = t(X.2) %*% X.2

# Inversion par solve(XprX.2)
b2 = solve(XprX.2) %*% t(X.2) %*% y
proj.2 = X.2 %*% solve(XprX.2) %*% t(X.2)
y.fit.2 = proj.2 %*% y
y.fit.2
##            [,1]
## [1,]  0.6451005
## [2,]  0.5567699
## [3,] -0.2010495
## [4,] -0.5571756
## [5,] -0.7794041

Régression linéaire par lm

X = matrix(c(1,2,3,4,5,1,2,3,4,5,5,2,4,3,1),5,3); colnames(X) = c("Var1","Var2","Var3")
Un = rep(1,nrow(X)); X = as.matrix(cbind(Un,X))
y = matrix(rnorm(5,0,1),5,1)

toto.lm = lm(y ~ X[,2:4])
toto.lm
## 
## Call:
## lm(formula = y ~ X[, 2:4])
## 
## Coefficients:
##  (Intercept)  X[, 2:4]Var1  X[, 2:4]Var2  X[, 2:4]Var3  
##      -0.7173        0.1069            NA        0.2272
fitted(toto.lm)
##           1           2           3           4           5 
##  0.52539518 -0.04911279  0.51212998  0.39192231  0.04456449

Valeurs propres et vecteurs propres

Il existe d'autres application où le déterminant et l'inverse sont utilisés pour fournir des solutions simples et élégantes

Par exemple, la dérivation d'une forme orthogonale (matrice dont les vecteurs sont à angle droit) d'une matrice symétrique non-orthogonale

En écologie, les ensembles de données comprennent généralement un grand nombre de variables qui sont linéairement corrélées

Il est donc important de réduire ce grand nombre de variables intercorrélées à un plus petit nombre de variables composites linéairement indépendantes, chacune expliquant une fraction différente de la variation

Valeurs propres et vecteurs propres

Donné une matrice carrée A, on souhaite trouver une matrice diagonale \(\lambda\) qui est équivalente à A (où A est une matrice de covariance S en analyse de composante principale)

Dans la nouvelle matrice \(\lambda\), tous les éléments hors de la diagonale sont zéros

Cette nouvelle matrice, la forme canonique de A, est appelée la matrice des valeurs propres, et a la même trace et le même déterminant que A

Les nouvelles variables (vecteurs propres) dont l'association est décrite par la atrice \(\lambda\) sont linéairement indépendantes l'une de l'autre

Valeurs propres et vecteurs propres

Les valeurs et les vecteurs propres de la matrice A sont obtenus à partir de l'équation

ui sont les vecteurs propres, qui sont orthogonaux lorsque la matrice A est symétrique (e.g. matrice de covariance S)

Si les scalaires \(\lambda\)i et leurs vecteurs associés ui existent, l'équation si-dessus peut être transformée en une différence de vecteurs, et le vecteur ui peut être ensuite factorisé

Valeurs propres et vecteurs propres

La dernière équation indique que la multiplication de (A - \(\lambda\)iI) par le vecteur de colonne ui doit donner un vecteur de colonne nul (0)

Outre la solution triviale où ui est un vecteur nul, il y a la solution suivante :

C-à-d, que le déterminant de la différence entre les matrices A et \(\lambda\)iI doit être égal à 0 pour chaque \(\lambda\)i. La solution de cette équation, connue comme l'équation caractéristique ou déterminante, fournit les valeurs propres \(\lambda\)i associées à la matrice A!

Valeurs propres et vecteurs propres

Démonstration

Solution (A - \(\lambda\)iI) = [0] n'est pas acceptable, car elle implique que A = \(\lambda\)iI et donc que A soit une matrice scalaire

La solution nécessite donc que \(\lambda\)i et ui soient tels que le produit scalaire (A - \(\lambda\)iI) ui soit un vecteur nul

Donc, le vecteur ui doit être orthogonal à l'espace correspondant à A après que \(\lambda\)iI ait été soustrait de A

Valeurs propres et vecteurs propres

Démonstration

Solution (A - \(\lambda\)iI) = [0] n'est pas acceptable, car elle implique que A = \(\lambda\)iI et donc que A soit une matrice scalaire

La solution nécessite donc que \(\lambda\)i et ui soient tels que le produit scalaire (A - \(\lambda\)iI) ui soit un vecteur nul

Donc, le vecteur ui doit être orthogonal à l'espace correspondant à A après que \(\lambda\)iI ait été soustrait de A

L'orthogonalité de deux vecteurs ou matrices est obtenue lorsque leur produit scalaire est nul

La solution |A - \(\lambda\)iI| = 0 signifie que, pour chaque valeur \(\lambda\)i, le rang de (A - \(\lambda\)iI) est inférieur à son ordre, ce qui rend le déterminant égal à zéro

Exemples numériques

Exemples numériques

Les valeurs propres de A sont les valeurs le long de l'axe \(\lambda\)i où la fonction \(\lambda\)i2 - 7\(\lambda\)i + 6 est zéro

Exemples numériques

Pour calculer les vecteurs propres u1 et u2 correspondant aux valeurs propres \(\lambda\)i1 et \(\lambda\)i2 :

Qui est équivalent aux paires d'équations linéaires suivantes :

Exemples numériques

Ces ensembles d'équations linéaires sont toujours indéterminés. La solution est donnée par n'importe quel vecteur dans la direction du vecteur propre recherché

Par exemple, la valeur u = 1 peut être attribuée arbitrairement au premier élément u dans chaque ensemble:

Exemples numériques

Ce qui nous donne les vecteurs propres u1 et u2

Les vecteurs suivants satisfont également aux deux paires d'équations linéaires, puisque ces vecteurs propres ne diffèrent que par un multiplicateur scalaire :

Valeurs propres et vecteurs propres

La solution du système d'équations linéaires utilisé pour calculer les vecteurs propres est grandement facilitée par l'inversion matricielle, Cnn = (A - \(\lambda\)nI)

Le système des équations est indéterminé, ce qui empêche l'inversion de C et le calcul de u. Pour supprimer l'indétermination, il suffit de déterminer un élément du vecteur u (u1 = \(\alpha\))

Valeurs propres et vecteurs propres

Valeurs propres et vecteurs propres

La première rangée de C est supprimée pour obtenir une matrice carrée d'ordre (n - 1), qui peut être inversée

Exemples numériques

Pour la matrice asymétrique

Le polynôme caractéristique est \(\lambda\)3 - 3\(\lambda\)2 - 4\(\lambda\) = 0, à partir de laquelle les trois valeurs propres 4, 0 et -1 peuvent être calculées. Leur somme doit être égale à la trace de A, qui est 3

Exemples numériques

Les vecteurs propres sont calculés en insérant chaque valeur propre, à son tour, dans l'équation (A – \(\lambda\)iI)ui = 0. Pour \(\lambda\)1 = 4:

Le système ci-dessus est déterminé en définissant u11 = 1

Exemples numériques

Les deux autres vecteurs propres sont calculés de la même manière, à partir des valeurs propres \(\lambda\)2 = 0 et \(\lambda\)3 = -1

Qui est normalisé à

Ces vecteurs propres, qui ont été extraits d'une matrice asymétrique, ne sont pas orthogonaux (aucun des produits scalaires entre les paires de colonnes est égal à zéro)

Chercher les racines d'un polynôme

La fonction polyroot de la bibliothèque {base} est la plus simple à utiliser pour trouver les racines d'un polynôme

# Exemple du manuel, p. 98; 3 racines à trouver
# polyroot() trouve les zéros d'un polynôme réel ou complexe
(res = as.numeric(polyroot(c(0,-4,-3,1))))   # Ordre des coefficients: de x^0 à x^3
## Warning: imaginary parts discarded in coercion
## [1]  0 -1  4
sort(res, decreasing = TRUE)
## [1]  4  0 -1

Chercher les racines d'un polynôme

Fonction polynomial de la bibliothèque {polynom}

require(polynom) 
toto = polynomial(c(0,-4,-3,1))   # Ordre des coefficients: de x^0 à x^3
res = solve(toto)
sort(res, decreasing = TRUE)
## [1]  4  0 -1

Propriétés des valeurs propres et vecteurs propres

  1. Vecteurs orthogonaux

b•c = |b| • |c| • cos θ => si θ = 90º, cos θ = 0, donc bc = 0

Il se peut que certaines valeurs propres (disons, m) soient égales. Dans ce cas, il y aura m vecteurs propres linéairement indépendants qui correspondent à la même valeur propre seulement si le rang de (A - \(\lambda\)iI) est r = n - m :

Pour la matrice Ann, lorsque m = 1, la condition pour |A - \(\lambda\)iI| = 0 est un rang r = n - 1. Donc, plus généralement, il y aura m vecteurs propres linéairement indépendants lorsque r = n - m

Propriétés des valeurs propres et vecteurs propres

2. Rang d'une matrice : Lorsque le rang (r) d'une matrice Ann est plus petit que son ordre (r < n), le déterminant |A| = 0

rang(mat) < taille(mat) => det(mat) = 0

La matrice a (n - r) valeurs propres nulles. Donc, les valeurs propres peuvent être utilisées pour déterminer le rang d'une matrice _symétrique carrée: le rang est égal au nombre de valeurs propres non nulles

Propriétés des valeurs propres et vecteurs propres

3. Aui = \(\lambda\)i ui

=> Aui - \(\lambda\)i ui = 0 => (A - **\(\lambda\)iI) ui = 0

Raisonnement

  • ui = 0 ?
  • (A - **\(\lambda\)iI) = 0 ?
  • (A - **\(\lambda\)iI) est orthogonale à ui Propriété des vecteurs orthogonaux et matrices

=> le produit de (A - **\(\lambda\)iI) et ui est un vecteur nul

Solution numérique: trouver \(\lambda\)i** telle que | A - **\(\lambda\)iI | = 0 Propriété rang(mat) < taille(mat)

Exemple numérique

A = matrix(c(2,2,2,5), 2, 2)
eigen.out = eigen(A)$values
# Vérifier que | A – λi I | = 0 pour chaque λi
matLambda1 = matrix(c(-4,2,2,-1), 2, 2) # λ1 = 6   
det(matLambda1)
## [1] 0
matLambda2 = matrix(c(1,2,2,4), 2, 2) # λ2 = 1
det(matLambda2) 
## [1] 0

Algèbre matricielle en écologie numérique

  1. Le déterminant permet d’identifier la présence de variables colinéaires :

    determinant = det(cor(mat))

  2. L’inversion matricielle permet de calculer la régression linéaire :

    b = [X'X]–1 [X'y]
    \(\hat{y}\) = X[X'X]–1 X'y

# b = solve(t(X) %*% X) %*% t(X) %*% y
# y.ajuste = X %*% b

Algèbre matricielle en écologie numérique

3. Les valeurs propres permettent de connaître le rang d’une matrice X :

# XprX = t(X) %*% X
# XprX.eig = eigen(XprX)
# rang.X = length(which(XprX.eig$values > 0.00000001))

Algèbre matricielle en écologie numérique

4. La décomposition en vecteurs propres permet de faire une ordination (ACP) :

# Y.cent = scale(Y, center=TRUE, scale=FALSE)
# Y.eigen = eigen(cov(Y))

## ou :
# Y.svd = svd(cov(Y))
## puis :       
# U = Y.eigen$vectors
# F = Y.cent %*% U
## graphique ACP :
# biplot(F, U)

Travaux pratiques et devoirs

Travaux pratiques

Opérations matricielles de base   

Devoirs

Exercice, chapitre 2   

Le devoir "Exercice, chapitre 2" est à remettre au début du cours de la semaine prochaine

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

1. Fonction ‘scan’ (lire des données dans la console R pour former un vecteur)

vec1=scan()
# 1: 1
# 2: 5
# 3: 35
# 4: 
# Read 3 items
vec1
## numeric(0)
vec2=scan()
# 1: 1
# 2: 2
# 3: 4
# 4:
# Read 3 items

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

2. Fonction ‘c’ (combiner)

vec1 = c(1, 5, 35)
vec1
## [1]  1  5 35
# La commande ‘c’ permet de combiner des vecteurs préexistants
vec2 = c(1,2,4)
vec12 = c(vec1, vec2)
vec12
## [1]  1  5 35  1  2  4

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

Créer un vecteur formé de 6 valeurs, puis tenter de transformer celui-ci en matrice

vec3 = c(6, 3, 0, 7, -5, 1)
mat3 = matrix(vec3, 3, 2)
mat3
##      [,1] [,2]
## [1,]    6    7
## [2,]    3   -5
## [3,]    0    1
# Ou sur une seule ligne: mat3 = matrix(c(6, 3, 0, 7, -5, 1), 3, 2)

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

Créer un vecteur formé de 6 valeurs, puis tenter de transformer celui-ci en matrice

mat1 = matrix(vec3, 3, 2, byrow=TRUE)
mat1
##      [,1] [,2]
## [1,]    6    3
## [2,]    0    7
## [3,]   -5    1
# Pourquoi les matrices mat1 et mat3 sont-elles différentes?
# Quelle convention suit le langage R, par défaut, lorsqu’il crée une matrice à partir d’un vecteur?

# On peut également inscrire les données dans un fichier et demander à R de lire ce fichier par la commande ‘read.table’. Voir le document « Introduction aux fonctions du langage R »

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

4. Générer des vecteurs de nombres aléatoires

# Fonction ‘rnorm’ pour des nombres aléatoires tires d’une distribution normale
aleaNorm1=rnorm(10) # ou aleaNorm1=rnorm(10,mean=0,sd=1)
aleaNorm1
##  [1]  0.5033859 -0.4682334  0.6410015  0.9741612 -2.0684350 -0.6974726
##  [7] -1.1019362  0.9473846  0.3579102 -1.3859091
aleaNorm2=rnorm(10,mean=50,sd=10)
aleaNorm2
##  [1] 44.22151 43.90182 57.80856 42.93830 63.29894 46.09055 51.79692
##  [8] 49.30357 54.08408 37.44432

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

4. Générer des vecteurs de nombres aléatoires

# Fonction ‘runif’ pour des nombres aléatoires tires d’une distribution uniforme
aleaUnif1=runif(5) # ou aleaUnif1=runif(5,min=0,max=1)
aleaUnif1
## [1] 0.91400284 0.67938490 0.59868820 0.05866941 0.81207431
aleaUnif2=runif(5,min=10,max=20)
aleaUnif2
## [1] 19.78722 19.69108 18.31089 11.44174 12.19267

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

4. Générer des vecteurs de nombres aléatoires

# Fonction ‘rlnorm’ pour la distribution lognormale (distribution dont le log donne une distribution normale). On peut préciser la moyenne ‘meanlog’ et l’écart type ‘sdlog’ de la distribution normale correspondante.
aleaLNorm1=rlnorm(5) # ou aleaLNorm1=rlnorm(5,meanlog=0,sdlog=1)
aleaLNorm1
## [1] 0.09711153 1.67509249 1.42336964 0.39357032 0.67164390
aleaLNorm2=rlnorm(5,meanlog=2,sdlog=5)
aleaLNorm2
## [1]  0.001445838  1.632176723 14.784711570 53.415171498  0.109286175

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

5. Générer des sequences régulières de nombres

res = seq(1, 5, 0.5)
res
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

6. Répéter des sequences de nombres

res = rep(c(1, 2, 3), 4)
res
##  [1] 1 2 3 1 2 3 1 2 3 1 2 3

Travaux pratiques

1. Créer des vecteurs et des matrices

Il y a plusieurs façons de créer des vecteurs en langage R

7. Les fonctions 'fix(nom)' et 'edit(nom)' permettent de modifier une ou des valeurs dans une matrice. L'objet peut être de type 'data.frame', 'matrix' ou 'vector'

vec3 = c(6, 3, 0, 7, -5, 1)
mat1 = matrix(vec3, 3, 2, byrow=TRUE)

# 'fix' modifie directement les valeurs de la matrice :
fix(mat1)
# 'edit' conserve les changements dans une nouvelle matrice dont on aura fourni le nom.
mat1a = edit(mat1)

Travaux pratiques

2. Opérations matricielles de base

1. Somme de deux vecteurs ou de deux matrices: opérateur '+'

vec1 = c(1, 5, 35)
vec2 = c(1, 2, 4)
vec1+vec2 
## [1]  2  7 39

Travaux pratiques

2. Opérations matricielles de base

1. Somme de deux vecteurs ou de deux matrices: opérateur '+'

# mat1+mat2
vec3 = c(6, 3, 0, 7, -5, 1)
mat1 = matrix(vec3, 3, 2, byrow=TRUE)
mat2 # Saisissez la matrice mat2 à l’aide de la fonction matrix()
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8   10
#       [,1]  [,2]
# [1,]    3    8
# [2,]    2   -1
# [3,]    6   -4

Travaux pratiques

2. Opérations matricielles de base

1. Somme de deux vecteurs ou de deux matrices: opérateur '+'

# Solution
vec3 = c(6, 3, 0, 7, -5, 1)
mat1 = matrix(vec3, 3, 2, byrow=TRUE)
mat2 = matrix(c(3,2,6,8,-1,4), 3, 2)
mat1+mat2
##      [,1] [,2]
## [1,]    9   11
## [2,]    2    6
## [3,]    1    5
# Il faut s’assurer que deux matrices ont le même nombre de lignes et de colonnes avant de calculer leur somme.
# Que produirait la commande mat1+t(mat2) ?

Travaux pratiques

2. Opérations matricielles de base

2. Produit scalaire de deux vecteurs ou de deux matrices: opérateur %*%

# Exemple du manuel, p. 72
vec1 = c(1, 5, 35)
vec2 = c(1,2,4)
vec1 %*% vec2
##      [,1]
## [1,]  151
# Lors du calcul d’un produit de deux vecteurs, R considère que le premier vecteur est horizontal et le second vertical.

Travaux pratiques

2. Opérations matricielles de base

2. Produit scalaire de deux vecteurs ou de deux matrices: opérateur %*%

# On peut spécifier l’orientation des vecteurs en les transformant en matrices.
vec1 = c(1, 5, 35)
vec2 = c(1,2,4)
Mvec1=matrix(vec1, 1, 3)
Mvec2=matrix(vec2, 3, 1)
Mvec1
##      [,1] [,2] [,3]
## [1,]    1    5   35
Mvec2
##      [,1]
## [1,]    1
## [2,]    2
## [3,]    4
Mvec1 %*% Mvec2
##      [,1]
## [1,]  151
# Que produirait la commande Mvec2 %*% Mvec1 ?

# Il faut s’assurer que deux matrices sont conformes avant de calculer leur produit, c’est-à-dire que le nombre de colonnes de la matrice de gauche est identique au nombre de lignes de la matrice de droite.

Travaux pratiques

2. Opérations matricielles de base

2. Produit scalaire de deux vecteurs ou de deux matrices: opérateur %*%