如何仅通过5到7个数据点来估计逻辑回归的上限?


11

我有。对于到的估计,我使用本文的公式:John非线性回归和非线性最小二乘法 在本文中,通过查看数据来估计。如果我这样做,即使我只有三点,它也能正常工作。由此我可以计算出另外两个。我用R中的nls()和C#中的LevenbergMarquardt测试了我的参数。他们返回的模型令人满意。 β1β3y=β11+exp(β2+β3x)β1β3β1

问题是我不想查看数据来获得的良好估计量,而是希望我的程序对其进行计算。一段时间以来,我使用的值比我的最大值(在\ max * 1.1\ max * 1.5之间的值)高一点。只要这些点覆盖了函数的大部分,此方法就可以正常工作。数据点位于曲线“顶部”的某个位置,但是当它们全部来自拐点“下方”时,此估计量肯定低于应有的水平,因此我无法拟合模型。绝对高于最高点(通过将其乘以高得离谱的值),模型无法以任何有用的方式拟合。β1max1.1max1.5

测量可能如下所示:

x =(40,50,60,70),y =(1000,950,400,200)->易于估计

x =(40,50,60,70),y =(1000,950,800,100)->易于估计

x =(40,50,60,70),y =(500,200,100,50)->估计起来不太容易

我想我可以通过计算给定点的增量并根据其计算上限来找出我在函数中的位置(在“底部”,在“顶部”,在坡度中)。有没有人暗示有更好的解决方案?附加信息:如果无法完成,对我来说,更重要的一点是,可以拟合的测量结果要尽可能地好,并且我接受某些测量结果根本无法拟合的问题。

(尽管我想要在这里发布的C#实现,但我认为问题不取决于语言)

更新(此应用):

x是温度值,y是相应的测量值。从本质上讲,它应该看起来像逻辑曲线,在较低温度下具有较高的y值,反之亦然。熔点等于曲线的拐点,随着模型参数的微小变化,其变化很大。

更新(一些由7个数据点组成的数据,已知拐点为60):

//first I made up some data without any noise and enough (13) points
double[] x17 = { 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90 };
double[] y17 = { 2000, 1920, 1820, 1700, 1500, 1280, 1000, 720, 500, 300, 180, 80, 0 };
//calculated inflection point: 59.642....

//Then I took three different parts of that data 
(to simulate how much data I will have in the real world)
double[] x18 = { 30, 35, 40, 45, 50, 55, 60 };
double[] y18 = { 2000, 1920, 1820, 1700, 1500, 1280, 1000 };
//calculated inflection point: 59.263.... is ok!

double[] x19 = { 60, 65, 70, 75, 80, 85, 90 };
double[] y19 = { 1000, 720, 500, 300, 180, 80, 0 };
//calculated inflection point: 53.447.... to small!

double[] x20 = { 45, 50, 55, 60, 65, 70, 75 };
double[] y20 = { 1700, 1500, 1280, 1000, 720, 500, 300 };
//calculated inflection point: 59.868... almost perfect!

我当前的上限估计方法是y0 * y0 / y1。通过这种方式,我希望考虑到我可能并不总是拥有接近最大值的值。

更新: x和y值永远不会为负。除非丢失数据点,否则x将始终为{40、45、50、55、60、65、70}。

更新: 我对模拟数据进行了很多测试,这些数据应该很容易拟合(我选择了曲线上精确的数据点=没有任何噪声),并且我发现它可以正常工作,除非第一个或第二个数据点(其中x = 40或x = 45)丢失。我想我将不得不放弃这些测量,而用户将不得不接受这些测量。


鉴于积分如此之少,我认为您的真正问题是估算的不准确性,而不是您如何计算它们。
Michael R. Chernick 2012年

1
最后一个示例的问题是,通过形式为的函数可以获得更好的拟合度(请注意负号)。那是可以接受的解决方案吗?如果不是这样,您将继续遇到问题,因为您将不得不接受两个模型之间边界上的解决方案(而且解决方案太糟糕了)。ÿ=β1个1个-ËXpβ2+β3X
ub

@MichaelChernick我想你是对的,问题是我永远不会获得超过7个数据点。我想我必须用更少的钱来踢出结果。我添加了测试用例,其结果应该相同。有改进的余地吗?或者这是我能得到的最接近的地方?
Verena Haunschmid

@whuber我试图用负号拟合数据,但是对于每个参数集,我都得到了奇异的梯度矩阵误差(R中)。您采用了哪些估算器?我添加了有关使用它的区域的信息,以强调为什么曲线必须采用这种方式。(我不确定您的公式是否满足这些要求)
Verena Haunschmid

(1)值的单位是什么?如果这些可能是负面的,那么您的模型可能将无法工作。(2)关于值的“噪声”或错误的性质,您能告诉我们什么?这对于拟合至关重要。ÿÿÿ
ub

Answers:


1

我在今年早些时候研究了类似的问题。我使用的解决方案基于本文,该解决方案使用线性代数消除最大的。这样,通过一些过程确定的剩余参数的结果(我只是将误差范围最小化,与本文中的相同),就可以用来推断最后的。β 1β1个β1个

直观上,此解决方案的前提是所有具有相同速率和位置参数的逻辑曲线都是自相似的,因此设置上限仅意味着将“ S”形曲线“拉伸”到适当的最大值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.