style1

Procédurier - Utiliser R en mesure et évaluation

Section 08 A - Comprendre le PISA et l'extraction de données


Afin de nous assurer d'avoir toutes les librairies installées et actives dans l'environnment R, nous vous proposons le fichier suivant que l'on peut exécuter dans Tinn-R. Enregistrer sous...


Dans la présente section, nous prendrons un fichier de données externe et nous le rendrons compatible et donc utilisable dans l'environnement R. Le fichier sur lequel nous travaillerons est le suivant. Pour la section 08, nous vous suggérons de créer un répertoire et d'y placer tous les éléments que vous ajouterez au fur et à mesure.

Le fichier de départ que nous voulons importer a été formaté pour le logiciel SPSS qui est rarement installé sur les ordinateurs personnels et dont, de toutes façons, nous n'avons pas besoin ici.


Voici le fichier de données de départ. Enregistrez-le dans un répertoire facile à retracer. Si vous avez une clé USB, un répertoire sur la racine (comme par exemple F:\PISA\) est probablement l'idéal. Enregistrer sous...


Afin de nous assurer que l'exécution se fera sans soucis, nous allons d'abord faire quelques manipulations dans R. La plus importante consiste à déterminer l'espace de travail, c'est-à-dire, l'endroit où nous allons prendre et déposer les différents fichiers utilisés. C'est la commande setwd() qui permet de déterminer l'espace de travail. Si vous utilisez toujours le même espace, choisssissez la solution (2), sinon la solution (1) permet de choisir à chaque exécution du script.


##############################################################################
## 01 - Fonctions permettant d'initialiser l'environnement R
##############################################################################

rm(list=ls(all=TRUE)) ## permet de mettre à zéro R en enlevant tous les éléments
## qui ont pu être créées précédemment
ptm <- proc.time() ## permet

## Choix du répertoire où nous travaillerons (wd)
## Deux choix pour déterminer la façon de le sélectionner

## (1) en naviguant dans les répertoires sur l'ordinateur
##setwd(choose.dir())

