相关疑难解决方法(0)

查找匹配数据的曲线

我正在寻找一个非线性曲线拟合程序(可能最有可能在R或Python中找到,但我对其他语言开放),这将采用x,y数据并拟合曲线.

我应该能够将我想要的表达式类型指定为字符串.

例子:

"A+B*x+C*x*x"
"(A+B*x+C*x*x)/(D*x+E*x*x)"
"sin(A+B*x)*exp(C+D*x)+E+F*x"
Run Code Online (Sandbox Code Playgroud)

我得到的是至少常数(A,B,C等)的值,并希望有关比赛适合度的统计数据.

有商业程序可以做到这一点,但我希望能找到适合现在语言库中所需表达式的常用内容.我怀疑SciPy的优化能力可能会做到这一点,但我看不出它让我定义了一个等式.同样,我似乎无法在R中找到我想要的东西.

我正在寻找那里,还是我需要自己动手?我讨厌这样做,如果它在那里,我只是找不到它.


编辑:我想这样做是为了更多地控制过程,而不是从LAB Fit获得.LAB Fit UI非常糟糕.我也希望能够将范围分成多个部分,并且不同的曲线代表范围的不同部分.最后,结果必须能够(速度)用线性插值击败LUT,或者我不感兴趣.

在我当前的一组问题中,我有trig函数或exp(),我需要实时执行它们每秒352,800次(并且只使用一小部分CPU).因此,我绘制曲线并使用数据来驱动曲线拟合器以获得更便宜的近似值.在过去,LUT几乎总是解决方案,但现在跳过内存查找并进行近似有时会更快.

r octave curve-fitting nonlinear-optimization

10
推荐指数
2
解决办法
6322
查看次数

逐行回归,在断点处连接一条直线和一条水平线

我想用一个断点进行分段线性回归,其中回归线的后半部分有slope = 0.有一些如何进行分段线性回归的例子,例如这里.我遇到的问题是我不清楚如何将模型的一半的斜率修正为0.

我试过了

lhs <- function(x) ifelse(x < k, k-x, 0)
rhs <- function(x) ifelse(x < k, 0, x-k)
fit <- lm(y ~ lhs(x) + rhs(x)) 
Run Code Online (Sandbox Code Playgroud)

k断点在哪里,但右边的段不是平面/水平段.

我想将第二段的斜率约束为0.我试过:

fit <- lm(y ~ x * (x < k) + x * (x > k))
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何让下半场得到零斜率.

任何帮助是极大的赞赏.


我自己的解决方案

由于下面的评论,我有一个解决方案.这是我用来优化然后绘制拟合的代码:

x <- c(1, 2, 3, 1, 2, 1, 6, 1, 2, 3, 2, 1, 4, 3, 1)
y <- c(0.041754212, 0.083491254, 0.193129615, 0.104249201, 0.17280516, 
0.154342335, 0.303370501, 0.025503008, …
Run Code Online (Sandbox Code Playgroud)

regression r linear-regression piecewise lm

5
推荐指数
2
解决办法
1299
查看次数