我对机器学习还很陌生,所以我很乐意接受各种建议。今天我读了一些关于最小最大风险的内容,我想知道这是否能在我的案例中应用。
我有两个数据集,我希望找到一条线(或者更精确地说,是一个边界),使得左边曲线在垂直线右侧的面积等于右边曲线在垂直线左侧的面积。是否有办法在R中实现这一点,即找到绘制垂直线的确切位置?
我在这里提供了一些样本数据,可以用来绘制以下图表: https://gist.github.com/Legend/2f299c3b9ba94b9328b2
回答:
假设你使用density
函数来获取每个响应的估计核密度,然后按照这个链接获取估计的核累积分布函数(CDF),那么你的问题就变成了寻找一个值t
,使得:1 - cdf1(t) = cdf2(t)
,这可以通过常规的根查找函数来解决:
x1 <- subset(data, Type == 'Curve 1')$Valuex2 <- subset(data, Type == 'Curve 2')$Valuepdf1 <- density(x1)f1 <- approxfun(pdf1$x, pdf1$y, yleft = 0, yright = 0)cdf1 <- function(z){ integrate(f1, -Inf, z)$value}pdf2 <- density(x2)f2 <- approxfun(pdf2$x, pdf2$y, yleft = 0, yright = 0)cdf2 <- function(z){ integrate(f2, -Inf, z)$value}Target <- function(t){ 1 - cdf1(t) - cdf2(t)}uniroot(Target, range(c(x1, x2)))$rootR > uniroot(Target, range(c(x1, x2)))$root[1] 0.06501821