2

フォームのヒストグラムデータがあります

Key  |  #occurences_of_key
--------------------------
 -10 | 1200
   0 | 1000
  10 | 700
  33 | 500
  67 | 200
  89 | 134
--------------------------

それを作るためのコード:

structure(c(-10, 0, 10, 33, 67, 89, 1200, 1000, 700, 500, 200, 134), .Dim = c(6L, 2L))

このデータを使用してEmpirical Cumulative Distribution Chart (percentile chart)使用をプロットしたいと思います。R私はにR慣れていないので、どんなポインタにも感謝します。ecdfで利用できる機能について読みましRたが、なかなかわかりません。

4

2 に答える 2

3

私が考えることができる1つの方法はrep、元のデータを再構築してそれを使用するために使用ecdfすることです。

mat <- structure(c(-10, 0, 10, 33, 67, 89, 1200, 1000, 700, 500, 200, 134), .Dim = c(6L, 2L))

original <- unlist(apply(mat, 1, function(x) rep(x[1], x[2])))

original_ecdf <- ecdf(original)

plot(original_ecdf)

ここに画像の説明を入力してください

于 2013-01-24T07:00:57.437 に答える
2

データが巨大な場合(そしてそれがRにロードする前に事前に集計した理由です)、「ダミー」データを再度生成する必要はありません。の実装をハックして、ecdf表形式のデータを受け入れることができます。

tab_ecdf <- function (xs, counts) 
{
  n <- sum(counts)
  if (n < 1) 
    stop("'x' must have 1 or more non-missing values")
  rval <- approxfun(xs, cumsum(counts) / n, 
                    method = "constant", yleft = 0, yright = 1, f = 0, ties = "ordered")
  class(rval) <- c("ecdf", "stepfun", class(rval))
  assign("nobs", n, envir = environment(rval))
  attr(rval, "call") <- sys.call()
  rval
}

そして、元の関数の代わりにそれを使用しecdf()ます。

于 2015-05-22T10:00:12.120 に答える