gpt4 book ai didi

r - 使用R通过ggplot计算重叠密度图的面积

转载 作者:行者123 更新时间:2023-12-02 09:32:57 24 4
gpt4 key购买 nike

如何获得重叠密度曲线下的面积?

如何用 R 解决这个问题? (这里有一个python的解决方案:Calculate overlap area of two functions)

set.seed(1234)
df <- data.frame(
sex=factor(rep(c("F", "M"), each=200)),
weight=round(c(rnorm(200, mean=55, sd=5),
rnorm(200, mean=65, sd=5)))
)

(来源:http://www.sthda.com/english/wiki/ggplot2-density-plot-quick-start-guide-r-software-and-data-visualization)

ggplot(df, aes(x=weight, color=sex, fill=sex)) + 
geom_density(aes(y=..density..), alpha=0.5)

“图中使用的点由 ggplot_build() 返回,因此您可以访问它们。”所以现在,我有了点,我可以将它们提供给 approxfun,但我的问题是我不知道如何减去密度函数。

非常感谢任何帮助! (我相信需求量很大,但没有现成的解决方案。)

最佳答案

我正在寻找一种方法来对经验数据执行此操作,并且遇到了用户5878028提到的多个交叉点的问题。经过一番挖掘,我发现了一个非常简单的解决方案,即使对于像我这样的 R 菜鸟来说也是如此:

安装并加载“overlapping”(执行计算)和“lattice”(显示结果)库:

library(overlapping)
library(lattice)

然后将变量“x”定义为包含要比较的两个密度分布的列表。对于此示例,两个数据集“data1”和“data2”都是名为“yourfile”的文本文件中的列:

x <- list(X1=yourfile$data1, X2=yourfile$data2)

然后只需告诉它将输出显示为绘图,该图还将显示估计的重叠百分比:

out <- overlap(x, plot=TRUE)

我希望这能帮助像帮助我一样的人!这是一个重叠图示例

overlapping plot

关于r - 使用R通过ggplot计算重叠密度图的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41914257/

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