0

Rの最大プロットポイントの質問部分で述べたように、CCDFをプロットし ましたか? このコードでプロット(image1)を取得するために投稿:

ccdf<-function(duration,density=FALSE)
{
freqs = table(duration)
  X = rev(as.numeric(names(freqs)))
  Y =cumsum(rev(as.list(freqs)));
  data.frame(x=X,count=Y)
}
qplot(x,count,data=ccdf(duration),log='xy')

さて、Howto Plot “Reverse” Cumulative Frequency Graph With ECDFに関する teucerの回答に基づい て、以下のコマンドを使用して CCDF をプロットしようとしました。

f <- ecdf(duration)
plot(1-f(duration),duration)

image2 のようなプロットが得られました。また、R でのデータセットの CDF のプロット
の回答の 1 つのコメントから読みましたか? CCDF は 1-ECDF に他ならないためです。 データの CCDF を取得する方法について完全に混乱しています。

画像1
ここに画像の説明を入力


画像2ここに画像の説明を入力

4

2 に答える 2

3

いくつかのデータを生成し、ecdf関数を見つけます。

x <- rlnorm(1e5, 5)
ecdf_x <- ecdf(x)

xの範囲にわたって一定の間隔でベクトルを生成します。(編集:この場合、対数スケールで等間隔にする必要があります。負の値がある場合は、線形スケールでサンプルを使用してください。)

xx <- seq(min(x), max(x), length.out = 1e4)
#or
log_x <- log(x)
xx <- exp(seq(min(log_x), max(log_x), length.out = 1e3))

プロット用にx座標とy座標でデータを作成します。

dfr <- data.frame(
  x = xx,
  ecdf = ecdf_x(xx),
  ccdf = 1 - ecdf_x(xx)
)

プロットを描きます。

p_ccdf <- ggplot(dfr, aes(x, ccdf)) + 
  geom_line() +
  scale_x_log10()
p_ccdf

(また、見てくださいaes(x, ecdf)。)

于 2011-07-13T15:01:25.880 に答える
1

以下に示すように、ggplot を使用して、データの目的の ccdf プロットを取得しました。

>>ecdf_x <- ecdf(x) 
>>dfr <- data.frame( ecdf = ecdf_x(x), 
>>ccdf = 1 - ecdf_x(x) ) 
>>p_ccdf <- ggplot(dfr, aes(x, ccdf)) + geom_line() + scale_x_log10() 
>>p_ccdf

投稿が大変遅くなり申し訳ありません。皆さん、ありがとうございました!

于 2012-01-04T11:17:20.093 に答える