Initiation à l analyse en composantes principales



Documents pareils
Initiation à l analyse en composantes principales

ISFA 2 année Les questions sont en grande partie indépendantes. Merci d utiliser l espace imparti pour vos réponses.

Traits biologiques : variables ou K-tableaux?

Analyse des correspondances avec colonne de référence

Avant-après, amont-aval : les couples de tableaux totalement appariés

Analyse en Composantes Principales

Mémo d utilisation de ADE-4

ACP Voitures 1- Méthode

L ANALYSE EN COMPOSANTES PRINCIPALES (A.C.P.) Pierre-Louis GONZALEZ

L'analyse des données à l usage des non mathématiciens

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

1 Complément sur la projection du nuage des individus

La classification automatique de données quantitatives

Statistique Descriptive Multidimensionnelle. (pour les nuls)

Individus et informations supplémentaires

Lire ; Compter ; Tester... avec R

Logiciel XLSTAT version rue Damrémont PARIS

Extraction d informations stratégiques par Analyse en Composantes Principales

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Déroulement d un projet en DATA MINING, préparation et analyse des données. Walid AYADI

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

La structure de la base de données et l utilisation de PAST. Musée Royal de l Afrique Centrale (MRAC Tervuren)

Statistiques Descriptives à une dimension

Aide-mémoire de statistique appliquée à la biologie

Analyses multivariées avec R Commander (via le package FactoMineR) Qu est ce que R? Introduction à R Qu est ce que R?

Introduction à la présentation graphique avec xmgrace

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

Introduction. Préambule. Le contexte

Analyse discriminante et régression logistique: application au cas de l innovation pour les entreprises du Canton du Tessin

Fiche TD avec le logiciel. Courbes de niveau. D. Chessel

LES TYPES DE DONNÉES DU LANGAGE PASCAL

TP Blender n 2 : Importation d un modèle SketchUp et animation

Un exemple de régression logistique sous

Introduction à l'analyse multivariée (factorielle) sous R. Stéphane CHAMPELY

La corrélation entre deux matrices de distances euclidiennes

ESIEA PARIS

Densité de population et ingestion de nourriture chez un insecte vecteur de la maladie de Chagas

BIRT (Business Intelligence and Reporting Tools)

Première session de travail

Tutoriel Mathematica Les graphiques

BASE. Vous avez alors accès à un ensemble de fonctionnalités explicitées ci-dessous :

Python - introduction à la programmation et calcul scientifique

ProxiLens : Exploration interactive de données multidimensionnelles à partir de leur projection

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Extraction d information des bases de séquences biologiques avec R

Analyse de la vidéo. Chapitre La modélisation pour le suivi d objet. 10 mars Chapitre La modélisation d objet 1 / 57

Introduction aux Statistiques et à l utilisation du logiciel R

SPHINX Logiciel de dépouillement d enquêtes

Cours 7 : Utilisation de modules sous python

Correction de l examen de la première session

Les concepts de base, l organisation des données

SAS de base : gestion des données et procédures élémentaires

Exercice : la frontière des portefeuilles optimaux sans actif certain

Introduction à MATLAB R

Ricco.Rakotomalala

Séries Statistiques Simples

Analyse exploratoire des données

INF6304 Interfaces Intelligentes

Faire un semi variograme et une carte krigée avec surfer

MANUEL D UTILISATION PRO-FACE

Package TestsFaciles

Introduction à Eclipse

Fonctions de plusieurs variables

Statistique Descriptive Élémentaire

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Opérations de base sur ImageJ

Réalisation de cartes vectorielles avec Word

TP 1 Introduction à Matlab Février 2009

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Création de fonds de cartes statiques et dynamiques avec R et Google Maps

L analyse boursière avec Scilab

LABO 5 ET 6 TRAITEMENT DE SIGNAL SOUS SIMULINK

Poker. A rendre pour le 25 avril

La segmentation à l aide de EG-SAS. A.Bouhia Analyste principal à la Banque Nationale du Canada. Chargé de cours à l UQAM

MANIPULATION ET VISUALISATION DE GROSSES BASES DE DONNÉES AVEC R

Introduction à l approche bootstrap

UTILISATION D'UN RADIOCHRONOMETRE POUR DATER DES GRANITES

1 Importer et modifier des données avec R Commander

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

Séance 0 : Linux + Octave : le compromis idéal

enquête pour les fautes sur le fond, ce qui est graves pour une encyclopédie.

Optimiser ses graphiques avec R

La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) }

Création d une SIGNATURE ANIMÉE avec PHOTOFILTRE 7

Leçon N 4 : Statistiques à deux variables

Recherche dans un tableau

Calcul Formel et Numérique, Partie I

Une introduction au langage R

as Architecture des Systèmes d Information

Régression linéaire. Nicolas Turenne INRA

Optimisation, traitement d image et éclipse de Soleil

Initiation à LabView : Les exemples d applications :

Exercices M1 SES Ana Fermin ( fermin.perso.math.cnrs.fr/ ) 14 Avril 2015

Chapitre 3 : Repères et positionnement 3D

Initiation au logiciel R

Le Sphinx Millenium Modes opératoires Préparer, administrer, Dépouiller les enquêtes

MODULES 3D TAG CLOUD. Par GENIUS AOM

Traitement des données avec Microsoft EXCEL 2010

Diviser un nombre décimal par 10 ; 100 ; 1 000

Transcription:

Fiche TD avec le logiciel : tdr1103 Initiation à l analyse en composantes principales A.B. Dufour & D. Clot Une première approche très intuitive et interactive de l ACP. Table des matières 1 Introduction 2 2 Les données 2 3 Visualisation des données en trois dimensions 3 4 Centrage et réduction 4 5 La forme générale du nuage 5 6 ACP centrée-réduite dans ade4 6 6.1 Calculs................................. 6 6.1.1 tab.............................. 7 6.1.2 cw............................... 7 6.1.3 lw............................... 7 6.1.4 eig.............................. 8 6.1.5 rank.............................. 8 6.1.6 nf............................... 8 6.1.7 c1............................... 9 6.1.8 l1............................... 9 6.1.9 co............................... 9 6.1.10 li............................... 10 6.1.11 call.............................. 10 6.1.12 cent.............................. 11 6.1.13 norm.............................. 11 6.2 Dé-réduction et dé-centrage..................... 11 6.3 Représentations graphiques dans ade4............... 11 6.3.1 Représentation des individus................ 11 6.3.2 Représentation des variables................. 14 6.3.3 Représentation simultanée des individus et des variables. 14 7 Changement de pondération sur les individus 16 1

Références 17 1 Introduction Les méthodes d analyse de données sont une branche à part entière de la statistique. Nous vous proposons ici une introduction, très sommaire, à l une d entre elles, connue sous le nom d analyse en composantes principales (ACP). Plus précisément, nous n utiliserons qu une des variantes : l ACP centrée et réduite appelée aussi ACP normée. Nous nous intéresserons également à la pondération associée à chaque ligne du tableau analysé. 2 Les données Les données représentent les dépenses de santé, pour une mutuelle, dans trois secteurs : maladie, dentaire et optique. Afin de ne pas nuire à leur confidentialité, 20 classes d âge ont été conservées sur l ensemble et les dépenses affichées sont les moyennes pour chacune d elles. depsante <- read.table("http://pbil.univ-lyon1.fr/r/donnees/depsante.txt",h=true,dec=",") names(depsante) [1] "age" "groupe" "effectif" "maladie" "dentaire" "optique" La colonne effectif contient le nombre d individus du tableau original sur lequel a porté le calcul de la moyenne. Elle nous servira à discuter de la pondération des lignes. Les âges ont été répartis en trois groupes : jeunes, actifs, anciens. Nous récupérons cette variable qualitative dans un vecteur, et définissons un vecteur de couleurs pour les distinguer facilement : groupe <- depsante$groupe summary(groupe) actifs anciens jeunes 8 8 4 couleur <- rep(c("orange","red2","red4"),c(4,8,8)) Nous extrayons les trois variables quantitatives de ce jeu de données c est-àdire les dépenses dans les secteurs maladie, dentaire et optique. Toutes sont exprimées en euros. mesures <- depsante[,4:6] names(mesures) [1] "maladie" "dentaire" "optique" plot(mesures, col = couleur, pch=19) Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 2/18 Compilé le 2012-10-09

