平面上のデータから異常値を取り除く方法

このQ&Aのポイント
  • 平面上のデータから異常値を取り除く方法をご紹介します。
  • データのプロット結果から異常値を特定し、取り除く方法について考えます。
  • 最小二乗法やハフ変換を利用することも検討されますが、それぞれには課題があります。
回答を見る
  • ベストアンサー

平面上のデータから異常値を取り除きたい

次のようなxy座標データがあります これを平面上にプロットして、人間が眺めると、6番目から12番目のデータが異常と判断できます コンピュータでこの異常値を取り除くにはどうすればよいでしょうか 例えば、最小二乗法で楕円近似 -> うまくいかない ハフ変換で楕円近似 -> メモリと時間が大量に必要 (565,444) (583,452) (597,464) (605,484) (611,504) (593,520) (587,539) (574,553) (554,564) (536,553) (524,540) (509,530) (497,514) (498,493) (503,472) (513,456) (529,447) (548,442)

質問者が選んだベストアンサー

  • ベストアンサー
noname#221368
noname#221368
回答No.2

 いつも使える手ではありませんが、やってみました。  まずデータの様子を見るために、データ系列をExcelでプロットすると、添付図の図-1の青線のようになります。黒点線はExcelのオートシェイプ(楕円)を使って、手動でフィッチングしたものです。異常値は、ランダム誤差のように見えました。  異常値がランダム誤差なら、ランダム誤差の特性として、積分すればほぼ0になる、という性質があります。見やすい形で積分するために、データ系列を極座標で表す事を考えます。楕円の中心は、その重心に一致するので、データ系列の重心位置を極座標の原点とします。多角形の面積Aと重心座標(x0,y0)は、次式で計算できます。   A=1/2×Σ(x[i]・y[i+1]-x[i+1]・y[i])             (1)   x0=1/6×1/A×Σ(x[i]・y[i+1]-x[i+1]・y[i])(x[i+1]+x[i])   (2)   y0=1/6×1/A×Σ(x[i]・y[i+1]-x[i+1]・y[i])(y[i+1]+y[i])   (3)  (1)~(3)において、Σはi=1,2,・・・,nについて和を取り、x[i],y[i]は、多角形頂点を左回りに順序付けた時の、頂点座標です(データ系列はそうなっています)。i=1が始点, i=nがデータ系列の終点,i=n+1は始点に一致させます。  (1)~(3)は折れ線近似での結果ですが、実用的にはけっこうそれで十分です。さらに(1)~(3)は本質的に積分計算なので、ランダム誤差の影響をほとんど受けない重心位置を計算できるだろう、と予想しました。   x0=551.8036,y0=498.4852(A=9572.5,Excelです)   (4) となりました。  (4)を中心に、図-1のようにr^2とθを計算し、θの昇順に並べ、台形公式で数値積分します(Excelです)。  f(θ)=∫r^2・dθをグラフにするとすぐわかりますが、f(θ)はほとんど直線に載ります。Excelで線形近似を選び、近似式を表示すると、   g(θ)=3138.5θ+9538.6   (5) になります。(5)のg(θ)とf(θ)との相関係数(R二乗値)は、0.9996でほとんど1.0です。(5)をθで微分したものをr^2(θ)とみなし、ルートをとってr(θ)を計算するのは容易です。r(θ)=√(3138.5)=56.02232=半径一定(円)を、(4)を中心に元データと重ねたものが、添付図の図-2になります。  今回は簡単にやったので、円になっちゃいましたが、f(θ)の近似式を、楕円の理論式から導かれる式にとりかえ、最小二乗法を実行するのは、可能と思います。また以上の手順は、プログラムに載ると思います。

a_green_wind
質問者

補足

詳しく説明していただき、ありがとうございます。 最小二乗法で楕円近似しても、説明していただいた結果と同じようになってしまいます。 説明していただいた方法を参考にして、どうすればよいか考えたいと思います。

その他の回答 (1)

  • f272
  • ベストアンサー率46% (8024/17150)
回答No.1

> これを平面上にプロットして、人間が眺めると、6番目から12番目のデータが異常と判断できます と書いているが,どうして異常と判断できたのか?

a_green_wind
質問者

補足

> と書いているが,どうして異常と判断できたのか?  まさにそれが本質です。  正常(と思われる)データから最小二乗法で楕円近似すれば、良好な近似曲線が得られます。  従って、この近似曲線から外れたデータが異常値と判断できるわけですが、この近似曲線を得るためには異常値を取り除く必要があるので、堂々巡りになってしまいます。  また、近似曲線から外れたデータを異常値として取り除けば、残りのデータは近似曲線で良好に近似できるのは当然のことであり、その近似曲線が「正しく」近似しているかどうかは、不明です。  どうして人間は異常と判断できるのでしょうか。

