Exercices corrigés de l Ethème 2 - Techniques de Sondages Exercice 1 : On considère une population de N = 5 individus, pour lesquels on connaît les valeurs de la variable y : y 1 = 3, y 2 = 1, y 3 = 0, y 4 = 1, y 5 = 5. On choisit un plan SI avec une taille d échantillon n = 3. 1. Donner les valeurs de la moyenne, de la médiane et de la variance de la variable y dans la population. Lister tous les échantillons possibles de taille n = 3. Quelle est la probabilité de sélection de chaque échantillon? 2. Pour un échantillon donné, on estime la moyenne (respectivement la médiane) de la population. Calculer les valeurs de ces estimateurs pour chaque échantillon et en déduire que l estimateur de la moyenne est sans biais alors que l estimateur de la médiane est biaisé. 3. Pour chaque échantillon, calculer l estimateur Sys 2 de SyU 2 et en déduire que cet estimateur est sans biais. Corrigé : 1. La valeur de la moyenne dans la population est et la médiane est : y U = (3 + 1 + 0 + 1 + 5)/5 = 2 med U (y) = 1. Les échantillons possibles de taille 3 sont les 10 échantillons suivants : 1 1 2 3 2 2 3 4 3 3 4 5 4 1 2 4 5 1 2 5 6 1 3 4 7 1 3 5 8 1 4 5 9 2 4 5 10 2 3 5 Puisque les échantillons sont équiprobables, la probabilité de chaque échantillon s est p(s) = 1/10. 2. On calcule la moyenne et la médiane de chaque échantillon i = 1,..., 10 qui estiment respectivement la moyenne et la médiane de la population et on obtient les résultats suivants : i y s med s (y) 1 1.33 1 2.67 1 3 2 1 4 1.67 1 5 3 3 6 1.33 1 7 2.67 3 8 3 3 9 2.33 1 10 2 1 1.
Si on calcule la moyenne arithmétique des y s, on obtient : E(y s ) = (1.33 +.67 + 2 + 1.67 + 3 + 1.33 + 2.67 + 3 + 2.33 + 2)/10 = 20/10 = 2 E(y s ) = y U donc l estimateur est sans biais. Si on calcule la moyenne arithmétique des med s (y), on obtient : E(med s (y)) = (1 + 1 + 1 + 1 + 3 + 1 + 3 + 3 + 1 + 1)/10 = 16/10 = 1.6 E(med s (y)) med U (y) et donc l estimateur est biaisé. 3. Pour chaque échantillon, on calcule Sys. 2 Par exemple, pour le premier échantillon {1,2,3}, on a : Sy1 2 = 3 ( ) 1 2 3 (32 + 1 2 + 0 2 ) 1.33 2 Les résultats sont récapitulés dans le tableau suivant : i Sys 2 1 2.33 2 0.33 3 7 4 1.33 5 4 6 2.33 7 6.33 8 4 9 5.33 10 7 Si on calcule la moyenne arithmétique des S 2 ys, on obtient : E(S 2 ys) = (2.33 + 0.33 + 7 + 1.33 + 4 + 2.33 + 6.33 + 4 + 5.33 + 7)/10 = 40/10 = 4 Or, S 2 yu = 5 4 ( 1 5 (32 + 1 2 + 0 2 + 1 2 + 5 2 ) 2 2 ) = 4 donc l estimateur S 2 ys est sans biais. 2
Exercices 2 et 3 : Utiliser le logiciel SAS ou R pour tirer dans le fichier Rec99htegne un échantillon de 50 communes 1. (a) selon le plan SI (b) selon le plan PEAR 2. On considère le fichier de l enquête emploi (et pas le fichier du Recensement comme cela a été indiqué par erreur dans l ennoncé!) et dans ce fichier, uniquement les individus ayant une activité (on enlève les individus pour lesquels la variable nomenclature d activité française est sans objet ou non renseignée). Pour un échantillon de taille n = 100 tiré selon un plan SI. (a) Estimer la proportion d agriculteurs. (b) Comparer à la vraie valeur de cette proportion. (c) Estimer la variance de cet estimateur sans tenir compte de la correction de population finie et en tenant compte. Corrigé : Avec le logiciel SAS : on utilise les proc surveyselect et surveymeans. Le fichier docsas.pdf contient une présentation succinte de ces 2 procédures. Mais l aide détaillée se trouve sans difficulté sur Internet (chercher proc surveyselect ou proc surveymeans avec le moteur de recherche Google par exemple). 1. Pour tirer un échantillon, on utilise la proc surveyselect. (a) Pour le plan SI, taper le programme suivant. /* Tirage de 50 communes dans la base Rec99htegne */ /* selon un plan SI */ title1 Fichier Rec99htegne : tirage selon un plan simple ; proc surveyselect data=sondages.htegne method=srs n=50 stats seed=47279 out=sondages.logsi; run; L option data= précise le fichier de données sur lequel on applique la proc surveyselect. method= definit le plan de sondages. Par défaut, il s agit du plan SI (méthode srs pour simple random sampling). n= fixe la taille de l échantillon. On peut, au lieu de fixer n, préciser le taux de sondages f par l option samprate= (ou l abréviation rate=). L option sampsize= est équivalente à l option n=. stats précise que l on souhaite que le fichier résultat contienne la variable probabilité d inclusion et la variable poids de sondage (inverse de la probabilité d inclusion). Si les probabilités d inclusion différent selon les individus (voir E-thème 3), ces deux variables sont données par défaut mais dans le cas du plan SI, ces variables étant des constantes, il faut préciser l option stats pour les récupérer. Remarquons que si l objectif est d estimer une moyenne, ces variables ne sont pas utiles mais que l on en a besoin pour estimer un total. seed= fixe la graine du générateur de nombres aléatoires. Cela signifie que le tirage de l échantillon se fait à l identique à chaque fois que l on lance la procédure. Au contraire, si la graine n est pas précisée, SAS utilise une graine aléatoire basée sur l horloge interne de l ordinateur et les tirages sont différents à chaque lancement. 3
out= permet de définir un fichier résultat qui contient, pour les communes échantillonnées, les variables du fichier de données initial et éventuellement des variables supplémentaires comme la probabilité d inclusion (variable SelectionProb avec le label Probability selection) et le poids de sondage (variable SamplingWeight avec le label Sampling Weight) dans le cas du plan SI Exécuter le programme ci-dessus. L output contient les informations suivantes rappelant les différentes options utilisées (tirage de n = 50 communes selon un plan SI avec la graine 47279 dans la base Rec99htegne avec sauvegarde des résultats dans la base Logsi) et précisant la probabilité d inclusion π k = n/n = 50/554 = 0.090253 et le poids de sondage 1/π k = 11.08. The SURVEYSELECT Procedure Selection Method Simple Random Sampling Input Data Set REC99HTEGNE Random Number Seed 47279 Sample Size 50 Selection Probability 0.090253 Sampling Weight 11.08 Output Data Set LOGSI Ouvrir la base Logsi pour vérifier qu elle contient bien, pour 50 communes, les variables initiales ainsi que la probabilité d inclusion et le poids de sondages. Relancer plusieurs fois le programme pour vérifier que le tirage est toujours le même. Relancer plusieurs fois le programme en enlevant l option seed= et vérifier que les tirages diffèrent à chaque fois. Relancer le programme en enlevant l option stats et vérifier que le fichier Logsi ne contient plus les deux dernières variables. Relancer le programme en enlevant l option n= et en ajoutant l option rate=.1 qui correspond à un taux de sondage de 10% (samprate=.1 et rate=10 sont des options équivalentes). Vérifier que le nombre de communes tirées est alors n = 56 ce qui correspond à 10% N = 10% 554 = 55.4 arrondi à l entier supérieur. Relancer le programme avec les options de départ. (b) Pour le plan PEAR, taper le programme suivant title1 Fichier Rec99htegne : tirage selon un plan PEAR ; proc surveyselect data=sondages.htegne method=urs n=50 stats seed=47279 out=sondages.logpear; run; Remarquer que seule l option method= a été modifiée. Visualiser le fichier résultat logpear. On remarque que l on a toujours le poids de sondage (Sampling weight) qui permet de faire les estimations de totaux ou de moyennes dans la population. On a aussi la variable Number of Hits qui donne le nombre de fois qu un individu a été tiré (puisque le tirage est avec remise) et la variable Expected Number of Hits qui correspond à n/n. Dans l exemple précédent, on voit que toutes les communes ont été tirée une seule fois sauf une (31123 à la 2ème ligne) qui a été tirée 2 fois (le fichier résultat contient 49 lignes). Toutefois, même si la commune 31123 a été tirée 2 fois, elle n apparaît qu une fois dans le fichier résultat ce qui va compliquer les procédures d estimation. L option 4
OutHits permet de dupliquer les individus dans le fichier résultat autant de fois qu ils ont été tirés. Essayer cette option et vérifier que le fichier résultat contient bien 50 lignes avec duplication de la commune 31123. 2. (a) Taper et exécuter le programme suivant. /* Tirage de 100 individus dans la base agri */ /* selon un plan SI */ title1 Fichier agri : tirage selon un plan simple SI ; proc surveyselect data=sondages.agri n=100 seed=5667 out=sondages.agrisi; run; Taper et exécuter le programme suivant. title1 Agriculteurs ; title2 Estimation proportion pour plan SI ; proc surveymeans data=sondages.agrisi total=7104; var agri; run; (b) La proportion est estimée par 1%. On a donc une sous-estimation de la vraie proportion. Mais on ne peut tirer aucune clonclusion générale car nous n avons qu un seul échantillon. (c) L écart-type de l estimateur de la proportion est (1 f)syu 2 /n = 0.0053 et l estimation de cet écart-type à partir de l échantillon tiré est 0.0099. On a sur-estimation de l écart-type sur cet exemple. Mais aucune conclusion générale ne peut être tirée car nous n avons qu un seul échantillon. Pour avoir une estimation de la variance sans tenir compte de la taille de population finie, il suffit d enlever l option total=7104 et d exécuter le même programme. Avec le logiciel R : On charge le Workspace pour les sondages constitué au TP précédent (utiliser le nom que vous avez choisi précédemment), ici c est : sondages.rdata. Le chargement se fait par le menu File/Load workspace... ou par une commande [frame=lines, fontsize=\scriptsize] > load("d:/yves/sondages/dess_texte/foad/tp_r/sondages.rdata") On vérifie le contenu du workspace chargé, le nom des variables de et si nécessaire le type de, comme ci-dessous : [frame=lines, fontsize=\small] > ls() [1] "a" "fpempl01" "last.warning" "q" "" [6] "vin" > dimnames()[[2]] [1] "CODE.N" "COMMUNE" "BVQ.N" "POPSDC99" "LOG" "LOGVAC" "STRATLOG" > is.data.frame() [1] TRUE 5
Le package sondages ayant quelques erreurs, on ne le charge pas mais on utilise le code R corrigé, libsondy.r (à télécharger) qu il faut d abord sourcer. Menu File/ Source R code... et on indique le répertoire où on a stocké ce code. 1. (a) Pour tirer les échantillons on utilise la fonction surveyselect. Tirage d un echantillon de taille 50, plan SI (=SRS= Simple Random Sampling) [ fontsize=\small] logsi <- surveyselect(,50,rep=1,methode="srs",nomstrat=null, nompps=null)" ou en donnant une graine ( ici, un nombre entier) pour pouvoir recommencer des simulations suivant le même mécanisme : [ fontsize=\small] logsi2 <-surveyselect(,n=50,rep=5,methode="srs",magraine=255)" On obtient [ fontsize=\small] ECHANTILLONNAGE DE LA TABLE : Données Méthode de sélection SRS Taille de l échantillon 50 Nombre de réplication 1 Taille de la table en sortie 50 Remarque. Si on lance plusieurs fois : [ fontsize=\small] surveyselect(,50,rep=1,methode="srs",nomstrat=null,nompps=null) on n obtient jamais le même résultat, alors qu avec [ fontsize=\small] surveyselect(,n=70,rep=5,methode="srs",magraine=255) où on donne à magraine une valeur entière on obtient la même série de simulations tant qu on donne à magraine une même valeur. La composition de logsi2 est obtenue par la fonction : summary(logsi2). On obtient : [frame=lines, fontsize=\small] Length Class Mode echantillon 8 data.frame list Donnees 1 -none- character N 1 -none- numeric Selection 1 -none- character Replic 1 -none- numeric 6
Pi 50 -none- numeric Poids 50 -none- numeric Taille.Ech 1 -none- numeric Taille.Output 1 -none- numeric PPS 1 -none- character VarAux 0 -none- NULL Stratification 1 -none- character VarStrat 0 -none- NULL Pour lister à l écran l échantillon on tape : logsi2\$echantillon Fabrication d un échantillon de taux de sondage donné : [frame=lines, fontsize=\small] srs2 <- surveyselect(,taux=10,rep=1,methode="srs", nomstrat=null,nompps=null,magraine=918742) ECHANTILLONNAGE DE LA TABLE : Données Méthode de sélection SRS Taille de l échantillon 56 Nombre de réplication 1 Taille de la table en sortie 56 (b) Tirage d un échantillon de taille 50 par un plan à probabilités égales avec remise : [frame=lines, fontsize=\small] logpear <- surveyselect(,n=50,rep=1,methode="urs", nomstrat=null,nompps=null,magraine=18174) ECHANTILLONNAGE DE LA TABLE : Données Méthode de sélection URS Taille de l échantillon 50 Nombre de réplication 1 Taille de la table en sortie 50 Contrairement à ce qui se passe dans SAS, on ne dispose pas du nombre d apparitions d une même unité statistique, mais on peut visualiser les répétitions : 7
ech <- logpear$echantillon > code <- ech$code.n > un <- unique(code) un contient les codes différents et sa longueur est < 50, le plus souvent. 2. Fabrication de la data frame agri. Elle contient uniquement les individus dont la variable NAFG16 est renseignée. On définit agri1 qui vaut 1 si un individu est agriculteur, 0 sinon. [fontsize=\small] a <- fpempl01$nafg16 anm <- a[a!= ""] nbnm <- NROW(anm) nbnm # agriculteur agri <- a[a == "EA"] agri1 <- matrix(0,ncol=1,nrow=nbnm) agri1[(anm == "EA"),] <- 1 nbagri <- NROW(agri) fp.agri <- cbind(fpempl01[anm,],agri1) nbagri = 299 et la base contient NROW(fp.agri), 7104 personnes. La proportion d agriculteurs dans la base est : nbagri/nbnm soit 0.04208896. Tirage d un échantillon et estimation de la proportion d agriculteurs. La proportion à estimer est la moyenne de agri1. [fontsize=\small] > sagri <- surveyselect(fp.agri,n=100,rep=1,methode="srs", nomstrat=null,nompps=null,magraine=92315) ECHANTILLONNAGE DE LA TABLE : fp.agri Données fp.agri Méthode de sélection SRS Taille de l échantillon 100 Nombre de réplication 1 Taille de la table en sortie 100 > # estimation de la proportion dans l agriculture > # > propagri <- surveymeans(objet=sagri,var="agri1",est="moyenne",methode="srs ESTIMATIONS - SYNTHESE 8
Echantillon sagri Variable estimée agri1 Type d estimation moyenne Nombre d estimations 1 Moyenne des estimations 0.07 C.V. moyen des estimations 0.364 > propagri num.ech estim.moyenne SDEV.estim.moyenne ICinf ICsup CV 1 1 0.07 0.02546212 0.02009517 0.1199048 0.3637445 > Vérification du calcul de variance. [fontsize=\small] > varverif <- (1/sagri$Taille.Ech - 1/sagri$N)* var(sagri$echantillon$agri1 > varverif [1] 0.0006483193 > etypverif <- varverif^(.5) > etypverif [1] 0.02546212 Ecart-type exact de l estimateur. [fontsize=\small] > # ecart type exact de l estimateur > etypex <- ((1/sagri$Taille.Ech - 1/sagri$N) * var(agri1))^(.5) > etypex [,1] [1,] 0.01993879 Marges d erreur et intervalle de confiance. [fontsize=\small] > ic <- c((propagri$estim.moyenne-1.96*propagri$sdev.estim.moyenne), (propagri$estim.moyenne+1.96*propagri$sdev.estim.moyenne)) > ic [1] 0.02009425 0.11990575 > # coefficient de variation > cv <- propagri$sdev.estim.moyenne/propagri$estim.moyenne > cv [1] 0.3637445 > # marge d erreur absolue : > 1.96*propagri$SDEV.estim.moyenne [1] 0.04990575 > # marge d erreur relative > 1.96*cv 9
[1] 0.7129392 Exercice 4 : Un club de photographes amateurs a 1800 membres. On veut estimer le nombre moyen de pellicules utilisées par an par membre. On sait que par le passé, la moyenne et l écart-type du nombre de pellicules étaient respectivement 6 et 4. On choisit un niveau de confiance de 95%. Quelle taille d échantillon fautil prendre pour estimer (1) le nombre moyen de pellicules avec une marge d erreur relative de 7%? (2) le nombre total de pellicules avec une erreur absolue de 400. Corrigé : Pour (1), on applique la formule du cours et on a : n 1.96 2 (4/6) 2 = 348.44 arrondi à 349. Pour.07 2 (2), on a n (1800 1.96 4/400) 2 = 77.79. En prenant un échantillon de 78 membres on estimera le nombre total de pellicules utilisées avec une marge d erreur de moins de 400 pellicules, à 95%. Exercice 5 : Un quartier dans une certaine ville est formé de 3000 ménages rassemblant 10 000 personnes. Pour étudier l intérêt d installer un dispensaire médical dans le quartier, on veut estimer le nombre total de consultations qu ont eu les personnes de ce quartier l an dernier. On veut un résultat à 10% maximum, de la vraie valeur, avec un niveau de confiance de 95%. Un sondage préliminaire portant sur 10 ménages donne les résultats rassemblés dans le tableau ci-dessous. Déterminer la taille d échantillon nécessaire pour faire l étude avec la précision requise. Ménage Nombre de personnes dans le ménage 1 3 4.0 2 6 4.5 3 2 8.0 4 5 3.4 5 2 0.5 6 3 7.0 7 4 8.5 8 2 6.0 9 6 4.0 10 4 7.5 Nombre de consultations par personne durant l année précédente Indications. Le sondage porte sur des ménages et non sur des personnes. Exprimer d abord le total qu on doit estimer en fonction des données qu on peut collecter. On peut introduire : z k et v k, nombre de personnes et nombre de consultations par personnes, dans le ménage k et y k = z k v k le nombre de consultations dans le ménage k, U désigne la population des ménages et s l échantillon. Corrigé : On doit estimer t y = U y k. Les données permettent d estimer R = U y k/ U z k. C est un ratio qu on estime par R = y s /z s = 19.4/3.7 = 5.243243, d où, S 2 = 77.94555. De plus y Rz var( R) (1/n 1/3000)(1/3.7 2 )S 2 = (1/n 1/3000)5.693612 y Rz Notons M le nombre total de personnes : M = z k, t y = n kz k = MR, et t y = M R. La U U marge d erreur relative est z var( t y )/t y = z var( R)/R, où z = 1.96 est le quantile d ordre 0.975 10
d une N(0,1). On doit prendre n tel que 1.96 (1/n 1/3000)5.693612 /5.243243 0.10. On trouve n 77.505. On prendra donc une taille n = 78. Compléments. Observons qu on n a pas utilisé le nombre total de personnes car on s est intéressé à une marge d erreur relative. On peut aussi estimer directement t y, sans envisager qu il y a une relation entre le nombre de consultations et la taille d un ménage. On trouve n 95.78234. Ne pas prendre en compte la variable nombre de personnes dans le ménage entraîne une perte de précision. 11