

style1
Procédurier - Utiliser R en mesure et évaluation
Section 08 C - Analyse du PISA par l'analyse factorielle.
Voici la section où nous ferons une analyse factorielle en utilisant des scores associés à la lecture, aux mathématiques et aux sciences.
##############################################################################
## Fichier: Section_08C_alpha.r date: décembre 2007
## Auteur: AndréSèb Aubin (andreseb.aubin@gmail.com)
##
## Dans ce script
## Analyse de données du PISA par l'analyse factorielle
##
## Fichier initial de donnée: booklet9_01a.dat (fait dans le script Section_08A_alpha.r)
## Vérification du nombre de facteurs
##
f##############################################################################
##############################################################################
## 00 - Fonctions permettant d'initialiser l'environnement R
##############################################################################
rm(list=ls(all=TRUE))
library("grDevices")
setwd("C:/Users/AndreSeb/Desktop/TDII_Omega/Activite_finale/bin")
#setwd("C:/Documents and Settings/André-Sébastien/Mes documents/doctorat/TDII_Omega/Activite_finale/bin")
# setwd(choose.dir()) # À activer si on veut choisir le répertoire à chaque fois
# setwd("F:/PISA/bin") # Autre choix de répertoire (pour une clé USB par exemple)
##############################################################################
## 01 - Importation du fichier math_booklet9_01a.dat dans la matrice donnees_brutes
##############################################################################
donnees_brutes <- read.table(file="booklet9_01a.dat", header = TRUE)
Dimension <- dim(donnees_brutes)
Dimension
questions_math <- c("M033Q01","M034Q01T","M037Q01T","M037Q02T","M124Q01","M124Q03T","M144Q01T","M144Q02T"
,"M144Q03", "M144Q04T","M145Q01T", "M155Q01", "M155Q02T", "M155Q03T" ,"M155Q04T", "M192Q01T")
questions_reading <- c("R040Q02" ,"R040Q03A", "R040Q03B", "R040Q04", "R040Q06" ,"R077Q02", "R077Q03", "R077Q04", "R077Q05" ,"R077Q06", "R088Q01", "R088Q03", "R088Q04T", "R088Q05T", "R088Q07" ,"R110Q01" ,"R110Q04", "R110Q05", "R110Q06" ,"R216Q01", "R216Q02" ,"R216Q03T", "R216Q04", "R216Q06", "R236Q01" ,"R236Q02", "R237Q01" ,"R237Q03", "R239Q01", "R239Q02", "R246Q01" ,"R246Q02")
questions_science <- c("S128Q01" ,"S128Q02", "S128Q03T" ,"S129Q01", "S129Q02T", "S131Q02T", "S131Q04T", "S253Q01T", "S253Q02" ,"S253Q05" ,"S268Q01" ,"S268Q02T", "S268Q06" ,"S269Q01", "S269Q03T", "S269Q04T", "S270Q03T")
q_math_booklet9 <- donnees_brutes[ ,questions_math]
q_reading_booklet9 <- donnees_brutes[ ,questions_reading]
q_science_booklet9 <- donnees_brutes[ ,questions_science]
score_math <- rowSums(q_math_booklet9, na.rm = TRUE)
score_reading <- rowSums(q_reading_booklet9, na.rm = TRUE)
score_science <- rowSums(q_science_booklet9, na.rm = TRUE)
score_compil <- cbind(score_math, score_reading, score_science)
write.table(score_compil, file="score_compil.dat", row.names=TRUE, col.names=TRUE, sep="\t")
score_compil[1:5,]
X <- score_compil
##############################################################################
## 02 - Analyse factorielle selon la première méthode
##
## Il faut cependant, avant de faire l'analyse factorielle, ne laissez que les
## colonnes contenant des questions sur les sciences, les mathématiques et les sciences.
##
## Inspiré du script tableau_7_1a.r
##
## Gestion des NA : les résultats avec des NA sont équivalents à des 0.
##
## Matrice utilisée: score_compil
##
##############################################################################
## Première étape, trouvons la matrice de corrélations de notre matrice de données X.
CX <- cor(X)
## Trouvons ensuite la valeurs des vecteurs propres de la matrice CX
ECX <- eigen(CX)
## Dans le cas de l'analyse factorielle, la représentation graphique est souvent intéressante.
plot(eigen(CX)$values, type="b", xlab="Composante", ylab="Valeur Propre")
lines(x=c(0,9),y=c(1,1), col="red")
Voici le schéma résultant de cette première méthode.

## Cependant, tous les cas, ne sont pas aussi simple. Une solution consiste à remplacer,
## dans la matrice de corrélation de la matrice de corrélations, la diagonale par les
## valeurs propres de la matrice CCX.
CCX <- cor(CX)
CCX
diag(CCX) <- apply(eigen(CCX)$vectors[,1:3],1,function(x) sum(xˆ2))
CCX
## Ensuite, on recalcule les valeurs propres de cette nouvelle matrice.
ECCX <- eigen(CCX)
## On peut ensuite réaliser le graphique des valeurs propres.
plot(eigen(CCX)$values, type="b", xlab="Composante", ylab="Valeur Propre")
lines(x=c(0,9),y=c(1,1), col="red")
print(varimax(ECCX$vectors[,1:3], normalize = FALSE),cutoff=0)
Et maintenant le schéma résultant de cette seconde méthode.

################################################################################
## Certaines fonctions de l'environnement R nous permettent d'accélérer l'obtention des
## facteurs. La fonctions princomp() retourne l'analyse des composante.
pc.cr <- princomp(X, cor= TRUE) # cor=TRUE utilise la matrice de corrélation pour les calculs.
summary(pc.cr) ## affiche le contenu de pc.cr sous formes résumé.
## Pour apercevoir le contenu de notre matrice en enlevant les entrées trop petites
## il est possible de modifier la valeur de cutoff.
print(loadings(pc.cr), cutoff=0) # cutoff = 0 affichera toutes les valeurs
print(loadings(pc.cr), cutoff=0.1) # cutoff=0.100 n'affichera que les valeurs plus grande que |0.100| (en valeur absolue)
## La fonction plot(pc.cr) permet d'afficher le diagramme des éboulis.
## À partir de ce diagramme, il est possible d'extraire les facteurs en observant
## le changement dans la pente du graphique.
plot(pc.cr) # affiche le graphique des éboulis.
biplot(pc.cr) # affiche le graphique biplot qui présente sous forme vectorielle.
####################### Fin du script Section_08C_alpha.r #####################