0 50 100 200 maladie 50 100 150 200 250 0 50 100 200 dentaire optique 0 10 20 30 40 50 50 100 150 200 250 0 10 20 30 40 50 3 Visualisation des données en trois dimensions Chaque individu est caractérisé par trois variables, soit par un point dans R 3. La fonction plot3d() de la bibliothèque rgl [1] vous permet d explorer facilement un nuage de points en 3 dimensions. library(rgl) plot3d(mesures, type = "s", col = couleur) Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 3/18 Compilé le 2012-10-09

Faites tourner avec le curseur de la souris cette représentation pour en avoir différents points de vue : 4 Centrage et réduction Les représentations graphiques précédentes sont trompeuses parce que nous n avons pas utilisé la même échelle en x, y et z. sapply(mesures,mean) 116.950 49.395 29.885 sapply(mesures,var) 2905.1142 2979.5258 173.6319 Les moyennes et les variances sont très différentes d une dépense à l autre. L optique semble jouer un rôle à part. Pour éviter de telles différences, il est opportun de donner à chaque variable une même importance. Pour ce faire, nous réalisons un centrage (retrancher la moyenne) et une réduction (diviser par l écart-type) sur les données. La fonction scale() permet d effectuer directement cette opération : Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 4/18 Compilé le 2012-10-09

mesures.cr <- scale(mesures) class(mesures.cr) [1] "matrix" mesurescr <- as.data.frame(mesures.cr) sapply(mesurescr,mean) 1.447410e-18 8.343749e-17-1.159446e-16 round(sapply(mesurescr,mean),2) 0 0 0 sapply(mesurescr,var) 1 1 1 lims <- c(min(mesurescr),max(mesurescr)) plot3d(mesurescr, type = "s", col = couleur, xlim = lims, ylim = lims, zlim = lims) Quand une ACP normée est réalisée, les données sont donc centrées et réduites. Il est important de bien comprendre à quoi correspondent ces opérations. 5 La forme générale du nuage Dans l exemple que nous avons choisi, la forme générale du nuage de points est celle d une dragée (le terme technique est un ellipsoïde). plot3d(mesurescr, type = "s", col = couleur, xlim = lims, ylim = lims, zlim = lims) plot3d( ellipse3d(cor(mesurescr)), col="grey", alpha=0.5, add = TRUE) Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 5/18 Compilé le 2012-10-09

Une dragée est définie par ses trois axes : 1. Le premier axe correspondant au plus grand diamètre de l ellipsoïde, la longueur de la dragée. 2. Le deuxième axe correspondant au diamètre moyen de l ellipsoïde, la largeur de la dragée. 3. Le troisième axe correspondant au plus petit diamètre de l ellipsoïde, l épaisseur de la dragée. Faites tourner le graphique précédent pour représenter le nuage de points dans le plan des axes (1,2), puis (1,3) puis (2,3). Si vous aviez à choisir entre les trois plans que nous avons envisagés ci-dessus, vous n hésiteriez pas à prendre le plan défini par les deux premiers axes parce que c est dans cette représentation que nous avons le moins de perte d information par rapport au nuage de points dans R 3 : c est dans cette projection que les points sont les plus étalés dans le plan (on dit aussi que l on a conservé le maximum possible de l inertie initiale du nuage de points). Ce faisant, vous avez en fait réalisé une ACP à la main. 6 ACP centrée-réduite dans ade4 6.1 Calculs Utiliser la fonction dudi.pca() du paquetage ade4 [2] pour exécuter une ACP centrée réduite : library(ade4) acp <- dudi.pca(mesures, scannf = FALSE, nf = 3) names(acp) [1] "tab" "cw" "lw" "eig" "rank" "nf" "c1" "li" "co" "l1" "call" [12] "cent" "norm" Nous avons utilisé ici les options scann = FALSE pour conserver automatiquement nf = 3 facteurs. En général on ne procède pas ainsi : on commence par examiner le graphe des valeurs propres qui exprime quelle fraction de la variance totale est prise en compte par les axes successifs. Essayer avec : Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 6/18 Compilé le 2012-10-09

