问题标签 [model-fitting]

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 投票
1 回答
1130 浏览

numpy - scipy.optimize.leastsq 无法拟合简单模型

我一直在尝试使用 python 的scipy.optimize库来估计模型的参数,但到目前为止没有成功。我尝试使用scipy.optimize.leastsq其中使用 levenberg-marquardt 算法。不幸的是,即使我将初始参数猜测设置为非常接近最佳拟合,它也总是无法找到我的模型函数的最小值。实际上,它总是返回初始猜测的参数。所以,我认为我做错了什么。我的模型是一个简单的圆,但为了使事情变得更简单,只有半径是实际参数,数据中圆的中心是已知的并且是硬编码的。数据是一个 10x10 像素的浮点图像,圆心为 5,5,半径为 4。实际上,数据是使用我试图拟合的模型生成的。所以,完美契合是存在的。这是我的代码:

scipy我对数据进行了硬编码,以消除任何数据依赖关系,并允许代码在任何已安装的机器上开箱即用。我不太明白该model01函数应该返回什么。根据文档,它应该返回一个数组。什么数组?在我的代码中,我假设我必须为每个数据点返回一个残差数组。那是对的吗?我的数据是一个二维数组,因为它是一个图像,但我的残差是一个展平的二维残差数组。那样行吗?有人能告诉我我到底做错了什么吗?有人可以修改和修复代码吗?scipy正如我上面提到的,代码应该在任何安装并numpy安装的机器上开箱即用。如果我想实现的目标是不可能的scipy.optimize.leastsq,您能否推荐一些其他适合使用 levenberg-marquardt 算法的模型的库?

0 投票
2 回答
1512 浏览

matlab - 将模型拟合到matlab中的数据

我有一些实验数据和一个我想尝试拟合的理论模型。我已经用模型制作了一个函数文件 - 代码如下所示

Q 是 x 值,P 是 y 值。我可以从 matlab 命令行很好地调用该函数,它工作正常,例如 [Q,P] = RodFit(1,0.001) 给了我一个我可以使用绘图的结果plot(Q,P)

但我不知道如何最好地找到适合某些实验数据的方法。理想情况下,我想使用优化工具箱和 lsqcurvefit,因为这样我也可以优化 R 和 L 参数。但我不知道如何将(x,y)数据传递给 lsqcurvefit。我已经尝试使用下面的代码,但它不起作用

它给了我错误信息:

我尝试过 i) 使所有向量/矩阵的长度相同,并且 ii) 尝试.*改用。没有任何效果,我给出了同样的错误信息

任何形式的帮助都将不胜感激,无论是关于应该使用什么方法的建议,对我的代码的建议还是第三点。

编辑回答 Osmoses: 一个非常好的观点,但我不认为这是问题所在。刚刚检查了所有向量/矩阵的大小,它们应该没问题

更新

我想我已经确定了问题所在。当我直接指定输入时,RodFit 函数可以正常工作,例如[Q,P] = RodFit(1,0.001);

但是,如果我将 x0 定义为x0 = [1,0.001]我无法将 x0 传递给函数

如果我x0 = [1,0.001] 清楚地使用,也会发生同样的情况,matlab 仅将 x0 解释为输入,k并尝试多重播放长度(ydata)的向量和长度(x0)的向量,这显然失败了。

所以我的问题是我需要编写代码,以便lsqcurvefit了解 xdata 和 x0 的第一列是k变量,而 xdata 和 x0 的第二列是C变量。根据文档 -传递矩阵参数- 我应该能够将 x0 作为矩阵传递给求解器。然后,求解器还应该以与 x0 相同的格式传递 xdata。

0 投票
1 回答
691 浏览

matlab - matlab: linear regression and different error weight

I have a model

y is in range [-100000, 100000]. It is important for me to get regression where I get minimum in relative errors. Absolute errors are less important.

What matlab function should I use? And how huge should be my sample?

And what is the easiest way to calculate R_adj ? Is R_adj a good variable for evaluating model you propose or it that model one should use something else?

0 投票
1 回答
1153 浏览

r - R:我的数据集的函数“nls”错误

我有气候压力值和压力测量站高度的数据。我想为他们拟合一个指数模型。数据如下所示:

我首先尝试取数据的对数并拟合lm它们:

但是由于这提供了一个根本不适合的模型,我决定使用nls从其他帖子中获取各种提示的功能(例如“开始”):

不幸的是,即使是“开始”,也会出现以下错误,我真的不知道该怎么办了......

任何人都可以帮忙吗?提前致谢!!!

0 投票
2 回答
7011 浏览

python - 使用 scikit-learn 拟合向量自回归模型

