gpt4 book ai didi

r - 如何测量R/ggplot2中2条分布曲线之间的面积

转载 作者:行者123 更新时间:2023-12-04 12:00:10 25 4
gpt4 key购买 nike

具体的例子是假设 x 是 0 到 10 之间的某个连续变量,红线是“商品”的分布,蓝色是“商品”的分布,我想看看将此变量纳入检查是否有值(value)为了“善良”,但我想首先量化蓝色>红色区域中的东西数量

因为这是一个分布图,比例看起来是一样的,但实际上我的样本中有 98 倍的好,这使事情变得复杂,因为它实际上不仅仅是测量曲线下的面积,而是测量分布的坏样本沿着它大于红色的线。

我一直在努力学习 R,但我什至不知道如何处理这个,任何帮助表示赞赏。 enter image description here

编辑
样本数据:
http://pastebin.com/7L3Xc2KU <- 本质上是几百万行。

该图是用

graph <- qplot(sample_x, bad_is_1, data=sample_data, geom="density", color=bid_is_1)

最佳答案

我能想到的唯一方法是使用简单的梯形计算曲线之间的面积。首先我们手动计算密度

d0 <- density(sample$sample_x[sample$bad_is_1==0])
d1 <- density(sample$sample_x[sample$bad_is_1==1])

现在我们创建将在我们观察到的密度点之间进行插值的函数
f0 <- approxfun(d0$x, d0$y)
f1 <- approxfun(d1$x, d1$y)

接下来我们找到密度重叠的 x 范围
ovrng <- c(max(min(d0$x), min(d1$x)), min(max(d0$x), max(d1$x)))

并将其分成 500 个部分
i <- seq(min(ovrng), max(ovrng), length.out=500)

现在我们计算密度曲线之间的距离
h <- f0(i)-f1(i)

并使用梯形面积公式,我们将 d1>d0 区域的面积相加
area<-sum( (h[-1]+h[-length(h)]) /2 *diff(i) *(h[-1]>=0+0))
# [1] 0.1957627

我们可以使用绘制区域
plot(d0, main="d0=black, d1=green")
lines(d1, col="green")
jj<-which(h>0 & seq_along(h) %% 5==0); j<-i[jj];
segments(j, f1(j), j, f1(j)+h[jj])

enter image description here

关于r - 如何测量R/ggplot2中2条分布曲线之间的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24742677/

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