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

时间:2012-10-11 08:52:59

标签: r equation

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

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

我觉得拟合线性或多项式模型也行不通,因为公式似乎与那些模型通常使用的公式不同(即这个模型似乎需要划分,权力等)。例如,Fitting polynomial model to data in R中的方法给出了非常差的近似值。

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

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

2 个答案:

答案 0 :(得分:3)

多元线性回归示例

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

摘要(适合)#show results

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

答案 1 :(得分:3)

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

但正如罗兰所说,“最适合一般”没什么意义,因为任何功能都可以表达为泰勒系列。由于一组数据预计会在其值中产生噪声,因此曲线拟合的一个重要部分是确定什么是噪声,什么不是噪声。
如果你随意选择一些拟合函数,我可以保证的一点是外推点会匆忙发散。