【发布时间】:2012-10-01 21:25:18
【问题描述】:
我不确定 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))
哪一种似乎是近似的——但我不禁想到可能存在更优雅的smth :-)
我觉得拟合线性或多项式模型也行不通,因为公式似乎与那些模型通常使用的不同(即,这个公式似乎需要除法、幂等)。例如,Fitting polynomial model to data in R 中的方法给出了非常糟糕的近似值。
我记得很久以前就有语言(Matlab 可能是其中之一?)可以做这种事情。 R也可以这样做,还是我只是在错误的地方?
(背景信息:基本上,我们需要做的是根据第一列中的数字找到一个确定第二列中数字的方程式;但我们自己决定数字。我们知道我们想要曲线看起来像,但如果我们得到更好的拟合,我们可以将这些数字调整为一个等式。它是关于产品的定价(比当前昂贵的定性数据分析软件更便宜的替代品);您购买的“项目信用”越多,它应该变得越便宜。与其强迫人们购买给定的数字(即 5 或 10 或 25),不如有一个公式,这样人们就可以准确地购买他们需要的东西——但这当然需要一个公式。我们对一些我们认为合适的价格有一个想法,但现在我们需要将其转化为一个等式。
【问题讨论】:
-
我相信您正试图以错误的方式进行操作。通常,您会从科学(化学、物理……)中寻找模型,然后尝试拟合它。您必须选择要尝试的模型子集,因为可能的模型数不胜数。
-
感谢您的反应@Roland!我不是在做科学(也就是说,不是这一刻:-)) - 我只需要一个方程来更“简洁”地描述数据集,而不是列出所有数据点。我会在问题中解释更多,也许有帮助!