このような多数のアイテムで積み上げバーチャートを本当に使用したい場合、2つの解決策があります。
を使用して irutils
数ヶ月前にこのパッケージに出会いました。
Githubのコミット0573195c07の時点では、コードはgrouping=
引数では機能しません。金曜日のデバッグセッションに行きましょう。
Githubから圧縮バージョンをダウンロードすることから始めます。R/likert.R
ファイルをハックする必要がlikert
ありplot.likert
ます。具体的には、関数です。まず、likert
ではcast()
が使用されますが、reshape
パッケージはロードされません(ただしimport(reshape)
、NAMESPACE
ファイルには命令があります)。これは事前に自分でロードできます。次に、アイテムラベルをフェッチする命令が正しくありませんi
。aは行175にぶら下がっています。これも修正する必要がlikert$items[,i]
ありlikert$items[,1]
ます。その後、使用している方法でマシンにパッケージをインストールできます。私のMacでは
% tar -czf irutils.tar.gz jbryer-irutils-0573195
% R CMD INSTALL irutils.tar.gz
次に、Rを使用して、次のことを試してください。
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)
これは正常に機能するはずですが、アイテムの数が多いため、視覚的なレンダリングはひどくなります。plot(likert(resp))
ただし、グループ化せずに動作します(例:)。
したがって、データセットをアイテムの小さなサブセットに減らすことをお勧めします。たとえば、12個のアイテムを使用して、
plot(likert(resp[,1:12], grouping=grp))
「読み取り可能な」積み上げバーチャートを取得します。おそらく後で処理できます。(これらはggplot2
オブジェクトですがgridExtra::grid.arrange()
、読みやすさの問題があるため、1ページに配置することはできません!)
代替ソリューション
リッカートスケールを分岐積み上げ棒グラフとしてプロットできる別のパッケージHHに注目したいと思います。以下に示すように、上記のコードを再利用できます。
resp.likert <- likert(resp)
detach(package:irutils)
library(HH)
plot.likert(resp.likert$results[,-6]*82/100, main="")
ただし、頻度をカウントに変換したり、likert
生成されたオブジェクトのサブセットを作成したりirutils
、パッケージを切り離したりする必要があるため、事態は少し複雑になります。
plot.likert(t(apply(resp, 2, table)), main="", as.percent=TRUE,
rightAxisLabels=NULL, rightAxis=NULL, ylab.right="",
positive.order=TRUE)
グループ化変数を使用するにはarray
、数値を操作する必要があります。
# 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="")
これにより、2つの個別のパネルが作成されますが、1ページに収まります。
2016-6-3を編集
- 現在、likertは個別のパッケージとして利用可能です。
- あなたは必要ありませんリシェイプライブラリをまたは両方を切り離しirutilsとリシェイプを