4

我不确定 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))

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

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

y.predicted = 12.71 + ( 95 / (( (1 + df$x) ^ .5 ) / 1.3))

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

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

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

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

4

2 回答 2

4

多元线性回归示例

适合 <- lm(y ~ x1 + x2 + x3, data=mydata)

summary(fit) # 显示结果

上面的代码应该为您提供最适合使用 OLS 的数据的行。

于 2012-10-11T09:06:02.787 回答
4

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

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

于 2012-10-11T11:21:50.060 回答