• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外れ値の求め方は?)

外れ値の求め方と検出方法

このQ&Aのポイント
  • 外れ値の求め方について詳しく説明しています。
  • 外れ値を検出する方法や、質問者が間違っている点について解説しています。
  • 正しい外れ値の検出方法について説明しています。

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

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8536/18275)
回答No.2

そのやり方は検出力が弱いので推奨されない。 もっと良いやり方はいくつかあるが,簡単なのは箱ひげ図を使うやり方です。 まず,データの第1四分位点Q1,第3四分位点Q3を求めてIQR=Q3-Q1を求める。 次にQ1-3*IQRからQ1+3*IQRの範囲から外れているものを極端な外れ値とする。 また,極端な外れ値ではなくてもQ1-1.5*IQRからQ1+1.5*IQRの範囲から外れているものを軽度な外れ値とする。 http://ja.wikipedia.org/wiki/%E7%AE%B1%E3%81%B2%E3%81%92%E5%9B%B3

lain_003
質問者

お礼

補足の補足です。 先ほどは失礼しました。 ソートしないと駄目なんですね。 Q1 = 4 Q3 = 10 IRQ = 6 よって範囲は、Q3+3*IQRを使うと、 -14 <= x <= 28 となりました。 が、これでは正常なデータである29がはじかれてしまっています。 これはデータ数が足りないのでしょうか?

lain_003
質問者

補足

お返事ありがとうございます。 今回のデータである [29, 6, 1, 5, 4, 10, 1, 10, 10000] の場合ですと、 Q1 = 1 Q3 = 1 IQR = 0 よって範囲は 1 <= x <= 1 となり、1以外全て外れ値になってしまったのですが、 私はどこの計算式を間違えていますか?

その他の回答 (4)

  • f272
  • ベストアンサー率46% (8536/18275)
回答No.5

#2です。 [29, 6, 1, 5, 4, 10, 1, 10, 10000] をみて10000は明らかに外れ値だと判断するだろうが,29も外れ値だと判断する人がほとんどだと思う。 どうして正常なデータであると判断できたのでしょう? > これはデータ数が足りないのでしょうか? 確かに,もっとデータが多ければ29も正常と判断される可能性はあるでしょう。

lain_003
質問者

補足

これはサンプルデータではありますが、アクセス数のランキングなので普段は1とか5等でも、ある日ブログ等に取り上げられて100ぐらいならありえるという判断です。 ただBOTはそれを超えて1000,10000等、あり得ないほどアクセスするので、なんとかそれを数学で弾けないかと考えた次第でした。 しかし根本的な解決にはなりませんし、数学で弾くのは難しそうですよね…。 システム側で色々考えてみようと思いました。 ご回答ありがとうございました。

noname#227064
noname#227064
回答No.4

> このプログラムは、 > 平均値±(3×標準偏差) > の範囲外(以上ではない)だと、外れ値だと検出します。 標準偏差が不偏分散の平方根でデータの数がn個では(n-1)/√nより大きな値は絶対に出ませんので > このプログラムをテストするために、 > [29,6,1,5,4,10,1,10,10000] > という9つの値を渡しました ときに、10000を外れ値として検出することは不可能です。 (n=11以上でないと3以上にならない) なので、適当な母集団の分布を仮定してシミュレーションにより棄却域を調べてください。 もっともこちらの方法よりも、外れ値の影響を受けにくい#2さんの方法をお奨めします。

  • f272
  • ベストアンサー率46% (8536/18275)
回答No.3

#2です。 わかると思うけど,当然Q1-3*IQRからQ1+3*IQRはQ1-3*IQRからQ3+3*IQRの間違いです。1.5の方も同様。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>平均値±(3×標準偏差) 3 を、はずれ値を検出するように変更すればいいのではないでしょうか。 ものすごく恣意的だと思いますが…。

関連するQ&A

専門家に質問してみよう