假设我有一些数据,我想为其拟合一个参数化模型。我的目标是找到这个模型参数的最佳值。
我正在使用AIC / BIC / MDL类型的标准进行模型选择,该标准奖励具有低错误的模型但也惩罚具有高复杂性的模型(可以说,我们正在为这些数据寻求最简单但最有说服力的解释,a la Occam's剃须刀)。
继上述之后,这是我根据三个不同标准(两个要最小化,一个要最大化)得到的那种东西的一个例子:
在视觉上,您可以轻松地看到肘部形状,并且您可以在该区域的某处为参数选择一个值。问题是我正在为大量实验这样做,我需要一种无需干预即可找到此值的方法。
我的第一个直觉是尝试从拐角处以 45 度角画一条线并继续移动它直到它与曲线相交,但这说起来容易做起来难 :) 如果曲线有些倾斜,它也可能会错过感兴趣的区域。
关于如何实现这一点或更好的想法的任何想法?
以下是重现上述图表之一所需的样本:
curve = [8.4663 8.3457 5.4507 5.3275 4.8305 4.7895 4.6889 4.6833 4.6819 4.6542 4.6501 4.6287 4.6162 4.585 4.5535 4.5134 4.474 4.4089 4.3797 4.3494 4.3268 4.3218 4.3206 4.3206 4.3203 4.2975 4.2864 4.2821 4.2544 4.2288 4.2281 4.2265 4.2226 4.2206 4.2146 4.2144 4.2114 4.1923 4.19 4.1894 4.1785 4.178 4.1694 4.1694 4.1694 4.1556 4.1498 4.1498 4.1357 4.1222 4.1222 4.1217 4.1192 4.1178 4.1139 4.1135 4.1125 4.1035 4.1025 4.1023 4.0971 4.0969 4.0915 4.0915 4.0914 4.0836 4.0804 4.0803 4.0722 4.065 4.065 4.0649 4.0644 4.0637 4.0616 4.0616 4.061 4.0572 4.0563 4.056 4.0545 4.0545 4.0522 4.0519 4.0514 4.0484 4.0467 4.0463 4.0422 4.0392 4.0388 4.0385 4.0385 4.0383 4.038 4.0379 4.0375 4.0364 4.0353 4.0344];
plot(1:100, curve)
编辑
我接受了Jonas给出的解决方案。基本上,对于p
曲线上的每个点,我们找到最大距离d
为: