Fréquences et tableaux croisés
Cette section décrit la création de tableaux de fréquence et de contingence à partir de variables catégorielles, ainsi que les tests d’indépendance, les mesures d’association et les méthodes d’affichage graphique des résultats.
Générer des tableaux de fréquence
R fournit de nombreuses méthodes pour créer des tableaux de fréquence et de contingence. Trois d’entre elles sont décrites ci-dessous. Dans les exemples suivants, supposez que A, B et C représentent des variables catégorielles.
table
Vous pouvez générer des tableaux de fréquence à l’aide de la fonction table( ), des tableaux de proportions à l’aide de la fonction prop.table( ), et des fréquences marginales à l’aide de margin.table( ).
# 2-Way Frequency Table
attach(mydata)
mytable <- table(A,B) # A will be rows, B will be columns
mytable # print table
margin.table(mytable, 1) # A frequencies (summed over B)
margin.table(mytable, 2) # B frequencies (summed over A)
prop.table(mytable) # cell percentages
prop.table(mytable, 1) # row percentages
prop.table(mytable, 2) # column percentages
table( ) peut également générer des tableaux multidimensionnels basés sur 3 variables catégorielles ou plus. Dans ce cas, utilisez la fonction ftable( ) pour imprimer les résultats de manière plus attrayante.
# 3-Way Frequency Table
mytable <- table(A, B, C)
ftable(mytable)
Tableau ignore les valeurs manquantes. Pour inclure NA comme catégorie dans les comptages, incluez l’option de table exclude=NULL si la variable est un vecteur. Si la variable est un facteur, vous devez créer un nouveau facteur en utilisant newfactor <- factor(oldfactor, exclude=NULL).
xtabs
La fonction xtabs( ) permet de créer des tableaux croisés en utilisant une entrée de style formule.
# 3-Way Frequency Table
mytable <- xtabs(~A+B+c, data=mydata)
ftable(mytable) # print table
summary(mytable) # chi-square test of indepedence
Si une variable est incluse sur le côté gauche de la formule, elle est supposée être un vecteur de fréquences (utile si les données ont déjà été tabulées).
Crosstable
La fonction CrossTable( ) du paquet gmodels produit des tableaux croisés sur le modèle de PROC FREQ dans SAS ou CROSSTABS dans SPSS. Elle dispose d’une multitude d’options.
# 2-Way Cross Tabulation
library(gmodels)
CrossTable(mydata$myrowvar, mydata$mycolvar)
Il existe des options pour rapporter les pourcentages (ligne, colonne, cellule), spécifier les décimales, produire des tests d’indépendance de Chi-carré, Fisher et McNemar, rapporter les valeurs attendues et résiduelles (pearson, standardisées, standardisées ajustées), inclure les valeurs manquantes comme valides, annoter avec des titres de ligne et de colonne, et formater comme sortie de style SAS ou SPSS !
Voir aide(Tableau croisé) pour plus de détails.
Tests d’indépendance
Test de chi-carré
Pour les tableaux à 2 voies, vous pouvez utiliser chisq.test(mytable) pour tester l’indépendance de la variable de ligne et de colonne. Par défaut, la valeur p est calculée à partir de la distribution asymptotique du chi-deux de la statistique de test. En option, la valeur p peut être dérivée via la simultanéité de Monte Carlo.
Test exact de Fisher
fisher.test(x) fournit un test exact d’indépendance. x est un tableau de contingence à deux dimensions sous forme de matrice.
Test de Mantel-Haenszel
Utilisez la fonction mantelhaen.test(x) pour effectuer un test du chi carré de Cochran-Mantel-Haenszel de l’hypothèse nulle que deux variables nominales sont conditionnellement indépendantes dans chaque strate, en supposant qu’il n’y a pas d’interaction à trois voies. x est un tableau de contingence à 3 dimensions, où la dernière dimension se réfère aux strates.
Modèles log-linéaires
Vous pouvez utiliser la fonction loglm( ) du package MASS pour produire des modèles log-linéaires. Par exemple, supposons que nous avons un tableau de contingence à 3 voies basé sur les variables A, B, et C.
library(MASS)
mytable <- xtabs(~A+B+C, data=mydata)
Nous pouvons effectuer les tests suivants :
Indépendance mutuelle : A, B, et C sont indépendants par paire. loglm(~A+B+C, mytable)
Indépendance partielle : A est partiellement indépendant de B et C (c’est-à-dire que A est indépendant de la variable composite BC). loglin(~A+B+C+B*C, mytable)
Indépendance conditionnelle : A est indépendant de B, étant donné C. loglm(~A+B+C+A*C+B*C, mytable)
Pas d’interaction à trois voies loglm(~A+B+C+A*B+A*C+B*C, mytable)
Martin Theus et Stephan Lauer ont écrit un excellent article sur la visualisation des modèles log-linéaires, en utilisant des diagrammes en mosaïque.
Mesures d’association
La fonction assocstats(mytable) du paquet vcd calcule le coefficient phi, le coefficient de contingence et le V de Cramer pour un tableau rxc. La fonction kappa(mytable) du paquet vcd calcule le kappa de Cohen et le kappa pondéré pour une matrice de confusion. Voir l’article de Richard Darlington sur les mesures d’association dans les tableaux croisés pour une excellente revue de ces statistiques.
Visualisation des résultats
Utiliser les diagrammes à barres et à secteurs pour visualiser les fréquences dans une dimension.
Utiliser le paquet vcd pour visualiser les relations entre les données catégorielles (par exemple, les diagrammes en mosaïque et d’association).
Utiliser le paquet ca pour l’analyse des correspondances (explorer visuellement les relations entre les lignes et les colonnes dans les tableaux de contingence).
Pour pratiquer la réalisation de ces graphiques, essayez le cours de visualisation de données à DataCamp.
Conversion de tableaux de fréquence en un fichier plat « original »
Enfin, il peut y avoir des moments où vous wil besoin du cadre de données « fichier plat » original plutôt que du tableau de fréquence. Marc Schwartz a fourni du code sur la liste de diffusion Rhelp pour reconvertir une table en un cadre de données.
Leave a Reply