acp <- dudi.pca(mesures) Répondre 3 à la question "Select the number of axes:". Dans la pratique, on ne conserve qu un nombre réduit d axes, ici nous les avons tous conservés pour des raisons pédagogiques. L objet renvoyé par la fonction dudi.pca() est très riche. Nous allons examiner tous ses composants un à un. 6.1.1 tab Le data frame tab contient les données du tableau initial après centrage et réduction. Par rapport au résultat obtenu avec la fonction scale() vous noterez de petites différences : head(acp$tab) 1-1.0041048-0.8908348-0.6918006 2-0.8898939 0.4850299 0.5072685 3-0.8765692 3.9378486 0.6084886 4-1.1240264-0.7273099 0.3749037 5-0.9679380-0.5506278 1.2002370 6-0.3987867-0.5562666 1.0445137 head(mesurescr) 1-0.9786803-0.8682783-0.6742838 2-0.8673612 0.4727486 0.4944242 3-0.8543740 3.8381401 0.5930813 4-1.0955654-0.7088940 0.3654110 5-0.9434293-0.5366856 1.1698463 6-0.3886892-0.5421816 1.0180661 Cette petite différence est due à l utilisation d une variance en 1 n dans dudi.pca() contre une variance en 1 n 1 dans scale(). Pour retrouver exactement le tableau utilisé dans dudi.pca() faire : var.n <- function(x) sum((x-mean(x))^2)/length(x) scale.n <- function(x) (x - mean(x))/sqrt(var.n(x)) head(apply(mesures, 2, scale.n)) [1,] -1.0041048-0.8908348-0.6918006 [2,] -0.8898939 0.4850299 0.5072685 [3,] -0.8765692 3.9378486 0.6084886 [4,] -1.1240264-0.7273099 0.3749037 [5,] -0.9679380-0.5506278 1.2002370 [6,] -0.3987867-0.5562666 1.0445137 6.1.2 cw Le vecteur cw donne le poids des colonnes (column weight), c est-à-dire le poids des variables. Par défaut, chaque variable a un poids de 1. acp$cw [1] 1 1 1 6.1.3 lw Le vecteur lw donne le poids des lignes (line weight), c est-à-dire le poids des individus. Par défaut, chaque individu a un poids de 1 n. head(acp$lw) [1] 0.05 0.05 0.05 0.05 0.05 0.05 head(acp$lw)*nrow(mesures) [1] 1 1 1 1 1 1 Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 7/18 Compilé le 2012-10-09

6.1.4 eig Le vecteur eig donne les valeurs propres (eigen values) de la plus petite des matrices à diagonaliser. acp$eig [1] 1.7371612 0.9015541 0.3612847 sum(acp$eig) [1] 3 Les valeurs propres nous renseignent sur la fraction de l inertie totale prise en compte par chaque axe : (pve <- 100*acp$eig/sum(acp$eig)) [1] 57.90537 30.05180 12.04282 cumsum(pve) [1] 57.90537 87.95718 100.00000 Dans notre exemple, le premier axe factoriel extrait 57.9 % de l inertie totale, le deuxième axe factoriel 30.1 % de l inertie totale. Le premier plan factoriel représente donc 88 % de l inertie initiale. Ceci signifie que lorsque nous projetons le nuage de points initial dans R 3 sur le plan défini par les deux premiers axes factoriels, nous avons perdu peu d information. 6.1.5 rank Cet entier donne le rang (rank) de la matrice diagonalisée, dans notre cas le nombre de composantes principales. acp$rank [1] 3 bismesures <- cbind(mesures,mesures) head(bismesures) 1 64.2 2.0 21.0 64.2 2.0 21.0 2 70.2 75.2 36.4 70.2 75.2 36.4 3 70.9 258.9 37.7 70.9 258.9 37.7 4 57.9 10.7 34.7 57.9 10.7 34.7 5 66.1 20.1 45.3 66.1 20.1 45.3 6 96.0 19.8 43.3 96.0 19.8 43.3 colnames(bismesures) <- c("maladie1","dentaire1","optique1", "maladie2","dentaire2","optique2") dudi.pca(bismesures,scann=f,n=3)$rank [1] 3 6.1.6 nf Cet entier donne le nombre de facteurs conservés dans l analyse : acp$nf [1] 3 Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 8/18 Compilé le 2012-10-09

6.1.7 c1 c1 donne les coordonnées des variables (colonnes). Les vecteurs sont de norme unité : acp$c1 CS1 CS2 CS3 maladie 0.6582899-0.2804235-0.69858221 dentaire -0.3456279-0.9370149 0.05044165 optique -0.6687270 0.2082443-0.71374963 sum(acp$cw * acp$c1$cs1^2) [1] 1 6.1.8 l1 l1 donne les coordonnées des individus (lignes). Les vecteurs sont de norme unité : head(acp$l1) RS1 RS2 RS3 1 0.08310309 1.0239436 1.9137334 2-0.82902915-0.1045783 0.4726025 3-1.77917665-3.4937239 0.6266807 4-0.56089293 1.1319356 0.8001581 5-0.94801891 1.0924901-0.3464807 6-0.58326421 0.8958098-0.8235236 sum(acp$lw * acp$l1$rs1^2) [1] 1 6.1.9 co co donne les coordonnées des variables (colonnes). Les vecteurs sont normés à la racine carrée de la valeur propre correspondante : acp$co Comp1 Comp2 Comp3 maladie 0.8676353-0.2662627-0.41989654 dentaire -0.4555425-0.8896976 0.03031894 optique -0.8813916 0.1977284-0.42901321 sum(acp$cw * acp$co$comp1^2) [1] 1.737161 Le lien entre les c1 et les co s obtient par : acp$c1$cs1 * sqrt(acp$eig[1]) [1] 0.8676353-0.4555425-0.8813916 t(t(acp$c1) * sqrt(acp$eig)) CS1 CS2 CS3 maladie 0.8676353-0.2662627-0.41989654 dentaire -0.4555425-0.8896976 0.03031894 optique -0.8813916 0.1977284-0.42901321 Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 9/18 Compilé le 2012-10-09

6.1.10 li li donne les coordonnées des individus (lignes). Les vecteurs sont normés à la racine carrée de la valeur propre correspondante : head(acp$li) Axis1 Axis2 Axis3 1 0.1095310 0.97223653 1.1502870 2-1.0926721-0.09929729 0.2840670 3-2.3449799-3.31729801 0.3766787 4-0.7392648 1.07477518 0.4809507 5-1.2495023 1.03732155-0.2082590 6-0.7687505 0.85057328-0.4949950 sum(acp$lw * acp$li$axis1^2) [1] 1.737161 head(acp$l1$rs1 * sqrt(acp$eig[1])) [1] 0.1095310-1.0926721-2.3449799-0.7392648-1.2495023-0.7687505 head(t(t(acp$l1) * sqrt(acp$eig))) RS1 RS2 RS3 1 0.1095310 0.97223653 1.1502870 2-1.0926721-0.09929729 0.2840670 3-2.3449799-3.31729801 0.3766787 4-0.7392648 1.07477518 0.4809507 5-1.2495023 1.03732155-0.2082590 6-0.7687505 0.85057328-0.4949950 6.1.11 call Cet objet garde une trace de la façon dont ont été conduits les calculs lors de l appel de la fonction dudi.pca() : acp$call dudi.pca(df = mesures, scannf = FALSE, nf = 3) La fonction eval() permet de refaire les mêmes calculs : eval(acp$call) Duality diagramm class: pca dudi $call: dudi.pca(df = mesures, scannf = FALSE, nf = 3) $nf: 3 axis-components saved $rank: 3 eigen values: 1.737 0.9016 0.3613 vector length mode content 1 $cw 3 numeric column weights 2 $lw 20 numeric row weights 3 $eig 3 numeric eigen values data.frame nrow ncol content 1 $tab 20 3 modified array 2 $li 20 3 row coordinates 3 $l1 20 3 row normed scores 4 $co 3 3 column coordinates 5 $c1 3 3 column normed scores other elements: cent norm identical(eval(acp$call), acp) [1] TRUE Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 10/18 Compilé le 2012-10-09

6.1.12 cent Ce vecteur donne les moyennes (cent pour centrage) des variables analysées : acp$cent 116.950 49.395 29.885 colmeans(mesures) 116.950 49.395 29.885 6.1.13 norm Ce vecteur donne les écarts-types (sur n) des variables analysées : acp$norm 52.53436 53.20291 12.84330 sd.n <- function(x) sqrt(var.n(x)) apply(mesures, 2, sd.n) 52.53436 53.20291 12.84330 6.2 Dé-réduction et dé-centrage Si vous avez bien compris en quoi consiste l opération de centrage et réduction, vous devez pouvoir être capables de faire l opération inverse. À partir des objets acp$tab, acp$cent et acp$norm, reconstituez les données de départ, placez le résultat dans l objet recon : head(recon) [1,] 64.2 2.0 21.0 [2,] 70.2 75.2 36.4 [3,] 70.9 258.9 37.7 [4,] 57.9 10.7 34.7 [5,] 66.1 20.1 45.3 [6,] 96.0 19.8 43.3 6.3 Représentations graphiques dans ade4 6.3.1 Représentation des individus La fonction s.label() permet de représenter les individus sur les différents plans factoriels, par exemple sur le premier plan factoriel : s.label(acp$li, xax = 1, yax = 2) Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 11/18 Compilé le 2012-10-09

5 4 6 9 10 12 11 2 1 7 8 13 15 14 18 16 20 17 19 3 Afin de bien interpréter les données, il est préférable d utiliser comme étiquette d un individu l âge moyen. s.label(acp$li, xax = 1, yax = 2, label=as.character(depsante$age)) 25 20 30 45 50 60 55 10 5 35 40 65 75 70 90 80 100 85 95 15 Exercice. Faire les représentations dans les plans (1,2), (1,3) et (2,3) avec une échelle commune pour tous les graphiques afin d obtenir la représentation cidessous. Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 12/18 Compilé le 2012-10-09

A.B. Dufour & D. Clot 25 20 30 5 45 50 35 60 55 40 10 65 80 85 70 75 90100 95 15 20 10 25 60 30 55 45 50 5 40 35 65 70 75 85 80 90 100 100 5 40 35 15 20 65 10 70 75 85 25 80 90 5560 30 45 95 95 50 15 La fonction s.class() permet de porter en information supplémentaire une variable qualitative définissant des groupes d individus, par exemple : gcol <- c("red1", "red4","orange") s.class(dfxy = acp$li, fac = depsante$groupe, col = gcol, xax = 1, yax = 2) actifs jeunes anciens Exercice. Faire les représentation dans les trois plans factoriels : actifs jeunes jeunes jeunes anciens actifs anciens anciens actifs Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 13/18 Compilé le 2012-10-09

A.B. Dufour & D. Clot 6.3.2 Représentation des variables La fonction s.corcircle() représente les variables initiales dans le nouvel espace. Cette représentation est appelée cercle des corrélations : s.corcircle(acp$co, xax = 1, yax = 2) optique maladie dentaire Sur le premier facteur de l ACP, nous notons une opposition entre les secteurs optique et maladie. Le second facteur est associé au secteur dentaire. par(mfrow=c(1,3)) for(i in 1:3){ plot(x = acp$li[,1], y = mesures[,i], pch = 20, col = couleur, xlab = "Premier facteur de l'acp", las = 1, ylab = colnames(mesures)[i])} 250 50 250 200 40 maladie 200 150 dentaire 150 100 optique 30 20 100 50 50 0 10 0 2 1 0 1 2 3 Premier facteur de l'acp 2 1 0 1 2 3 Premier facteur de l'acp 2 1 0 1 2 3 Premier facteur de l'acp 6.3.3 Représentation simultanée des individus et des variables La fonction scatter() permet de représenter simultanément les individus et les variables. C est une fonction générique associée à un objet de la classe dudi. Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 14/18 Compilé le 2012-10-09

