[RESOLU] Courbes – Moyenne entre deux points ne se suivant pas – Renvoi données aberrantes

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Aurélie Quinard
Messages : 14
Enregistré le : 12 Mar 2013, 11:32

[RESOLU] Courbes – Moyenne entre deux points ne se suivant pas – Renvoi données aberrantes

Messagepar Aurélie Quinard » 17 Avr 2017, 08:08

Bonjour,
Suite à un précédent message qui n’a pas trouvé de réponse, j’ai cherché une nouvelle technique pour appréhender mon problème : à savoir, la détection de valeurs aberrantes « ponctuelles » au sein de courbes de croissance (qui seraient dû à des erreurs de saisie). Mon souci à présent se trouve dans le fait de développer un script un peu compliqué à mes yeux.
Mon jeu de données est constitué de nombreuses courbes de croissances (plusieurs milliers). Pour chaque individu, il a été saisi un relevé de son poids chaque jour durant 365 jours.
Mon tableau de données se présente sous la forme suivante, les données d’un individu par ligne et un âge différent par colonne, comme suit :


Code : Tout sélectionner

Age              J1        J2   J3         J4      … J365
Ind1             39        42   45.8       54      1488
Ind2             46        51   57         66      2532
Ind3             32        33   35         40      1325
… Indx           27        28   30         33      1263



Je souhaiterai pouvoir calculer la moyenne entre J et J+2 (sans prendre en compte J+1) pour chaque point de la courbe et ce, pour chaque individu. Puis, j’aurai besoin de détecter si la valeur observée à J+1 se situe à + ou – 20% de la moyenne calculée. Dans l’idéal, le script pourrait me renvoyer la liste des individus pour lesquels il existe une valeur observée dans la courbe dépassant cet écart à la moyenne calculée.

Je vous remercie par avance de votre aide,

Aurélie

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Re: Courbes – Moyenne entre deux points ne se suivant pas – Renvoi données aberrantes

Messagepar François Bonnot » 18 Avr 2017, 06:48

Bonjour,
Une piste:
Pour chaque courbe x
- Créer un data frame df avec x en colonne 1, x1=c(x[2:length(x)],0) en colonne 2, x2=c(x[3:length(x)],0,0) en colonne 3
- Calculer la moyenne df$m de x et x2
- Calculer la condition à partir des valeurs de df$m et df$x1
Si vous rencontrez des difficultés, soumettez le code que vous aurez écrit avec un petit extrait de vos données (pas plus de 3 lignes de votre jeu de données) avec dput():
http://forums.cirad.fr/logiciel-R/viewtopic.php?f=1&t=3302

Autre piste : remarquer que la moyenne des 2 éléments x[i] et x[i+2] s'obtient par :

Code : Tout sélectionner

sapply(1:(length(x)-2),function(i) (x[i]+x[i+2])/2)
François

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Courbes – Moyenne entre deux points ne se suivant pas – Renvoi données aberrantes

Messagepar Pierre-Yves Berrard » 18 Avr 2017, 11:26

Dans la même veine que la proposition de François, mais en gardant les données telles quelles :

Code : Tout sélectionner

triplet_aberrant <- function(triplet) {
  bornes <- mean(triplet[c(1, 3)]) * c(0.8, 1.2)
  triplet[2] < bornes[1] | triplet[2] > bornes[2]
}

nb_aberrant <- function(serie) {
  n <- length(serie) - 2
  res <- vector("list", n)
  for (i in 1:n) res[[i]] <- serie[i:(i + 2)]
  sum(sapply(res, triplet_aberrant))
}

donnees$nb_abber <-
  apply(
    donnees[paste0("J", 1:365)],
    1,
    nb_aberrant
  )
PY

Aurélie Quinard
Messages : 14
Enregistré le : 12 Mar 2013, 11:32

Re: Courbes – Moyenne entre deux points ne se suivant pas – Renvoi données aberrantes

Messagepar Aurélie Quinard » 18 Avr 2017, 14:06

Bonjour,

je vous remercie pour vos réponses.
Etant en déplacement pour mon travail, je n'ai pas la possibilité de tester vos suggestions de suite, mais le ferai dès qu'un moment se libèrera et vous donnerai des nouvelles.

Merci encore,

Aurélie

Aurélie Quinard
Messages : 14
Enregistré le : 12 Mar 2013, 11:32

Re: Courbes – Moyenne entre deux points ne se suivant pas – Renvoi données aberrantes

Messagepar Aurélie Quinard » 30 Avr 2017, 10:38

Bonjour,

j'ai enfin pu me pencher sur vos propositions.
Le script de Pierre-Yves marche parfaitement bien.

Je vous remercie grandement pour votre aide précieuse.

Bonne fin de week-end à tous,

Aurélie


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité