1

次のようなデカルト ポイントの配列があります (列 1 は x 値、列 2 は y 値)。

308 522
307 523
307 523
307 523
307 523
307 523
306 523

ポイントの標準偏差を取得するにはどうすればよいですか? それは、直線である平均と比較されます。ポイントはその直線ではないため、標準偏差は、線分が直線からどれだけ波打っているか、または「オフベース」であるかを表します。

本当に助かります。

4

2 に答える 2

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));

トリガー ID を使用して、これを作り直すことができます

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
于 2012-10-05T05:37:42.163 に答える
1

2次元値のセットの平均は、別の2次元値です。つまり、線ではなく点です。この点は重心としても知られていると思います。

この場合の標準偏差は完全には明らかではありませんが、平均からの距離で定義するのは理にかなっていると思います。

于 2012-10-04T21:41:01.987 に答える