我正在尝试使用 scikit-learn 中包含的广义线性模型拟合方法来拟合向量自回归 (VAR) 模型。线性模型的形式为y = X w,但系统矩阵X具有非常奇特的结构:它是块对角线,并且所有块都是相同的。为了优化性能和内存消耗,模型可以表示为Y = BW,其中B是来自X的块,并且YW现在是矩阵而不是向量。LinearRegression、Ridge、RidgeCV、Lasso 和 ElasticNet 类很容易接受后一种模型结构。但是,由于 Y 是二维的,拟合 LassoCV 或 ElasticNetCV 会失败。

我发现https://github.com/scikit-learn/scikit-learn/issues/2402 从这个讨论中我假设 LassoCV/ElasticNetCV 的行为是有意的。除了手动实施交叉验证之外,还有其他方法可以优化 alpha/rho 参数吗?

此外,scikit-learn 中的贝叶斯回归技术也期望y是一维的。有没有办法解决?

注意:我使用 scikit-learn 0.14(稳定)

0 投票
1 回答
299 浏览

probability - 为早期数据值拟合离散(负二项式)分布

我在拟合离散分布函数时遇到了一些困难(我专门使用负二项分布)。这是我的设置:我有一个传入项目的来源,每个项目都有一个未知的生命周期。每天都有一些过期(第一天大部分,第二天更多,等等)。对于现有的传入项目来源(来源超过 180 天),我设法将负二项分布的新项目的寿命建模为可接受的错误(使用 MLE - 最大似然估计)。

我的问题从传入项目的新来源开始。我想在短时间内(例如,5-7 天后)估计他们的物品的生命周期分布。当我尝试应用 MLE 时,我得到的均值显着降低(即 3 而不是 30)。我认为这是因为 MLE 无法理解最后一天(第 7 天)的质量实际上是 1-CDF(6)(前 6 天的累积分布函数)并且实际上也包含生活物品。

是否有一种仅基于早期数据值和其他值的质量总和来拟合离散分布的好方法?我可以为它写一些优化函数,只考虑前 6 天的权重,但我觉得它会给我带来次优的性能。

我对理论解释很满意,但如果你能解决特定的函数或库,我可以在 Matlab、R、Python 和 C# 中工作。

0 投票
1 回答
16211 浏览

python - 如何使用仅作为上限的数据在 python 中进行最小二乘拟合?

我正在尝试在 python 中对具有三个变量的已知函数执行最小二乘拟合。对于随机生成的有错误的数据,我能够完成此任务,但我需要拟合的实际数据包括一些数据点,这些数据点是值的上限。该函数将通量描述为波长的函数,但在某些情况下,在给定波长处测量的通量不是有误差的绝对值,而是通量的最大值,实际值低于该值直至零.

有没有办法告诉拟合任务某些数据点是上限?此外,我必须对许多数据集执行此操作,并且每个数据集可能是上限的数据点数量不同,因此能够自动执行此操作将是有益的,但不是必需的。

如果有任何不清楚的地方,我深表歉意,如果需要,我会努力更清楚地解释。

我用来拟合我的数据的代码包含在下面。

0 投票
2 回答
2660 浏览

r - 如何从 R 中的 GLM 调用中检索原始变量名称的列表?

在 R 中使用glm函数时,可以使用类似addNAlog内部formula参数的函数。假设我们有一个Data包含 4 列的数据框:Classvar1它们是因子,var2var3它们是数字变量,我们适合:

在 glm 输出变量 1 现在将被调用addNA(var1)(例如 in Model$xlevels),而变量 3 将被调用log(var3)

是否可以从 glm 输出中检索一个列表,该列表表明 var1、var2 和 var3 是从数据帧中提取的,而变量名称中没有出现 addNA(var1) 或 log(var3)?

更一般地说,在调用 glm之后,在 glm 函数内部生成任何转换/交叉项等之前,是否可以推断出 glm 从输入数据帧中提取了哪些列?

0 投票
0 回答
186 浏览

python - Python scipy.optimize 通过 x 偏差拟合

我在 Python 中有一个简单的拟合问题——我有一些数据和一个拟合函数,我想要的只是找到最佳参数。

问题是,我的 x 数据是我的因变量,我的 y 数据是我的自变量。所以我希望 Python 找到参数以最小化关于 x 偏差的卡方,而不是默认的 y 偏差。

显而易见的解决方案是反转我的拟合函数并交换我的 x 和 y 参数,但由于函数的性质,这是不可能的:

y = a / (exp((vx)/c) + 1) + d(即费米-狄拉克步长),如果没有奇点/未定义,则无法反转。

如果有人可以帮助我扭转卡方评估的性质,那将是惊人的!(最好不要只是从头开始编写一个新的优化例程......)

小号

0 投票
2 回答
3775 浏览

r - “statsmodels”或其他 Python 包是否提供与 R 的“step”功能等效的功能?

R 的使用AIC选择基于公式的模型的功能是否有statsmodels或其他 Python 等效项?step