scatter(acp,posieig="bottomright") optique 5 4 6 9 10 12 11 2 1 7 8 13 14 16 17 18 20 15 19 maladie Eigenvalues 3 dentaire Enrichir le graphique en portant l information sur les groupes : scatter(acp, clab.row = 0, posieig = "none") s.class(acp$li,groupe,col=gcol, add.plot = TRUE, cstar = 0, clabel = 0, cellipse = 0, cpoint=2) optique maladie dentaire Faire le lien avec ce qui avait été obtenu à la main avec la fonction plot3d(), notez en particulier comment les axes de la base initiale se projettent sur le premier plan factoriel. Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 15/18 Compilé le 2012-10-09

7 Changement de pondération sur les individus Dans une analyse en composantes principales classique, la pondération associée aux individus est uniforme. acp$lw [1] 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 [17] 0.05 0.05 0.05 0.05 Les données sur lesquelles nous travaillons sont particulières car ce sont des moyennes de dépenses pour des classes d âge. Nous possédons le nombre d individus sur lequel les moyennes ont porté. Nous allons donc associé à chaque classe d âge une pondération liée aux nombres d individus appartenant à cette classe. poidsu <- acp$lw poidsd <- depsante$effectif poidsd <- poidsd/sum(poidsd) round(poidsd,3) [1] 0.059 0.058 0.067 0.083 0.050 0.054 0.036 0.032 0.040 0.063 0.096 0.095 0.063 [14] 0.046 0.039 0.056 0.037 0.021 0.004 0.001 Notons par exemple que les poids associés aux classes d âge les plus élevés sont beaucoup plus faibles que ceux liés à la pondération uniforme. Quelle incidence cela va-t-il avoir sur les résultats de l ACP? Ces nouvelles pondérations ont une incidence sur la moyenne et la variance. moypond <- function(x,pond) sum(pond*x) varpond <- function(x,pond) sum(pond*(x-sum(pond*x))^2) sapply(mesures,moypond,poidsu) 116.950 49.395 29.885 sapply(mesures,moypond,poidsd) 101.03121 55.27092 34.46188 sapply(mesures,varpond,poidsu) 2759.8585 2830.5495 164.9503 sapply(mesures,varpond,poidsd) 1198.40706 3446.77153 88.41082 acpd <- dudi.pca(mesures, row.w=poidsd, scannf=false, nf=3) liminf <- min(cbind(acp$li,acpd$li)) limsup <- max(cbind(acp$li,acpd$li)) lims <- c(liminf,limsup) par(mfrow=c(2,2)) s.corcircle(acp$co) s.corcircle(acpd$co) s.class(dfxy = acp$li, fac = groupe, col = gcol, xlim=lims, ylim=lims) s.class(dfxy = acpd$li, fac = groupe, col = gcol, xlim=lims, ylim=lims) Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 16/18 Compilé le 2012-10-09

optique optique maladie maladie dentaire dentaire d = 2 d = 2 x1 x1 actifs actifs jeunes anciens jeunes anciens Représentons les individus pour lesquels les poids sont inférieurs au poids uniforme c est-à-dire les individus 5, 7, 8, 9, 14, 15, 17, 18, 19 et 20. selectind <- c(5,7,8,9,14,15,17:20) liminf <- min(cbind(acp$li[selectind,],acpd$li[selectind,])) limsup <- max(cbind(acp$li[selectind,],acpd$li[selectind,])) lims <- c(liminf,limsup) par(mfrow=c(1,2)) s.label(acp$li[selectind,],label=depsante$age[selectind],xlim=lims,ylim=lims) s.label(acpd$li[selectind,],label=depsante$age[selectind],xlim=lims,ylim=lims) 25 45 40 35 70 75 85 90100 95 25 45 35 40 70 75 85 90100 95 Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 17/18 Compilé le 2012-10-09

Références [1] Daniel Adler and Duncan Murdoch. rgl : 3D visualization device system (OpenGL), 2006. R package version 0.68. [2] D. Chessel, A.-.B. Dufour, and J. Thioulouse. The ade4 package-i- One-table methods. R News, 4 :5 10, 2004. Logiciel R version 2.15.1 (2012-06-22) tdr1103.rnw Page 18/18 Compilé le 2012-10-09