问题标签 [non-linear-regression]
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.
r - 在 R 中拟合指数 nls
我正在尝试为某些数据拟合一条最佳拟合线。从外观上看,它是一条负指数曲线。我已经设法使用该nls
函数来找到二阶多项式拟合,但是当我尝试拟合指数时,就会出现问题......
当我输入以下内容时:
R 输出一条消息:
numericDeriv(form[[3L]], names(ind), env) 中的错误:评估模型时产生的缺失值或无穷大
我花了很长时间玩不同的初始参数,但我要么收到此消息,要么收到另一个说矩阵是奇异的....
我正在尝试将价格与年龄相匹配(图表附在下面的链接中)
r - 无法使用非线性拟合方法(nlsLM、nlxb 和 wrapnls)进行拟合
我有一个nls
fitting
我想用 R 做的任务。我第一次尝试在这里做这件事,正如@Roland 指出的那样
“关键是复杂的模型很难拟合。越是这样,支持模型的数据就越少,直到它变得不可能。如果你有非常好的起始值,你也许可以拟合这个。”
我可以同意@Roland,但如果excel
可以做到这一点,为什么R
不能做到呢?
基本上这种拟合可以用 Excel 的 GRG 非线性求解器完成,但是这个过程非常耗时,有时拟合效果不好。(因为现实中有很多数据)。
这是我的示例data.frame。我想set
用下面提供的模型来拟合每个组,
尝试 1
我已经在这里发布了一个问题Trouble-when-adding-3rd-fitting-parameter-in-nls
基本上问题是我想对分组数据进行拟合并根据拟合系数进行预测。
我nlsLM
从library(minpack.lm)
我得到一个错误
nlsModel(formula, mf, start, wts, upper) 中的错误:初始参数估计处的奇异梯度矩阵
根据@Roland,乍一看可能是模型错误或我的起始值不好。另一方面,我可以只用两个拟合参数来拟合这个模型。当我想将third
参数添加到拟合函数时,就会出现问题。
尝试 2
在那篇文章中,关注@G. Grothendieck 的建议,我尝试nlxb
从nlmrt
包中将其中一个参数固定d
为d=32
并进行如下拟合;
拟合系数是合理的哇!但是这一次我意识到(@G. Grothendieck 后来也指出)不可能预测之后的新值nlxb
(为什么=?我不知道!)
::你可以从这里predictvals
找到功能
UseMethod(“predict”)中的错误:没有适用于“predict”的方法应用于“nlmrt”类的对象
没有!coef
或predict methods
用于"nlmrt"
类对象。
尝试 3
在关注@G 之后。格洛腾迪克接下来我尝试wrapnls
了另一个建议nlmrt
。
因为在这篇文章中他说, can-we-make-prediction-with-nlxb-from-nlmrt-package
“因为 nlmrt 包确实提供wrapnls
了哪些将运行nlmrt
,然后nls
生成一个"nls"
对象,然后该对象可以与所有"nls"
类方法一起使用。
从同一个nlmrt
包中仍然遇到如下问题
plyr
我在第一篇文章后放弃使用,因为加载plyr
并且dplyr
使我的问题更加复杂。所以我会坚持dplyr
使用do
函数。
nlsModel(formula, mf, start, wts, upper) 中的错误:初始参数估计处的奇异梯度矩阵
我回到了我从这个错误开始的地方。我想我尝试了我能做的一切,寻找相关的例子(虽然只有 3 个),阅读书籍并遵循建议。
r - 使用 SparkR(或其他方法?)的大型数据集的非线性回归
我正在尝试在一个非常大的数据集上运行非线性回归 (NLR)。对于较小的测试数据集,我在 R 中有工作代码,我正在尝试将其移植到 SparkR。
我是 Spark(R 和其他)的新手。
R(我的工作代码):
经过一些操作,我获得了 R-DataFramedf
并运行以下 NLR:
火花:
在使用 csv-package ( $ sparkR --packages com.databricks:spark-csv_2.11:1.3.0
) 启动 SparkR 后,我设法创建了 SparkR-DataFrame 并运行线性回归作为测试用例
(旁注:我必须创建 customSchema 因为 inferSchema 总是转换为字符串而不是双精度)
- 如何在 SparkR 中运行 NLR?是否有可能或者非线性是否必然排除 Sparks 的并行化魔力?
- 我假设仅收集 spark-df 没有任何好处
nls(y1 ~ b0/(1+exp(b1+b2*y2+b3*y3)),collect(spk_df))
回到 R:
如果非线性会阻止我以有用的方式使用 spark,我应该如何处理大型数据集的 NLR?
我试过使用 rff
包,特别是 ff-data.frames ffdf
,但我想我遇到了麻烦,原因与 sparkR 失败的原因相同。
我原则上可以处理随机选择的数据行,就像这样 SO,但我的数据框实际上是通过操作多个文件/数据框创建的,我需要从每个文件中选择相同的随机行。我已经能够生成这些随机文件
有更好的解决方案吗?这让我有点紧张,因为虽然原则上文件应该都是相同的行数/顺序,但我担心有时可能会有不好的图像。
想法?
谢谢!!!
r - 在 R 中优化非线性 Langmuir 参数估计
我有兴趣使用nls
它来帮助拟合 Langmuir 方程,类似于在 R 中拟合非线性朗缪尔等温线Y =(Qmax*k*X)/(1+(k*X))
这篇文章中所做的。我感兴趣的方程的参数对应于下面绘制的吸附数据的水平渐近线(绿线)。除了或改进我的使用方法之外,是否有更强大的方法或方法可以用来获得尽可能接近视觉渐近线(绿线)的值?Qmax
nls
nls
Qmax
Qmax=3200
使用以下数据:
我得到一条Qmax = 4253.63
(红线) - 大约 1000 个单位。使用上限和下限只会导致我设置上限的 Qmax,而更改初始值似乎不会改变结果。这是一个可以通过与我在基础 R 中采用的非线性回归方法不同的方法来解决的挑战,还是这首先是一个统计/数学问题?
我对模型线性化的尝试不太成功:
免责声明:这是我的第一篇文章,所以请多多包涵,我对 R 比较陌生。话虽如此,任何可能帮助我改进上述技术的技术建议将不胜感激。
r - 在 R 中使用 nls 对非线性回归进行交叉验证
问题:
我有一个数据集inputAll.data
。我想使用 80% 的数据作为模型构建输入,并在剩余的 20% 数据上验证模型。
我手动将数据集拆分为两个较小的数据集input80.data
,input20.data
分别包含 80% 和 20% 的数据。
我的数据集中的数据格式:
我使用 80% 的数据来构建非线性回归模型nls
。
我正在使用剩余的 20% 数据来获得预测值。我保存了此数据的副本,其中包含y
另一个名为 的文件中的实际值input20Actual.data
,但input20.data
仅包含x
值。
然后我使用一个自定义函数RMSE
来计算预测值和实际值之间的误差。
误差计算是通过获取每个预测值并将其与我存储的实际值进行比较来完成的input20Actual.data
。我将输出存储在一个文件中。
问题是我手动拆分了输入集。我想自动化这个,并为不同的拆分(每次不同的数据)做同样的事情,并获得计算误差的平均值。
我尝试了什么:
我在 StackOverflow 上阅读了有关 R 中交叉验证的信息。我的理解是,它迭代地需要一些 % 的数据用于模型创建,而剩余的数据用于测试。如果我可以在 中使用交叉验证功能nls
,我就不必将输入数据拆分为两个文件。
我已经在 SO 上搜索了很多解决方案。许多关于交叉验证的答案都是针对lm
. 但我特别需要对nls
. 我还阅读了有关该caret
软件包的信息,但我尝试安装它,但大多数时候我最终都会遇到软件包安装错误,如下所示:
所以我希望有一种直接的方法来执行交叉验证(在 rkward 中),而不需要安装更多的包。R 中是否有可用于迭代创建模型和测试它们的函数或 API?
请注意,我是 R 的新手。对不起,如果这是一个明显的问题。
r - 使用 R 的运动中的简单正交结构——确定度量约束
我想根据 Tomasi 和 Kanade [1992]从运动程序构建一个简单的结构。这篇文章可以在下面找到:
这种方法看起来优雅而简单,但是,我在计算上述参考的公式 16 中概述的度量约束时遇到了麻烦。
我正在使用 R 并在下面概述了我的工作:
给定一组图像
我想跟踪三个柜门的角落和一张图片(图像上的黑点)。首先,我们将点读入矩阵 w 其中
最终,我们希望将 w 分解为描述 3 维点的旋转矩阵 R 和形状矩阵 S。我将尽可能多地省略细节,但可以从 Tomasi 和 Kanade [1992] 论文中收集到对数学的完整描述。
我在下面提供 w:
wm
然后根据等式 2创建注册测量矩阵
经过
我们可以通过使用奇异值分解将对角线“PxP”矩阵和“PxP”矩阵分解wm
为“2FxP”矩阵。o1
e
o2
但是,因为有噪音,我们只关注 的前 3 列o1
、 的前 3 个值e
和 by 的前 3 行o2
:
现在我们可以求解方程 (14) 中的rhat
和shat
经过
然而,这些结果并不是唯一的,我们仍然需要通过方程 (15) 求解 R 和 S
通过使用等式 (16) 的度量约束
现在我需要找到 Q。我相信有两种可能的方法,但不清楚如何使用。
方法 1涉及求解 B whereB=Q%*%solve(Q)
然后使用 Cholesky 分解来找到 Q。方法 1 似乎是文献中的常见选择,但是,关于如何实际求解线性系统的细节很少。很明显,B 是 6 个未知数的“3x3”对称矩阵。但是,考虑到度量约束(方程 16),我不知道如何在给定 3 个方程的情况下求解 6 个未知数。我忘记了对称矩阵的属性吗?
方法 II涉及使用非线性方法来估计 Q,并且在运动文献中的结构中不太常用。
任何人都可以就如何解决这个问题提供一些建议吗?提前致谢,如果我需要更清楚地说明我的问题,请告诉我。
neural-network - 神经网络回归:缩放输出还是使用线性层?
我目前正在尝试使用神经网络进行回归预测。
但是,我不知道处理此问题的最佳方法是什么,因为我读到有两种不同的方法可以使用 NN 进行回归预测。
1)一些网站/文章建议添加一个线性的最后一层。 http://deeplearning4j.org/linear-regression.html
我认为我的最后一层看起来像:
我还注意到,当我使用这个解决方案时,我通常会得到一个预测,它是批量预测的平均值。当我使用 tanh 或 sigmoid 作为倒数第二层时就是这种情况。
2) 其他一些网站/文章建议将输出缩放到 a[-1,1]
或[0,1]
范围,并使用 tanh 或 sigmoid 作为最后一层。
这两种解决方案可以接受吗?应该更喜欢哪一个?
谢谢,保罗