2015-04-03 90 views
1

我有指数函数(高斯分布)拟合函数,以实验数据

f(time)=exp(-((time-A)^2)/B) 

和我有形成矩阵[时间,值]一个实验数据。我想要做的是执行A和B参数的某种调整,这将给我最好的结果,这是第一个函数接近实验数据图。 这是我通过在Julia中手动调整完成的,但我正在寻找一种自动化的方式。

Comparison.jpg

问候

迈克

+2

高斯关于'A'对称。你的数据绝对不是(也不是你的合适功能)。你的拟合函数'exp(f)'? – Teepeemm 2015-04-03 11:26:20

回答

1

试试这个。这是你原来的功能:

y(t) = exp(-(t-A)^2/B) 

以双方的自然对数:

ln(y) = -(t-A)^2/B = -(t^2-2*A*t+A^2)/B 

现在你有一个2阶多项式可以适合使用最小二乘法来获得A和B的值是最小化平方误差的总和。

现在我可以看到你的函数了,我会忽略在t = 1.4 seconds跳转之前的值。只适合t >= 1.4 seconds的值。

0

高斯分布仅由两个参数确定,平均的分布(在您的情况A)和方差sigma的值(由2*sigma^2=B与您B)。

因此,您可以为您的数据计算平均值和方差,并将其插入高斯。

+1

我不这是适用的。 OP没有计数或频率数据。 – 2015-04-03 16:01:42

+0

@RobertDodier OP有数据,因此他/她可以计算它的均值和方差。有什么问题? – 2015-04-03 16:07:53

+0

也许你可以准确解释OP如何从他/她的时间和温度数据计算平均值和方差。 – 2015-04-03 16:17:59

2

从图片中很难分辨出来,但看起来您的数据是对强制变量中步骤变化的响应。实际上,有两个阶段的变化:一个在温度上升时t = 1.4左右,另一个在t = 1.6时下降。每一步改变后,温度模型可能会呈衰减指数,增加或减少到稳态水平。对于t >= t_change,其中A是起始温度,B是稳态温度,而c是时标,如temp(t) = B + (A - B)*exp(-(t - t_change)/c)AB,c,也许t_change是自由参数。您可以使用最小二乘法来找到它们。

棘手的部分是从观测数据确定t_change。 (但是,如果您已经知道t_change,只需将其插入。)您可能必须制定某种嵌套优化 - 针对t_change的许多可能值中的每一个,优化其他参数。然后选择t_change,其中最适合其他参数。

请参阅Seber and Wild,“非线性回归”,了解更多关于这样的部分中定义的模型的信息。