我有一组笛卡尔点(第1列是x值,第2列是y值),如下所示:
308 522
307 523
307 523
307 523
307 523
307 523
306 523
我如何获得积分的标准偏差?它将与平均值进行比较,这将是一条直线。这些点不是那条直线,因此标准偏差描述了线段直线的波浪形或“偏离基线”。
我真的很感激帮助。
答案 0 :(得分:3)
如果您确定xy
数据描述了一条直线,您可以执行以下操作。
找到最佳拟合直线等于以最小二乘意义求解超定线性系统Ax = b
,其中
xy = [
308 522
307 523
307 523
307 523
307 523
307 523
306 523];
x_vals = xy(:,1);
y_vals = xy(:,2);
A = [x_vals ones(size(x_vals))];
b = y_vals;
这可以在Matlab中完成,如下所示:
sol = A\b;
m = sol(1);
c = sol(2);
我们现在所做的是找到m
和c
的值,以便等式y = mx+c
描述的线最适合您给出的数据。这条最合适的生产线并不完美,因此它有错误。 y数据:
errs = (m*x_vals + c) - y_vals;
这些错误的标准偏差可以这样计算:
>> std(errs)
ans =
0.2440
如果要使用与线的垂直距离(欧几里德距离),则必须包含几何因子:
errs = (m*x_vals + c) - y;
errs_perpendicular = errs * cos(atan(m));
使用trig标识可以将其重新编写为
errs_perpendicular = errs * 1/sqrt(1+m*m);
当然,
>> std(errs_perpendicular)
ans =
0.2182
如果您不确定直线是否适合数据和/或您的xy
数据基本上描述了某个公共中心周围的点云,您可以执行以下操作。
找到质心(COM
):
COM = mean(xy);
所有点到COM
的距离:
dists = sqrt(sum(bsxfun(@minus, COM, xy).^2,2));
及其标准差:
>> std(dists)
ans =
0.5059
答案 1 :(得分:1)
一组二维值的平均值是另一个二维值,即它是一个点,而不是一条线。我相信这一点也被称为质心。
在这种情况下,标准偏差是什么并不完全清楚,但我认为根据与平均值的距离来定义它是有意义的。