Calcul de moyenne en excluant une observation
3 participants
Page 1 sur 1
Calcul de moyenne en excluant une observation
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.
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.
Re: Calcul de moyenne en excluant une observation
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 :
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 :
J'ai écrit le code sans tester, mais ça doit être bon. R-powaaaaaa
- 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
Re: Calcul de moyenne en excluant une observation
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.
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.
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
Re: Calcul de moyenne en excluant une observation
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
Re: Calcul de moyenne en excluant une observation
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.
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.
Re: Calcul de moyenne en excluant une observation
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.
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
Re: Calcul de moyenne en excluant une observation
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.
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.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|