関連するQ&A

  • 平面の計算方法

    3つ以上の座標点(n個)から最小二乗法を用いて,平面の中心座標,XY・XZ・YZ方向の傾きなどを計算したいのですが,どのように計算したらよろしいでしょうか?

  • 最小二乗法 楕円放物面

    数千のxyz座標データを、最小二乗法を用いて、ax^2+by^2+2cz=1の楕円放物面に近似したいのですが、どのようにしたらいいですか? ご存知の方教えてください。 宜しくお願いします。

  • 最小二乗法での線形近似

    excelの最小二乗法による線形近似でわからないことがあります. たとえば,xy平面でデータが散布している状況で・・・ データがほぼ垂直(y軸に平行)に分布している場合,最小二乗法による線形近似がうまくいきません. ばらつきは少ないはずだから,決定係数も高くなると思うのですが,垂直線ではなく斜めの直線が引かれてしまい,決定係数も低くなってしまいます. これは,垂直線だと傾きaの値が∞に大きくなり,データの大きさ(?)上,近似不可能ということなのでしょうか?

  • XY平面上の直線からのデータのばらつき具合を調べる方法

    XY平面上の直線から(たとえばY=X)、プロットしたデータ群が、どの程度ばらついて分布するかを調べたいです。 どのような方法が良いのでしょうか? よろしくお願いします。

  • 円又は楕円を透視図または平行投影した場合の、投影平面上の楕円の公式の方

    円又は楕円を透視図または平行投影した場合の、投影平面上の楕円の公式の方程式またはそれを解説した書物を探しています。 コンピューターで3Dを作成する際、点の座標変換は分かりますが、平面上で元の円又は楕円がどのような式に変換されるのか分かりません。

  • 楕円の近似

    XY平面上の点が5点以上与えられたとき、それらの点を効率よく通る楕円の定数(中心座標X,Y、長径、短径、長径の水平方向からの傾き)5つを求める方法がわかりません。 直線では最小二乗法が有名ですが、その方法はわかっております。 楕円の場合、中心からの距離の自乗の誤差の和を最小にするように決めるのかなぁ、と思ってやってみましたが、単純な2次式になってくれないので、つまりました。 何か、ヒントでも教えてください。 よろしくお願いいたします。

  • 最小二乗平面

    ある複数の空間座標(x1,y1,z1)~(xn,yn,zn)(nは3以上)から、平面近似式である最小二乗平面の方程式を求める関数を作ろうと考えています。 平面方程式はz=ax+by+c(a,b,cが定数)であらわされ、引数を座標と座標個数n、戻り値をa,b,cにします。 ここ(http://oshiete1.goo.ne.jp/qa2802443.html)を参考に 最小二乗平面の連立方程式を解くコードを書いたのですが、 どうも答えが合いません。どなたかご教授願えないでしょうか? 開発環境はC++Builder2007です。 ↓の数式をコードにしましたが、コードが間違っているのか、 数式自体がダメなのかさっぱりわかりません。 //与えられるn個の3次元座標(xi,yi,zi)から平面方程式を求める //平面方程式:z = ax + by + c //最小二乗平面を求める連立方程式は下記のようになる。 // aΣxi^2 + bΣxiyi + cΣxi = Σxizi // aΣxiyi + bΣyi^2 + cΣyi = Σyizi // aΣxi + bΣyi + cn = Σzi //これを行列で解く // |Σxi^2 Σxiyi Σxi | |a| = |Σxizi| // |Σxiyi Σyi^2 Σyi | |b| = |Σyizi| // |Σxi Σyi n | |c| = |Σzi | //ここで // |Σxi^2 Σxiyi Σxi | // A = |Σxiyi Σyi^2 Σyi | // |Σxi Σyi n | // // |Σxizi| // B = |Σyizi| // |Σzi | // // |a| // C = |b| // |c| // //とすると // // C = B・A^-1 // //で求めることができる

  • エクセル 複数系列 近似式

    エクセルで複数の系列を最小二乗法を使って近似式を作成する方法を教えてください。 y座標  0,1,2,3,4 x座標 ①1,2,3,4,5     ②2,4,5,6,7     ③1,2,4,6,8 このようになっている場合、①、②、③の座標から近似式までの距離の差の二乗の和が最小になるような近似式を作成したいと考えています。

  • Mathematicaで近似直線を描く

    実験データをプロットするまではよいのですが、 近似直線の引き方がわかりません。 近似『曲線』なら引けることがわかったのですが、 最小二乗法を用いた直線から傾きを求めたいのです。 どなたかご存知のかた、教えていただけませんでしょうか? 宜しくお願いします。 来週レポート提出なのです。(泣

  • XYZ平面の近似式についてご教示ください

    すみませんがお助けください。 任意の3次元座標(Xi,Yi,Zi)がn個あるとします。 Xi>0,Yi>0,Ziは正負混合です。 上記n個の座標から近似平面式Z=aX+bY+cを構成する乗数a,b,cを求めたいのですが下記理由により最小二乗法は使えません。 最小二乗法の場合は D=Σ(Zi-aXi-bYi-c)^2が最小になるa,b,cを求めることになりますが、今回求めたいa,b,cは、 各座標のdi=(Zi-aXi-bYi-c)、すなわちn個のdiについて『diの最大値-diの最小値』が最も小さくなる場合のa,b,cです。 なお『diの最大値-diの最小値』についての補足ですが diの最大値=5,diの最小値=2の場合 『diの最大値-diの最小値』は5-2=3となり、 diの最大値=5,diの最小値=-2の場合 『diの最大値-diの最小値』は5-(-2)=7となります お手数かけて恐縮ですが宜しくお願い申し上げます。