1

ケースに重みを付けて、ggplot でグラフをプロットするのが好きです。たとえば、次のように、ケースごとに特定の重み係数があります。

value weight
2     0.34
5     0.75
6     2.31

など...単純なグループ化されたバー (「クロス集計」) をプロットするのは簡単です。xtabs 関数を使用できます。

ftab <- round(xtabs(weightBy ~ varCount + varGroup),0)

重み付けされたケースでヒストグラム、単純なバー、または単一のボックス プロットをプロットする場合、分布を維持したいので、次の関数を使用してケースに重みを付けます。

weightby <- function(var, weight) {
  items <- unique(var)
  newvar <- c()
  for (i in 1:length(items)) {
    newcount = round(sum(weight[which(var==items[i])]))
    newvar <- c(newvar, rep(items[i], newcount))
  }
  return (newvar)
}
if (!is.null(weightBy)) {
  variable <- weightby(variable, weightBy)
}

ただし、この関数は元のケースの順序を無視し、「ケース」は関連するカテゴリに従って昇順で番号付けされます。しかし... グループ化された箱ひげ図をプロットしたい場合は、a) 重み付けされたカウントを持つ重み付けされた変数 b) 重み付けされたグループを持つ重み付けされた変数 c) 各グループ内の重み付けされた平均、中央値、分位数が必要です

どうすればこれを行うことができますか? 正しい加重クロス集計表がありますが、各サブグループからの加重平均はありません。これは、テーブルの作成に上記の関数を使用できないためです (正しいケースの順序が失われたため)。

どんなヒントでも大歓迎です!

4

1 に答える 1