在Matlab中检查哪个向量更加线性

时间:2014-05-06 12:18:08

标签: matlab

我在多个向量+100上共享一组数据,每个向量包含14个值。我想知道哪一个是最线性的。这是一个例子:

first second third
我会说它的线性顺序:第3个图,然后是第1个,然后是第2个。

我的问题是,如果无论如何编程那个或数学过程可以帮助做到这一点?

感谢您的帮助!

4 个答案:

答案 0 :(得分:5)

相关性的绝对性应该给你一个很好的衡量标准:

abs(corr(your_vector(:), (1:numel(your_vector))'))

此值越接近1,您的数据越接近直线,越接近0,您的数据就越接近直线

正如其他人所提到的,R 2 是最好的衡量标准。所以这将是

corr(your_vector(:), (1:numel(your_vector))')^2

但使用abs可以获得相同的排名。

答案 1 :(得分:4)

如果曲线是直线,则连续点之间的差异是常数。曲线越曲线,这些差异越接近相同的常数。一种简单的方法是计算曲线diff并采用标准差:

rank = std(diff(curve));

diff(curve)将计算曲线上连续点之间的差异,std(...)将衡量它们的相似程度。

然后,您获取每条曲线的等级,然后对它们进行排序。

答案 2 :(得分:2)

使用fit Linear polynomial curve选项'poly1'来查看此功能的合适程度 -

[curve,goodness] = fit(x, y,  'poly1')

它使用goodness变量生成一堆值。对于样本,它产生了类似的东西 -

善良=

       sse: 0.1007
   rsquare: 0.9819
       dfe: 12
adjrsquare: 0.9804
      rmse: 0.0916

这些ssermseSum of squares due to errorRoot mean squarederror (standard error)分别看起来很有趣,我认为其中任何一个都可以用来衡量&#34 ;线性"

答案 3 :(得分:2)

标准措施是评估R2