问题标签 [symfit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
60 浏览

python - 不确定我的代码使用 symfit 导致 DiracDelta 错误的原因

我一直在对 PdSn4 进行 QMSA 分析,在尝试实施多载波拟合时,我不断收到错误消息

NameError:名称“DiracDelta”未定义

DiracDelta我的输出仅包括一个在查看第二个带拟合 ( n2, ) 时存在该函数的实例mu2DiracDelta据我了解,根据我的模型设计,输出中不应该有任何功能。

数据链接:Multicarrier Fitting Data 应保存为 PdSn4_010K_rhoData.txt,与文件在同一目录下。

如果有人能弄清楚为什么DiracDelta我的输出中有这个函数或者如何克服这个错误,那就太好了!

错误回溯如下:

0 投票
1 回答
92 浏览

python - 如何使用 Symfit 或 curve_fit 对分段模型执行交叉验证?

我正在尝试使用 Symfit 对分段模型执行交叉验证:

我的资料:

要使用交叉验证,我们需要创建一个估算器,所以我尝试将配件打包到一个类中

然后我执行交叉验证线

但似乎我没有按照应有的方式创建该类 错误消息:

我用curve_fit尝试过,但没有成功:

有任何想法吗 ?

0 投票
0 回答
101 浏览

python-3.x - 如何修复“AttributeError:‘ImmutableDenseNDimArray’对象没有属性‘as_real_imag’”

我试图通过 symfit 同时拟合两个具有共享参数的模型,并不断出现以下错误:

我已经简化了模型中的两个函数:

任何如何对这个错误进行排序的建议都会很棒。在真实模型中,有一个 cosh 组件,我明确写出了它的定义。

先感谢您!

追溯如下:

0 投票
1 回答
173 浏览

python-3.x - 同时最小化两个函数

我正在尝试优化一个模型,该模型涉及在共享变量的同时同时拟合数据的两个函数。我目前在最小化这个模型时遇到问题,因为 scipy.optimize 需要传递一个函数,但我需要将两者一起最小化。

简化的代码块(在 symfit 中执行)

当我使用数据运行真实模型时,出现以下属性错误:

回溯表明该错误发生在该行中:

正如我所说,这是因为当它必须是一个函数时我已经将一个模型传递给了最小化函数但是我不确定如何同时最小化 y1 和 y2 以适应它。

任何建议将不胜感激,在此先感谢您!

按照以下建议进行编辑,但具有实际功能:

显示错误:

在与指数一致的函数 y1 中找到

任何进一步的建议都会令人惊讶,在此先感谢您!

0 投票
2 回答
725 浏览

python - 如何解决 conda 问题:PackagesNotFoundError: 当前频道无法提供以下软件包

我正在尝试使用 miniforge 在 MacBook Pro M1 上安装 symfit,以实现处理器兼容性,pip3 install symfit从而导致错误。但是,在运行时conda install -c conda-forge symfit,我得到:

这样做时,我发现 symfit 在 conda-forge 频道中可用!为什么不能从命令行安装?

0 投票
1 回答
125 浏览

python - Python中改进的傅立叶级数参数

编辑:为了澄清问题,我专门寻找一个例程,它可以在周期性数据的傅里叶分解中准确计算 phi1、phi2、phi3 等,给定一系列形式

正如下面所讨论的,我已经探索了一些关于 Stack Overflow 的相关讨论,但似乎都没有产生准确的结果(除非我在我的代码或数学中犯了错误)。

我正在尝试将傅里叶级数拟合到一些周期性变星数据,我想要从中获得特定的模型参数。此处的方程式 (1) 或 (2)或任何等效项都是有用的(我为使用链接而道歉;我不允许发布图片,并且除了纯文本之外,看不到如何排版方程式)。例如,这些结果将用于计算 RRab Lyrae 变星的金属丰度,如本文所述。本质上,这需要准确确定 phi_31=phi_3-3*phi_1,在这种情况下使用傅里叶级数的正弦形式(等式 2)。

这个网站上有很多关于拟合傅立叶级数的问题,但我认为没有一个答案能完全满足我的需要。这里的答案实际上使用 symfit 对上面链接的 Deb 和 Singh 论文中的方程 (1) 进行建模。使用这种方法,我得到了一个非常适合 RRab Lyrae 数据的模型,但经验结果似乎与此相去甚远,表明该模型没有找到正确的参数。我还将该代码修改为正弦傅立叶级数,最佳拟合模型会产生不同的结果,所以我认为 symfit 做得不够好(我的代码对于这篇文章来说有点长,但我会如果有人愿意,很乐意分享)。

jakevdp在这里给出的答案表明 symfit 陷入了局部最小值,这对我来说是有道理的。他讨论的 Lomb-Scargle 方法做得很好,由于他的答案中包含的代码有一些被贬低的功能,我将对其进行更新。首先,我们需要一些数据来处理。这是来自 Catalina Surveys DR2 的 RRab Lyrae 变量 SV Hya 的一些光度数据。下面的代码大致按照 jakevdp 的代码拉入数据,围绕恒星的实际周期(0.47855 天)绘制 LS 周期图,并拉出最适合的 LS 模型参数:

这真的很酷,但我的问题是我不知道如何,正如 jakevdp 所说,

这些线性正弦/余弦幅度可以通过一点三角函数转换回非线性幅度和相位。

我看不出如何将此处描述的 Lomb-Scargle 模型重写为 Deb 和 Singh 的等式 (1) 或 (2)。LS 模型有 N+1 项,而不是 2N+1,所以我想需要 2*nterms LS 模型来产生 N 项 Deb 和 Singh 型模型。但是,如果您查看链接中的模型,很明显,设置 cos(a)=sin(a+pi/2) 使我们能够以类似于 Deb 和 Singh 中的等式 (2) 的形式重写模型,仅phi 参数固定为偶数项为 0,奇数项为 pi/2。因此,该模型似乎先验地约束了我想要确定的实际参数。

所以,我的问题是:(1)我的数学错了,我能把 LS 模型结果转换成能满足我需要的形式吗?(2) 如果没有,有没有办法将 LS 模型中的级数编辑为更一般的 2N+1 项形式?(3) 如果没有,我可以使用另一种方法将一般 2N+1 项傅里叶级数拟合到这些数据中,以便提取 phi1、phi3 等吗?

0 投票
0 回答
79 浏览

python - Python中的曲线拟合与Matlab不同

我在 Matlab 中有一个要转换为 python 的代码。在 Matlab 代码中,我使用曲线拟合工具箱将一些数据拟合到 3 阶傅里叶级数。这是我在 Matlab 中的做法:

这是数据图

在此处输入图像描述

因此,为了将其转换为 Python,我搜索了与曲线拟合工具箱等效的库,并找到了一个名为“symfit”的库,它具有相同的用途。我查看了文档并找到了可以提供帮助的示例,因此我将描述中的示例与我的数据一起使用,如下所示:

但是在运行代码时,这是我得到的图:

在此处输入图像描述

我不知道为什么拟合的数据是一条直线。任何人都可以帮助解决这个问题吗?我不知道是我使用了错误的算法还是我错误地绘制了数据。

编辑: 这里是那些想尝试的人的数据文件:https ://docs.google.com/spreadsheets/d/18lL1iMZ3kdaqUUtRDLNRK4A3uCPzOrXt/edit?usp=sharing&ouid=112684448221465330517&rtpof=true&sd=true

0 投票
1 回答
33 浏览

python - 将数据拟合到fourier3系列总是产生一条直线

我有适合 Fourier3 系列的数据,我查看了这个答案:here并尝试了来自不同包的不同算法(如 symfit 和 scipy)。但是当我绘制数据时,不同的包给了我这个结果: 在此处输入图像描述

目前,我正在使用来自 scipy 的 curve_fit 包,这是我的代码:

所以,我的代码基本上会读取随机的 8 个数字,并将它们分别分配为 (f, a0, a1, b1, a2, b2, a3, b3) 的初始猜测。

我尝试在 Matlab 上拟合数据以检查数据是否可以与 Fourier3 拟合,结果很好: 在此处输入图像描述

我在 Python 和 Matlab 上打印了输出以进行比较,这是两者的结果: Python:

MATLAB:

如前所述,只有 a0 的值是正确的,但其他值与 Matlab 相差甚远。那么为什么我在 Python 中得到这个结果呢?我做错了什么?

以下是那些喜欢测试它的人的数据:

https://docs.google.com/spreadsheets/d/18lL1iMZ3kdaqUUtRDLNRK4A3uCPzOrXt/edit?usp=sharing&ouid=112684448221465330517&rtpof=true&sd=true

0 投票
0 回答
38 浏览

python - 无法使用 Symfit 和一些实验结果为 ODE 系统获得正确的参数拟合

我想拟合以下模型: 在此处输入图像描述 一些荧光测量([YFP] 随着时间的推移)。基本上我可以测量YFP随时间的变化,但不能测量x的变化。在浏览了溢出中的不同解决方案(并尝试了各种提出的解决方案)之后,我完成了与Symfit非常接近的工作。但是,当我尝试将模型拟合到实验结果时,我得到以下拟合结果:

在此处输入图像描述

我不明白为什么 X 的预测如此之低,而且几乎是一个常数(几乎是因为当我放大时,它实际上会发生一点变化)。此外,它说“已超过最大功能评估次数”。我究竟做错了什么??我使用了错误的最小化器吗?初始参数估计值错误?

下面是我的代码: