Fréquences et tableaux croisés dans R
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 de représentation graphique des résultats.
Génération de tableaux de fréquences
R propose 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, nous supposons que A, B et C représentent des variables catégorielles.
tableau
Vous pouvez générer des tableaux de fréquences à 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)
Le tableau ne tient pas compte des valeurs manquantes. Pour inclure NA comme catégorie dans les tableaux, incluez l'option de tableau 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 ( ) vous permet de créer des tableaux croisés à l'aide d'une 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 dans la partie 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 package gmodels produit des tableaux croisés sur le modèle de PROC FREQ dans SAS ou CROSSTABS dans SPSS. Il 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 du Chi-carré, de Fisher et de 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 une sortie de style SAS ou SPSS!Voir help(CrossTable) pour plus d'informations.
Tests d'indépendance
Test du chi carré
Pour les tableaux à deux voies, vous pouvez utiliser chisq.test(mytable) pour tester l'indépendance des variables de ligne et de colonne. Par défaut, la valeur p est calculée à partir de la distribution asymptotique du chi-carré de la statistique du test. En option, la valeur p peut être calculée par la méthode 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 selon laquelle 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 à trois dimensions, où la dernière dimension fait référence aux strates.
Modèles log-linéaires
Vous pouvez utiliser la fonction loglm( ) du progiciel MASS pour produire des modèles log-linéaires. Par exemple, supposons que nous ayons un tableau de contingence à trois 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 deux à deux. ```R 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). ```R loglin(~A+B+C+B*C, mytable)
Indépendance conditionnelle : A est indépendant de B, étant donné C. ``R loglm(~A+B+C+AC+BC, mytable)
**Pas d'interaction à trois** ``R 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 à l'aide de graphiques en mosaïque.
Mesures d'association
La fonction assocstats(mytable) du package vcd calcule le coefficient phi, le coefficient de contingence et le V de Cramer pour un tableau rxc. La fonction kappa(mytable) du package 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 un excellent examen de ces statistiques.
Visualisation des résultats
Utilisez les diagrammes à barres et les diagrammes circulaires pour visualiser les fréquences en une seule dimension.
Utilisez le paquet vcd pour visualiser les relations entre les données catégorielles (par exemple, les diagrammes en mosaïque et les diagrammes d'association).
Utilisez le logiciel ca pour l'analyse des correspondances (exploration visuelle des relations entre les lignes et les colonnes des tableaux de contingence).
Pour vous entraîner à réaliser ces graphiques, essayez le cours de visualisation de données de DataCamp.
Conversion des tableaux de fréquences en un fichier plat "original
Enfin, il peut arriver que vous ayez besoin de la base de données originale du "fichier plat" plutôt que du tableau de fréquences. Marc Schwartz a fourni sur la liste de diffusion Rhelp un code permettant de reconvertir un tableau en un cadre de données.