Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 评定直线度_Excel_Vba - Fatal编程技术网

Excel 评定直线度

Excel 评定直线度,excel,vba,Excel,Vba,我有一个数据集,它定义了二维笛卡尔平面上的一组点。理论上,这些点应该形成一条线,但这条线可能是完全水平的,完全垂直的,以及介于两者之间的任何东西 我想设计一个算法来评估直线的“直线度” 例如,以下数据集将是完全直线的: 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 --------

我有一个数据集,它定义了二维笛卡尔平面上的一组点。理论上,这些点应该形成一条线,但这条线可能是完全水平的,完全垂直的,以及介于两者之间的任何东西

我想设计一个算法来评估直线的“直线度”

例如,以下数据集将是完全直线的:

 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

因为数据可以表示一条垂直的线,据我所知,通常的最小二乘回归线对这个数据集不起作用。垂直最小二乘回归线可能有效,但我几乎没有运气找到一个它的实现

我在Excel2010VBA中工作,但我应该能够翻译任何合理的算法

谢谢, 保罗


像RSQ和LinEst这样的东西不适用于此的原因是因为我需要一个包含垂直线的通用测量。当直线的斜率接近无穷大(垂直)时,即使直线完全笔直或接近笔直,其RSQ也会接近0


-PaulH

在移动最小二乘回归之前,你能试着抓住垂直线的情况吗?如果所有x值都相同,则直线是完全直线,无需计算r^2值。

是,使用普通最小二乘法。只需在工作表中使用斜率和截距函数。我希望有一种简单的方法从VBA代码隐藏中调用这些

这是VBA信息。对于R平方:

使用a。直线的“直线度”为R^2值

R^2值的值为0表示它是完全直的。增加值意味着回归误差增加,因此直线越来越不“直”

大致意思: 1.将所有坐标转换为绝对值 2.计算电流x/y的tan 3.计算当前x/y和下一个x/y之间x/y差值的tan
4.棕褐色的差异可能会导致跑步偏差

听起来像是在寻找R2


基本上,你取,除以平方和,然后从1中减去。

从技术上讲,直线总是“直的”:)我之前试过RSQ,认为(错误地)它不起作用。除了需要检查它是否除以0之外,它工作正常。好的。我现在知道为什么我认为RSQ不起作用了。RSQ为1.0表示直线完全笔直。但是,当一条直线接近无穷大的斜率(垂直)时,它的RSQ下降到0.0。所以,RSQ不适用于垂直线。(可能是因为它使用垂直最小二乘回归)。