在混合权重上拟合具有区间约束的指数混合模型

机器算法验证 回归 预测模型 曲线拟合 混合分布 指数分布
2022-04-09 07:01:48

有什么方法可以拟合表格的模型y=AeBx+CeDx+E?

这是要拟合的实际科学数据:http: //dl.dropbox.com/u/39499990/Ben%2C%20real%20data.xlsx

B 应在 -1 到 -100 的范围内。

D 应在 -100 到 -500 的范围内。

E 是一个常数。

该特定模型是令人感兴趣的,因为它是科学界公认的用于描述电压依赖性钙通道失活的手部生物过程的模型。(供参考参见例如:电压门控CaV1.2 L-型Ca2+通道的新型分子失活决定因素。A Livneh, R Cohen, and D Atlas; Neuroscience, Jan 2006; 139(4): 1275-87。”通过双指数衰减分析失活率 -A1exp(-t/Tao1)-A2exp(-t/Tao2)+C " )

最好的解决方案是我可以通过使用内置函数或 VBA 代码在 Excel 中实现。

3个回答

最好的不是 Excel 中的解决方案——电子表格不是数据分析的好环境:http ://www.burns-stat.com/pages/Tutor/spreadsheet_addiction.html

R中的'nls'函数将是一种选择。

我将向您展示如何使用 Mathematica 分析您的数据。首先,我将根据要求使用您的模型。

data = Import["Desktop/data.csv"];
y = NonlinearModelFit[data, 
  a Exp[b x] + c Exp[d x] + e, {a, b, c, d, e}, x];

Mathematica 返回此错误:

NonlinearModelFit::cvmit:在 1000 次迭代内未能收敛到要求的准确度或精度

这意味着您的模型可能并不理想。让我们考虑一下数据,看看我们是否可以提出更好的数据。您的系列负数的对数图(因此我们可以取对数)显示了一条相当多项式的曲线:

原始数据的对数图

(使用生成ListLogPlot[# {1, -1} & /@ data]

这表明我们应该使用对数线性模型,而不是指数混合

y^=exp(a+bx+cx2+)

让我们尝试一个三次多项式:

nlm = LinearModelFit[{#[[1]], Log[-#[[2]]]} & /@ data, {x, x^2, x^3}, x]

Mathematica 回归71.6838 - 391.293 x + 764.791 x^2 - 501.198 x^3

换句话说,

y^=exp(71.6838391.293x+764.791x2501.198x3).

这是数据图、混合模型(红色)和对数线性模型(绿色):

最后结果

(使用生成Show[{ListPlot@data, Plot[y[x], {x, 0.38, 0.57}, PlotStyle -> {Thick, Red}], Plot[-Exp@nlm@x, {x, .35, 0.6}, PlotStyle -> {Thick, Green}]}]

您可以更好地拟合四次多项式,但您明白了。残差显示结构,这意味着模型没有从数据中挤出所有信息:

三次多项式的残差

(使用生成ListPlot@nlm["FitResiduals"]

幸运的是,当您将订单提高到六个时,订单实际上消失了:

十六进制多项式的残差

您是否正在寻找实现它的方法或软件?它看起来像一个典型的非线性回归问题。在 SAS 中,这是使用 proc nlin 实现的。