0

さて、シナリオは次のとおりです。

「一週間の食費はいくらですか?」と質問します。

指定された数の貢献の後、100 としましょう。結果をスキャンして、明らかな偽の結果を見つけたいと思います。たとえば、平均が 80 ポンドであるとしますが、一部の気まぐれな人が値 1 を投入し、他の誰かが 10,000 を投入したとします。

要件は、入力時にデータを検証するのではなく、データを動的に分析してデータの有効範囲を決定し、データベースの統計更新中に結果から外れ値をトリミングすることです。

Rails 3.2、ActiveRecord、および Postgresql を使用してこれを達成するための最良の方法は何ですか?

4

2 に答える 2

2

誤った結果を排除する良い方法は、標準偏差を計算することです。posttgres を使用してこれを行うことができます。

SELECT stddev(amount) FROM answers

次に、回答がこれに該当するかどうかを確認し、必要に応じて削除できます。

これにより、常にいくつかの回答が削除されることに注意してください。

于 2012-09-18T11:59:20.370 に答える
1

つまり、平均が 80 ポンドであるとしますが、一部の気まぐれな人が 1 の値を投入し、別の誰かが 10,000 を投入したとします。

誰かが 117 ポンドを投入したとします。それは外れ値ですか?127ポンドはどうですか?137ポンド?

外れ値の特定は統計的な仕事であり、実際にはデータベースの仕事ではありません。データベースがすべての関連データを返す場合にのみ、ジョブをうまく実行できます。Ruby で統計ソフトウェアを作成している場合、外れ値とそうでない値を判断するのは Ruby の仕事 (Ruby プログラマーの仕事) だと思います。

どの値が外れ値であるかを判断したら、実行時の除外によって、または のような範囲でクエリを再度実行することによって、それらを計算から除外するのは簡単amt_spent >= 53 and amt_spent <= 117です。しかし、外れ値の影響をあまり受けない、より堅牢な統計手法を検討してください。

これらの行をデータベースから削除することもできますが、誤解を招く可能性があります。私は決してそれをしません、私自身。

外れ値の検出

于 2012-09-18T13:28:29.783 に答える