确定一组数据是来自线性函数还是对数函数?

时间:2011-08-24 19:17:29

标签: algorithm math statistics data-analysis

我有一组数据点,如果数据代表线性函数或对数函数,我很好奇。

数据集是二维的。

假设一组理想的数据点遵循函数f(x)= x。如果我绘制了数据点,我就能说它是线性的。

同样,如果数据点遵循函数f(x)= log(x),我将能够直观地告诉它是对数的。

另一方面,让程序确定一组数据是线性的还是对数的是非常重要的。我该如何处理?

1 个答案:

答案 0 :(得分:9)

一种选择是对数据集执行linear regression以获得最佳拟合线。如果数据是线性的,那么你会得到很好的拟合,mean squared error应该很低。否则,你会得到一个合适的错误和合理的错误。

或者,您可以考虑通过转换每个点来转换数据集(x 0 ,x 1 ,...,x n ,y)到(x 0 ,x 1 ,...,x n ,e y )。如果数据是线性的,那么现在它将是指数级的,如果数据是对数的,现在它将是线性的。现在运行线性回归并获得均方误差将导致对数数据的误差较小,线性数据的误差非常大,因为指数函数的爆炸速度非常快。

要实际实施回归,一种选择是使用least-squares regression。除了模型之外,这还可以为您提供相关系数,这也可以用来区分两个数据集。

因为您已经在Java中询问了如何执行此操作,因此快速Google搜索会出现 this Java code 进行线性回归。但是,您可能更适合使用Matlab这样的语言,该语言专门针对这些类型的查询进行了优化。例如,在Matlab中,您可以通过编写

在一行代码中执行此回归
linearFunction = inputs / outputs

希望这有帮助!