gpt4 book ai didi

r - 在ggplot中绘制累积频率分布的更简单方法?

转载 作者:行者123 更新时间:2023-12-03 08:59:34 24 4
gpt4 key购买 nike

我正在寻找一种更简单的方法来绘制ggplot中的累积分布线。

我有一些可以立即显示其直方图的数据

qplot (mydata, binwidth=1);

我在 http://www.r-tutor.com/elementary-statistics/quantitative-data/cumulative-frequency-graph找到了一种方法,但是它涉及几个步骤,并且在浏览数据时非常耗时。

有没有一种方法可以在ggplot中以更直接的方式进行操作,类似于如何通过指定选项来添加趋势线和置信区间?

最佳答案

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))

关于r - 在ggplot中绘制累积频率分布的更简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3544002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com