我在多个向量+100上共享一组数据,每个向量包含14个值。我想知道哪一个是最线性的。这是一个例子:
我会说它的线性顺序:第3个图,然后是第1个,然后是第2个。
我的问题是,如果无论如何编程那个或数学过程可以帮助做到这一点?
感谢您的帮助!
答案 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
这些sse
和rmse
中Sum of squares due to error
和Root mean squarederror (standard error)
分别看起来很有趣,我认为其中任何一个都可以用来衡量&#34 ;线性"
答案 3 :(得分:2)
标准措施是评估R2。