2010-07-13 64 views
3

我有一個數據集,它定義了二維笛卡爾平面上的一組點。從理論上講,這些點應該形成一條線,但該線可能是完全水平的,完全垂直的,以及其間的任何東西。評估直線的直線度

我想設計一個算法來評估該線的「直線度」。

例如,下面的數據集將是完美的直線:

Y = 2/3x + 4 
X | Y 
--------- 
-3 | 2 
0 | 4 
3 | 6 

Y = 4 
X | Y 
--------- 
1 | 4 
2 | 4 
3 | 4 

X = -1 
X | Y 
--------- 
-1 | 7 
-1 | 8 
-1 | 9 

雖然這一個不會:

X | Y 
--------- 
-3 | 2 
0 | 5 
3 | 6 

,我認爲這是可行的,以儘量減少的平方之和每個點到一條線的距離(通常稱爲迴歸線),然後確定每個點與線的平均距離。因此,一條完美的直線的平均距離爲0.

由於數據可以表示一條垂直線,據我所知,通常的最小二乘迴歸線不適用於該數據集。垂直最小二乘迴歸線可能有效,但我找到一個實施一點點運氣。

我在Excel 2010 VBA中工作,但我應該能夠翻譯任何合理的算法。

感謝, PaulH


之類的東西RSQ和LINEST不會爲這個工作的原因是因爲我需要一個通用的測量,包括垂直線。當一條線的斜率接近無窮大(垂直)時,即使該線完全直線或幾乎如此,它們的RSQ也接近0。

-PaulH

+0

減去以及在技術上,該線將永遠是「直」 :) – kemiller2002 2010-07-13 17:15:42

回答

1

你能試着抓住移動最小二乘迴歸前的垂直線的情況?如果所有x值都相同,那麼該線是完全直的,不需要計算r^2值。

2

使用Linear Regression。該線的「直線性」是R^2值。

R^2值的值爲0意味着它是完全直的。增加的值意味着在迴歸增加誤差,因此,線越來越少「直」

+0

我試圖RSQ早些時候,並認爲(誤),它沒有工作。除了需要檢查它是否除以0,它工作正常。 – PaulH 2010-07-13 18:26:35

+0

好的。我現在知道爲什麼我認爲RSQ不起作用。 RSQ爲1.0表示線條非常直。但是,當一條線接近無窮大斜率(垂直)時,其RSQ降至0.0。所以,RSQ不適用於垂直線。 (可能是因爲它使用垂直最小二乘迴歸)。 – PaulH 2010-07-14 14:34:11

0

粗糙想法: 1.所有的座標轉換爲絕對值 2.計算的當前黃褐色的x/y 3.計算在當前的x/y和下一個X/Y之間的x/y差的黃褐色 4.棕褐色差可以給跑偏