Bonjour,
Je souhaite supprimer les valeurs aberrantes de mon jeu de données via les règles de normalité à + ou - 2 et 3 écarts types.
Je commence dans mon code à supprimer les lignes contenant des données manquantes puis j'attaque ensuite les valeurs aberrantes.
La première boucle for portant sur la variable i permet de balayer mon tableau colonne par colonne.
Je calcule donc la taille (b), l'écart type (c) et la moyenne (d) de ma colonne.
La deuxième boucle for portant sur la variable k va balayer chacune des lignes de ma colonne et vérifier si la valeur contenue est supérieur à la condition (d+2*c). Si la condition est remplie, on stocke la valeur de la case dans la variable (e) et on supprime ensuite la ligne correspondante.
Voila dans la théorie, mais dans la pratique, cela ne fonctionne pas. Je reçois les messages d'erreur comme quoi (e) n'existe pas, et même en l'initialisant avant cela ne fonctionne pas.
Je vous met en dessous le code correspondant.
Voyez vous comment faire s'il vous plait ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 dataset <- data.frame(dataset) dataset <- na.exclude(dataset) #Elimine les valeurs aberrantes a=length(dataset) for (i in 3:a) { b=length(dataset[,i]) c=sd(dataset[,i]) d=mean(dataset[,i]) for (k in 1:b) { if (dataset[k,i]> d+2*c) e=dataset[k,i]; dataset <- dataset[!(dataset[,i] %in% e),] #else (dataset[k,i]<d+2*c) # e=dataset[k,i] # dataset <- dataset[!(dataset[,i] %in% e),] } }
Cordialement,
Jonathan
Partager