## (2) si vous connaissez le chemin du répertoire directement, mettez-le entre
## les paranthèses.
setwd("C:/Documents and Settings/André-Sébastien/Mes documents/doctorat/
TDII_Omega/Activite_finale/bin")

##setwd("F:/PISA/bin")


Notons que les étapes suivantes peuvent prendre un certain temps d'éxécution (quelques centaines de secondes). Cela s'explique par la taille des fichiers à traîter qui est importante (environ 7 méga-octets pour le plus gros fichiers). Ces fichiers contiennent en effet des milliers de répondants. Par exemple, le fichier intcogn_CAN.sav contient 29687 répondants et pour chaque répondant 227 informations diverses.

##############################################################################
## 02 - Récupérer le fichier de données sous format SPSS
## Utilisation de fonctions déjà existantes dans R
## (contenues dans la librairie Hmisc)
##
## Fichier de données initial: intcogn_CAN.sav ou intcogn_SCAN.sav
## Fichier de sortie final: booklet9_01a.dat
##############################################################################

library("Hmisc")

extract_data_01b <- spss.get("intcogn_CAN.sav") ## gros fichier SPSS: intcogn_CAN.sav

## Mise des données brutes dans un fichier temporaire: data_01b.dat

write.table(extract_data_01b, file="data_01b.dat", row.names=TRUE, col.names=TRUE, sep="\t")

tri_booklet <- sort(extract_data_01b[["BOOKID"]]) ## Tri des répondants selon le livret.
# tri_booklet ## Enlever le dièse pour afficher.
nbre_repondant <- nrow(extract_data_01b) ## Connaître le nombre de répondants.
nbre_repondant
nbre_colonne <- ncol(extract_data_01b) ## Connaître le nombre de données sur chaque répondant
nbre_colonne

## x[i,j] i pour ligne (row); j pour colonne (column)
## chaque candidat a une ligne, chaque question (ou rubrique) une colonne


Voici les résultats visibles. Ils correspondent à ce qui était attendu.


> nbre_repondant <- nrow(extract_data_01b) ## Connaître le nombre de répondants.
> nbre_repondant
[1] 29687
> nbre_colonne <- ncol(extract_data_01b) ## Connaître le nombre de données sur chaque répondant
> nbre_colonne
[1] 227


En étudiant la construction du test, nous nous apercevons que les étudiants ne répondent pas tous aux mêmes questions. Il faut donc, pour faire une analyse, décidé ce que nous voulons garder. Dans le cadre de l'exercice, nous allons nous consacrez aux étudiants qui ont répondu au livret 9. Les opérations suivantes servent donc à éliminer les autres. Cependant, nous aurions pu garder les étudiants ayant répondu à certaines questions précises ou d'une école précise.


Pour sélectionner certains éléments du grand ensemble, la fonction subset() est suggérée. Encore une fois, le traitement peu être un peu long... alors un peu de patience...


## Utilisation de la fonction subset pour ne retenir que les candidats qui ont répondu au livret 9

## booklet9 = subset(extract_data_01b, (extract_data_01b[["BOOKID"]] == 9))
booklet9_NA = subset(extract_data_01b, (extract_data_01b[[5]] == 9), drop=TRUE)

write.table(booklet9_NA, file="booklet9_01a_temp.dat", row.names=TRUE, col.names=TRUE, sep="\t")


## Pour l'analyse, nous éliminerons les répondants qui n'ont pas répondu à tous les questions (incomplets)

nbre_repondant_b9 <- nrow(booklet9_NA)
nbre_repondant_b9

questions9 <- which((booklet9_NA[1,] != "NA"))

for(i in 2:nbre_repondant_b9)
{
questions9b <- which((booklet9_NA[i,] != "NA"))
questions9 <- c(questions9, questions9b)
}

questions9 <- unique(questions9) # fonction unique() pour ne pas avoir plusieurs occurences du même répondant
questions9 <- sort(questions9) # tri (sort()) de la matrice de données finale

C <- length(questions9)
C
booklet9 <- booklet9_NA[ ,questions9]

## Cela donne un sous-échantillon de tout ceux qui ont répondu au Booklet no. 9
## Cependant, ce sous-échantillon a les réponses à toutes les questions possibles, même celle qui en figure pas dans le Booklet no. 9 (réponse NA).
## L'avantage est que les réponses NA sont différentes des réponses 9, 99 ou 999 (n'a pas répondu).

## Finalement, on met la matrice finale dans le fichier booklet9_01a.dat
write.table(booklet9, file="booklet9_01a.dat", row.names=FALSE, col.names=TRUE, sep="\t")

##############################################################################

proc.time() - ptm # Fin du calcul du temps pour faire le processus.


Il en résulte le fichier booklet9_01a.dat facile à utiliser dans R qui ne contient que les individus qui ont répondu au complet (les autres ont été retirés) au livret 9. Notre choix de les retirer complètement cause probablement un biais dans nos conclusions, mais cela n'est pas l'objet de l'exercice ici.



Nous avons donc 3315 répondants qui ont répondu au livret 9. L'autre partie des manipulations sert à enlever les questions qui ne sont pas dans le livret, puisqu'elles sont pas définition vide.



> nbre_repondant_b9 <- nrow(booklet9_NA)
> nbre_repondant_b9

[1] 3315


Cela donne 73 champs de réponses utiles (sur les 227 du départ).


> C <- length(questions9)
> C
[1] 73


Les opérations qui ont été présentées ici sont réunies dans le script suivant. Enregistrer sous...

Une copie du fichier booklet9_01a.dat est aussi disponible en télécharment. Enregistrer sous...


Pour accéder à la suite des manipulations de la section 08 Cliquez ici (Section_08_B).


Retour à à la page précédente
Retour à la page principale

Dernière mise à jour faite le 21 janvier 2017 à 13:10 -0800 par AndréSèb

Get Firefox!