Calcul de moyenne en excluant une observation

Voir le sujet précédent Voir le sujet suivant Aller en bas

Calcul de moyenne en excluant une observation

Message  Fred le Mar 11 Oct - 19:55

Salut les amis,

Je suis à la recherche d'une commande pour calculer une moyenne sous stata. Jusque là, pas de problèmes. Là où ça se corse, c'est que je veux calculer la moyenne sur un groupe d'observation en excluant à chaque fois la valeur de l'observation en question. Pour des observations sur 10 ans de 2000 à 2009, je voudrais attribuer à l'observation correspondant à l'année 2004, la moyenne des années en excluant 2004.

Existe-t-il à votre connaissance une commande stata ou une option pour calculer cela rapidement?

Merci d'avance.
avatar
Fred
Admin

Messages : 370
Date d'inscription : 17/11/2009
Age : 33
Localisation : Doctorant

Voir le profil de l'utilisateur http://themanwhobloggedtheworld.blogspot.com/

Revenir en haut Aller en bas

Re: Calcul de moyenne en excluant une observation

Message  flbresson le Mer 12 Oct - 9:54

Si jamais il n'y avait pas de commande ou que ce soit trop difficile à calculer sous Stata, voici toujours un code R. Imaginons que ta base s'appelle « machin » ta série s'appelle « truc », l'année s'appelle « year » et que tes groupes soient identifiés par « zob », ta moyenne est alors pour le groupe 2 et en excluant 2004 :

Code:

moyenne <- mean(machin[machin$year!=2004 & machin$zob==2,"truc"],na.rm=TRUE)

Pour systématiser le calcul, on créé une fonction bidule déterminé par le numéro de ligne de l'observation dans la base et on applique un sapply pour obtenir la série, soit :
Code:

bidule <- function(k) mean(machin[machin[-k,"year"] & machin$zob==machin[k,"zob"],"truc"],na.rm=TRUE)
machin[,"serie.moy"] <- sapply(1:length(machin$year), bidule)

J'ai écrit le code sans tester, mais ça doit être bon. R-powaaaaaa
avatar
flbresson

Messages : 360
Date d'inscription : 19/11/2009
Age : 38
Localisation : Clermont-Ferrand

Voir le profil de l'utilisateur http://sites.google.com/site/flbresson2/

Revenir en haut Aller en bas

Re: Calcul de moyenne en excluant une observation

Message  Marie-Ch le Mer 12 Oct - 11:47

Par principe, je ne peux pas laisser le R-powwaaa occuper l'espace dans un sujet stata sans réagir !
Si j'ai tout compris de ce que tu veux faire, voilà ce que je propose.

Code:
gen val_bis=val if year!=2004
bysort grp : egen mean_sf2004=mean(val_bis)
gen val_final=val
replace val_final=mean_sf2004 if year==2004

Avec val la valeur de la variable, year l'année, et grp le groupe.

Dis moi si ça colle avec ce que tu voulais faire ou si je suis à coté de la plaque.

Marie-Ch

Messages : 77
Date d'inscription : 09/11/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Calcul de moyenne en excluant une observation

Message  flbresson le Mer 12 Oct - 11:52

Si le calcul de Fred ne concerne que l'année 2004, c'est OK. Par contre, s'il s'agissait juste d'un exemple et qu'en 2003, il souhaite la moyenne pour toutes années sauf 2003 et ainsi de suite pour chaque année, la formule que tu proposes n'est encore pas assez générale :p
avatar
flbresson

Messages : 360
Date d'inscription : 19/11/2009
Age : 38
Localisation : Clermont-Ferrand

Voir le profil de l'utilisateur http://sites.google.com/site/flbresson2/

Revenir en haut Aller en bas

Re: Calcul de moyenne en excluant une observation

Message  Fred le Mer 12 Oct - 13:22

Merci pour les réponses. Effectivement, j'ai besoin du résultat pour toutes les observations. Du coup, il faudrait que je réplique ta solution Marie. J'ai trouvé quelque chose dans le même style:

gen moyennesans2004=mean(variable) if annee!=2004
gen moyennepour2004 = max(moyennesans2004)
replace moyennepour2004=. if annee!=2004

Mais il faut faire ça pour toutes les années par contre.
avatar
Fred
Admin

Messages : 370
Date d'inscription : 17/11/2009
Age : 33
Localisation : Doctorant

Voir le profil de l'utilisateur http://themanwhobloggedtheworld.blogspot.com/

Revenir en haut Aller en bas

Re: Calcul de moyenne en excluant une observation

Message  Marie-Ch le Mer 12 Oct - 14:50

L'idée serai donc de construire une boucle sur les valeurs de la variable année.
J'avais jamais fait ce genre de chose (par simplicité, je crois que je réplique les commandes pour chaque valeur), mais apparemment la méthode existe, voir le FAQ de stata.
La méthode 2 a l'air assez propre et opérationnelle dans ton cas si on l'adapte.

Marie-Ch

Messages : 77
Date d'inscription : 09/11/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Calcul de moyenne en excluant une observation

Message  Fred le Mer 12 Oct - 17:24

Effectivement, il y a quelque chose à faire avec la méthode 2.

Finalement, mon problème, c'est de ne pas avoir un nombre d'observations fixes sur lequel est basé le calcul de la moyenne car dans ce cas la solution est simple : pour chaque observation, calculer la somme des valeurs, en soustraire la valeur de l'observation en question et diviser le tout par le nombre d'observation moins un.
avatar
Fred
Admin

Messages : 370
Date d'inscription : 17/11/2009
Age : 33
Localisation : Doctorant

Voir le profil de l'utilisateur http://themanwhobloggedtheworld.blogspot.com/

Revenir en haut Aller en bas

Re: Calcul de moyenne en excluant une observation

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum