拟合分布以匹配 CDF 上的已知点

机器算法验证 r 优化
2022-04-12 03:59:29

我最近遇到了一种情况,我知道分布尾部的一些概率点,我想“拟合”一个通过尾部这些点的分布。我意识到这很混乱而且不太准确,并且受到概念问题的困扰。但是,请相信我,我真的很想这样做。

如此有效地,我知道 CDF 尾部的一些点x是值和该值y的概率或更小。这是用于说明我的数据的 R 代码:

x <- c(0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85)
y <- c(0.0666666666666667, 0.0625, 0.0659340659340659, 0.0563106796116505, 
       0.0305676855895196, 0.0436953807740325, 0.0267459138187221)

然后我创建一个函数来最小化我的数据和使用pbeta. 我使用 SSE 作为拟合指标,然后使用-sum. 我将初始猜测作为第一个参数optim(9, .8)尽管我已经尝试过不同的猜测并且我总是得到相同的结果。我使用的出发点猜测来自于手动设置看起来很接近的参数。

# function to optomize with optim
beta_func <- function(par, x) -sum( (pbeta( x, par[1], par[2]) - y)**2 ) 
out <- optim(c(9,.8), beta_func, lower=c(1,.5), upper=c(200,200), method="L-BFGS-B", x=x)

out <- out$par
print(out)
#> [1]  0.90000 23.40294

下面我用红色绘制了“优化”的 beta 分布,用蓝色绘制了我的实际数据,用黑色绘制了手动调整的 beta 参数的初始猜测。

plot(function(x) pbeta(x, shape1=out[1], shape2=out[2] ), 0, 1.5, col='red')
plot(function(x) pbeta(x, 9,.8), 0, 1.5, col='black', add=TRUE)
lines(x,y, col='blue')

在此处输入图像描述

我无法理解正在发生的事情,optim无法给出一个比我开始猜测更糟糕的解决方案。我计算了我的起始猜测与optim解决方案的 SSE,看起来我的猜测有一个更大的 -SSE:

# my guess
-sum( (pbeta( x, 9, .8) - y)**2)
#> [1] -0.03493344

# optim's output
-sum( (pbeta( x, .9, 23) - y)**2)
#> [1] -6.314587

使用过去的历史作为我的贝叶斯先验,我的猜测是我误解optim或输入不正确的输入。但是,我无法理解发生了什么。任何提示将非常感谢。

我尝试过使用CG优化方法,但结果并没有明显的不同,而且看起来仍然没有我最初的猜测那么好。

out <- optim(c(9,.8), beta_func, method="CG", x=x)
out <- out$par
print(out)
#> [1]  2.287611 11.124736
1个回答

我认为您不小心试图最大化平方误差。optim() 的默认值是最小化函数,因此 beta_func() 中的负号会导致搜索最大值。

如果你修改你的函数,你得到的值更接近你的猜测:

beta_func2 <- function(par, x) sum( (pbeta( x, par[1], par[2]) - y)**2 ) 
out2 <- optim(c(9,.8), beta_func2, lower=c(1,.5), upper=c(200,200), method="L-BFGS-B", x=x)
out2 <- out2$par
print(out2)
[1] 11.04296  0.50000

您可以根据您的观察检查新函数(其中 out、x 和 y 的定义如您的示例中所示):

plot(x,(pbeta(x,out[1],out[2])), ylim=c(-.1,1), col="red", type="l")
points(x, (pbeta(x,9,0.8)), col="black", type="l")
points(x,(pbeta(x,out2[1],out2[2])), col="orange", type="l")
lines(x,y, col='blue')
title(main="Blue observed CDF, black guesstimate, gold optimized")

在此处输入图像描述