在 R 中,如何获得一组数据的最佳拟合方程?

Mat*_*ion 5 equation r

我不确定 R 是否可以做到这一点(我认为它可以,但也许这只是因为我倾向于假设 R 可以做任何事情:-))。我需要的是找到描述数据集的最佳拟合方程。

例如,如果您有以下几点:

df = data.frame(x = c(1, 5, 10, 25, 50, 100), y = c(100, 75, 50, 40, 30, 25))

如何得到最佳拟合方程?我知道你可以通过以下方式获得最佳拟合曲线:

plot(loess(df$y ~ df$x))
Run Code Online (Sandbox Code Playgroud)

但据我了解,您无法提取方程,请参阅Loess Fit and Resulting Equation

当我尝试自己构建它时(注意,我不是数学家,所以这可能不是理想的方法:-)),我最终得到如下结果:

y.predicted = 12.71 + ( 95 / (( (1 + df$x) ^ .5 ) / 1.3))
Run Code Online (Sandbox Code Playgroud)

哪种似乎近似它 - 但我不禁认为可能存在更优雅的东西:-)

我有一种感觉,拟合线性或多项式模型也行不通,因为该公式似乎与这些模型通常使用的不同(即这个似乎需要除法、幂等)。例如,将多项式模型拟合到 R 中的数据中的方法给出了非常糟糕的近似值。

我记得很久以前就存在做这种事情的语言(Matlab 可能是其中之一?)。R 也可以这样做,还是我只是在错误的地方?

(背景信息:基本上,我们需要做的是找到一个方程,根据第一列中的数字确定第二列中的数字;但我们自己决定数字。我们知道我们希望曲线看起来如何喜欢,但如果我们得到更好的拟合,我们可以将这些数字调整为方程式。这是关于产品的定价(当前昂贵的定性数据分析软件的更便宜的替代品);您购买的“项目积分”越多,就越便宜它应该成为。与其强迫人们购买给定的数量(即 5 或 10 或 25),不如有一个公式,以便人们可以准确地购买他们需要的东西 - 但这当然需要一个公式。我们有一个对于一些我们认为可以的价格的想法,但现在我们需要将其转化为一个方程式。

Car*_*oft 4

我常用的插件: http: //creativemachines.cornell.edu/eureqa

但正如罗兰所说,“一般情况下的最佳拟合”没有什么意义,因为任何函数都可以表示为泰勒级数。由于一组数据预计在其值中存在噪声(即误差),因此曲线拟合的很大一部分是确定什么是噪声,什么不是。
如果你任意选择一些拟合函数,我几乎可以保证的一件事是外推点会很快发散。