Si vous voulez vraiment utiliser des diagrammes à barres empilées avec un si grand nombre d'articles, voici deux solutions possibles.
En utilisant irutils
J'ai rencontré ce paquet il y a quelques mois.
À partir de la validation 0573195c07 sur Github , le code ne fonctionnera pas avec un grouping=
argument. C'est parti pour la session de débogage de vendredi.
Commencez par télécharger une version zippée depuis Github. Vous devrez pirater le R/likert.R
fichier, en particulier les fonctions likert
et plot.likert
. Tout d'abord, dans likert
, cast()
est utilisé mais le reshape
paquet n'est jamais chargé (bien qu'il y ait une import(reshape)
instruction dans le NAMESPACE
fichier). Vous pouvez le charger vous-même au préalable. Deuxièmement, il y a une instruction incorrecte pour récupérer les étiquettes des éléments, où a i
pendille autour de la ligne 175. Cela doit également être corrigé, par exemple en remplaçant toutes les occurrences de likert$items[,i]
avec likert$items[,1]
. Ensuite, vous pouvez installer le package comme vous le faites sur votre machine. Sur mon Mac, je l'ai fait
% tar -czf irutils.tar.gz jbryer-irutils-0573195
% R CMD INSTALL irutils.tar.gz
Ensuite, avec R, essayez ce qui suit:
library(irutils)
library(reshape)
# Simulate some data (82 respondents x 66 items)
resp <- data.frame(replicate(66, sample(1:5, 82, replace=TRUE)))
resp <- data.frame(lapply(resp, factor, ordered=TRUE,
levels=1:5,
labels=c("Strongly disagree","Disagree",
"Neutral","Agree","Strongly Agree")))
grp <- gl(2, 82/2, labels=LETTERS[1:2]) # say equal group size for simplicity
# Summarize responses by group
resp.likert <- likert(resp, grouping=grp)
Cela devrait fonctionner, mais le rendu visuel sera horrible en raison du nombre élevé d'éléments. plot(likert(resp))
Cependant, cela fonctionne sans regroupement (par exemple ).
Je suggérerais donc de réduire votre ensemble de données à de plus petits sous-ensembles d'éléments. Par exemple, en utilisant 12 éléments,
plot(likert(resp[,1:12], grouping=grp))
Je reçois un diagramme à barres empilées «lisible». Vous pouvez probablement les traiter par la suite. (Ce sont des ggplot2
objets, mais vous ne pourrez pas les organiser sur une seule page à gridExtra::grid.arrange()
cause d'un problème de lisibilité!)
Solution alternative
Je voudrais attirer votre attention sur un autre package, HH , qui permet de représenter les échelles de Likert sous forme de diagrammes à barres empilées divergentes. Nous pourrions réutiliser le code ci-dessus comme indiqué ci-dessous:
resp.likert <- likert(resp)
detach(package:irutils)
library(HH)
plot.likert(resp.likert$results[,-6]*82/100, main="")
mais cela compliquera un peu les choses car nous devons convertir les fréquences en nombres, sous-définir l' likert
objet produit par irutils
, détacher le package, etc. Commençons donc avec de nouvelles statistiques (nombres):
plot.likert(t(apply(resp, 2, table)), main="", as.percent=TRUE,
rightAxisLabels=NULL, rightAxis=NULL, ylab.right="",
positive.order=TRUE)
Pour utiliser une variable de regroupement, vous devrez travailler avec une array
des valeurs numériques.
# compute responses frequencies separately by grp
resp.array <- array(NA, dim=c(66, 5, 2))
resp.array[,,1] <- t(apply(subset(resp, grp=="A"), 2, table))
resp.array[,,2] <- t(apply(subset(resp, grp=="B"), 2, table))
dimnames(resp.array) <- list(NULL, NULL, group=levels(grp))
plot.likert(resp.array, layout=c(2,1), main="")
Cela produira deux panneaux distincts, mais il tient sur une seule page.
Modifier 2016-6-3
- À partir de maintenant, likert est disponible en package séparé.
- Vous n'avez pas besoin de remodeler la bibliothèque ou de détacher les deux irutils et de remodeler