vim amelia missforest missmda 0. console graphique: vmguimenu() i. prévisualisation des na (aggr,...

37
LES DONNÉES MANQUANTES

Upload: valentin-schmidt

Post on 04-Apr-2015

107 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

LES DONNÉES MANQUANTES

Page 2: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

PACKAGES

VIM Amelia missForest missMDA

Page 3: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

PACKAGE VIM=VISUALIZATION AND IMPUTATION OF MISSING

VALUES

0. Console graphique: vmGuimenu()

I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

II. Imputation (irmi, hotdeck, kNN)

III. Visualisation des imputations

Page 4: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

JDD UTILISÉ POUR PRÉSENTER VIM

Jdd = jeu de données

Page 5: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

VMGUIMENU()

Visualisation Imputation Diagnostic

Page 6: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION AGGR

Page 7: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION AGGR

aggr(x, delimiter, numbers, prop, sortVars)

Les arguments:-x = jdd-delimiter= extension indiquant les variables

imputées dan le jdd- numbers et prop = T ou F, sort le nombre ou

la proportion de chaque combinaison dans le jdd- sortVars = T ou F, indique si les variables

doivent être triées par le nombre de NA/imputations

Page 8: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

SORTIES DE AGGR-combinations = vecteur donnant la combinaison complète (aucun NA) et les combinaisons de variables pour lesquelles il y a des NA

-count = fréquence de chaque combinaison

-percent = pourcentage de chaque combinaison

-missings= dataframe donnant le nombre de NA/d’imputations pour chaque variable

Page 9: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTIONS BARMISS ET HISTMISS

Représentent la proportion de NA (d’une ou plusieurs variables) pour une variable

Page 10: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION MARGINMATRIX ET MARGINPLOT

marginplot(x,delimiter)- x=matrice ayant deux colonnes (2 variables

du jdd)Þ Plot les données observées d’une variable en

fonction de l’autre et ajoute des informations sur les NA

marginmatrix(x, delimiter)- x =jdd

=> Idem mais pour plusieurs variables (tous les graphes sur une fenêtre)

Page 11: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

SORTIE DE MARGINPLOT

Page 12: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

SORTIE DE MARGINMATRIX

Page 13: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION MATRIXPLOT

matrixplot(x, delimiter, sortby, col)- x = jdd- sortby = variable par laquelle il

faut trier les données- col = 1,2,3 ou 4; choix des couleurs

pour NA, données imputées, données observées.Þ Matrice de même taille que le jdd où un

rectangle = 1 cellule, colorée selon la nature de cette donnée

Page 14: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

SORTIE DE MATRIXPLOT

Page 15: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION IRMI: PRINCIPE

Régression de la variable ayant NA (Y) en fonction des autres variables (X1, X2...)

Change de Y, prend la variable suivante ayant NA

Recommence sur tout jdd jusqu’à ce que les valeurs imputées ne bougent plus.

Page 16: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION IRMI = ITERATIVE ROBUST MODEL-BASED IMPUTATION

But: imputation simple ou multiple irmi(x, eps, noise,mi) Les arguments:

-x=jdd-eps = seuil de convergence (laissé par

défaut)-noise= rajoute du bruit à la valeur

imputée (le fait par défaut, mettre FALSE sinon)-mi= nombre d’imputations que l’on veut

Page 17: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION HOTDECK

hotdeck(x, variable, imp_var) Les arguments:

- x = jdd- variable = sélection des variables à

imputer- imp_var=T ou F, par défaut T => rajoute

pour chaque variable imputée une colonne nommée « nomvariable_imp » où les données imputées sont indiquées par un « TRUE » Sortie = le jdd imputée avec la position des

données imputées (si imp_var=T)

Page 18: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

SORTIE HOTDECK

Page 19: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION KNN: PRINCIPE

Individu n°i avec NA pour Y et profil x (X1, X2…)

Prend les individus avec profil x le plus proche de i = ses « voisins »

Estime la valeur Y pour i selon celles des voisins

Estimation par moyenne, médiane…

Page 20: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION KNN kNN(x, variable, metric, k, dist_var, weights,

numFun, catFun, imp_var) Les arguments

-variable= variables à imputer-metric= métrique pour calculer les distances- k= nombre de voisins - dist_var = nom des variables pour calculer les

distances- weights = poids des variables utilisées pour

calculer les distances- numFun = fonction utilisée pour imputer la

donnée (variable quantitative: moyenne, médiane…)-catFun = fonction utilisée pour imputer la

donnée (variable qualitative: modalité la plus fréquente par exemple)

Page 21: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTIONS APRÈS IMPUTATION

Pbox scattMiss scattJitt ScattmatrixMiss colormapMiss pairsVIM parcoordMiss

Page 22: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

PACKAGE AMELIA

Source : http://gking.harvard.edu/amelia

I. Imputation multiple (amelia, write.amelia

II. Visualisation et qualité de l’imputation (missmap, plot, overimpute, mi.meld)

This package is named after this famous missing person Amelia E.

Page 23: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

JDD UTILISÉS POUR PRÉSENTER AMELIA

Page 24: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

VISUALISATION DES NA AVEC MISSMAP

missmap(obj=matrice, data.frame ou objet amelia, csvar=colonne où individus)

Page 25: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION AMELIA But: imputation multiple (algorithme de maximisation de la vraisemblance)

amelia(x, m, p2s, cs, logs, sqrts, noms, empri, priors, bounds)

Les arguments:- x = jeu de données- m= nombre de matrices créées (nombre d’imputations)- p2s = 0,1 ou 2 en fonction des sorties voulues- cs = « cross section » indiquant la colonnes où sont les individus- logs, sqrts = pour transformer des variables-noms = indiquer les variables qualitatives-empri = valeur de départ (pourcentage) permettant à l’algorithme de

trouver plus rapidement le maximum de vraisemblance-priors (prior1 <- c(ligne, colonne, minimum, maximum, IC). Ou prior <-

c(colonne, ligne, moyenne, écart-type)) =indiquer une valeur de départ pour le NA sur telle ligne et telle colonne, matrice à 4 ou 5 colonnes, autant de lignes qu’on souhaite

-bounds= indique pour une variable l’intervalle dans lequel les données manquantes doivent se situer

Page 26: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

LES SORTIES DE AMELIA

-sortie donnée quand on fait tourner la fonction = nombre de fois que l’algorithme a tourné pour chaque imputation

-imputations = les m matrices imputées

-missMatrix = matrice booléenne de la même taille que le jdd où TRUE signifie que la donnée est manquante

Page 27: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION WRITE.AMELIA

Enregistrement des jeux de données imputés

write.amelia(obj , file.stem, format, separate, orig.data)

Les arguments:- obj = l’objet amelia- file.stem= nom donné à l’objet enregistré (ex: amelia_jdd)- format= csv, txt…-separate= TRUE si on veut séparer avoir les jdd séparés, FALSE si on

les concatène tous par ligne-orig.data= TRUE si on concatène au jdd original

On peut ouvrir chacun des m jdd imputés: read.table(« localisation/amelia_jdd1 ») pour avoir le 1er, remplacer 1 par 2 pour avoir le second etc…

Faire un graphique de chaque jdd pour vérifier que l’imputation n’a pas « trop » changé les données

Page 28: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

VISUALISATION DE LA « QUALITÉ » DES IMPUTATIONS FAITES PAR AMELIA

Pour comparer la moyenne des NA sur les m imputations pour chaque variable, et les densités des variables sans NA

plot(objet amélia, which.vars) => un graphique pour chaque variable

Courbe rouge = densité de la moyenne des imputations (sur les m jdd imputés)

Courbe noire= distribution des données observées

Courbe bleu = distribution des données observées, et aucun NA pour cette variable

Page 29: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

DIAGNOSTIC DES IMPUTATIONS FAITES PAR AMELIA

Pour vérifier que l’imputation est bonne pour telle variable: overimpute(objet amélia, var)

1 Point= la moyenne des m imputations (sur une donnée observée qu’on a transformé en NA), intervalle de confiance construit autour

Qualité imputation: regarder combien d’IC couvrent la droite y=x

Si la chaîne d’itération est « trop longue », il faut peut-être réaliser une transformation sur certaines variables

Page 30: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

ANALYSER LES DONNÉES IMPUTÉES

Pour avoir la moyenne et la variance d’une quantité nous intéressant (la moyenne, des coefficients, ou des paramètres)

Ex: je fais une régression sur chaque jdd imputé, je stocke les coefficients de régression de chaque variable, ainsi que leur variance

mi.meld(q, se)- q = matrice de dim p*m où il y a ce qu’on veut analyser- se = matrice de dim p*m avec les écarts types des quantités précédentes

Sorties:-q=valeur moyenne de la quantité d’intérêt sur les m jdd

-se= écart-type de chaque quantité d’intérêt

Page 31: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

PACKAGE MISSFOREST

Imputation simple et obtention des erreurs d’imputation (missForest, mixError)

Page 32: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

PRINCIPE MISSFOREST

Imputation dans le cas de données mixtes, dont les relations ne sont pas forcément linéaires

Exemple: Y et x1, x21) met des 0 où il y a des NA2) fait un arbre pour prévoir Y en fonction de x1 et x2 => valeur

estimée pour Y 3) fait un arbre pour prévoir x1 en fonction de Y et x2 => valeur

estimée pour x14)Idem avec x25)Recommence jusqu’à convergence

Similaire à irmi, mais on n’a pas une combinaison linéaires des prédicteurs

Page 33: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION MISSFOREST

missForest(xmis, maxiter, ntree, variablewise)

Les arguments:- xmis=jdd- maxiter= nombre d’itération maximum à faire- ntree = nombre d’arbres dans chaque forêt- variablewise= pour avoir les erreurs pour chaque variable séparée

(=TRUE), sinon sort une erreur pour tout le jdd

Les sorties:- ximp= jdd imputé- OOBerror= erreur d’imputation estimée pour chaque variable

(NRMSE pour les variables quantitatives, proportion de mal classés pour les qualitatives)

- error = « vraie » erreur d’imputation

Page 34: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

FONCTION MIXERROR

But: calculer l’erreur d’imputation pour des données mixtes.

mixError(ximp,xmis,xtrue)

Les arguments:-ximp=jdd imputé-xmiss=jdd avec NA-xtrue=jdd complet (sans NA, ni imputation)

Les sorties:-une erreur d’imputation pour les variables

qualitatives (proportion de mauvais classement), une autre pour les variables quantitatives (nrmse)

Page 35: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

PACKAGE MISSMDA

Imputation simple ou multiple via les composantes principales

Page 37: VIM Amelia missForest missMDA 0. Console graphique: vmGuimenu() I. Prévisualisation des NA (aggr, barMiss,histMiss, marginmatrix, marginplot, matrixplot)

SOURCES

Site R cran http://www.unt.edu/rss/class/Jon/

Benchmarks/MissingValueImputation_JDS_Nov2010.pdf

http://txcdk.unt.edu/iralab/sites/default/files/AMELIAII_Handout.pdf