在R中有一個內置的ecdf()
函數應該使事情變得更容易。下面是一些示例代碼,利用plyr
library(plyr)
data(iris)
## Ecdf over all species
iris.all <- summarize(iris, Sepal.Length = unique(Sepal.Length),
ecdf = ecdf(Sepal.Length)(unique(Sepal.Length)))
ggplot(iris.all, aes(Sepal.Length, ecdf)) + geom_step()
#Ecdf within species
iris.species <- ddply(iris, .(Species), summarize,
Sepal.Length = unique(Sepal.Length),
ecdf = ecdf(Sepal.Length)(unique(Sepal.Length)))
ggplot(iris.species, aes(Sepal.Length, ecdf, color = Species)) + geom_step()
編輯我只是意識到你想累積頻率。你可以得到由觀測總數ECDF值乘以:
iris.all <- summarize(iris, Sepal.Length = unique(Sepal.Length),
ecdf = ecdf(Sepal.Length)(unique(Sepal.Length)) * length(Sepal.Length))
iris.species <- ddply(iris, .(Species), summarize,
Sepal.Length = unique(Sepal.Length),
ecdf = ecdf(Sepal.Length)(unique(Sepal.Length))*length(Sepal.Length))
這是一個很好的答案,但有一件事我無法弄清楚。在ecdf(Sepal.Length)(獨特的(Sepal.Length))中,發生了什麼?我明白它是從'ecdf'對象中提取具體的值,但我不記得在...之前看到過這個(x)(y)符號...你能幫我理解嗎?謝謝! – 2011-08-30 15:34:11
@MattParker'ecdf()'返回一個函數,以便表示法以「Sepal.Length」的唯一值計算返回的函數。 – 2011-11-08 16:16:01
@GavinSimpson明白了,謝謝! – 2011-11-08 16:31:46