Устранение выбросов путем стандартного отклонения в SQL Server - PullRequest
3 голосов
/ 20 июня 2010

Я пытаюсь устранить выбросы в SQL Server 2008 на стандартное отклонение.Я хотел бы только записи, которые содержат значение в определенном столбце в пределах +/- 1 стандартного отклонения от среднего значения этого столбца.

Как мне это сделать?

Ответы [ 3 ]

16 голосов
/ 20 июня 2010

Если вы предполагаете распределение событий по кривой колокольчика, то только 68% значений будут в пределах 1 стандартного отклонения от среднего значения (95% охватываются 2 стандартными отклонениями).переменная со стандартным отклонением вашего диапазона (полученная с помощью функции stdev / stdevp sql) и затем выберите значения, которые находятся в пределах соответствующего числа стандартных отклонений.

4 голосов
/ 20 июня 2010

В SQL есть агрегатная функция STDEV, которая даст вам стандартное отклонение.Это сложная часть, тогда просто найдите диапазон между средним значением и +/- одним значением STDEV.

Это один из способов сделать это -

    create table #test
(
   testNumber int
   )

   INSERT INTO #test (testNumber)
   SELECT  2
   UNION ALL 
   SELECT 4
   UNION ALL 
   SELECT 4
   UNION ALL 
   SELECT 4
   UNION ALL 
   SELECT 5
   UNION ALL 
   SELECT 5
   UNION ALL 
   SELECT 7
   UNION ALL 
   SELECT 9

   SELECT testNumber FROM #test t
   JOIN (
    SELECT STDEV (testnumber) as [STDEV], AVG(testnumber) as mean
    FROM #test
        ) X on t.testNumber >= X.mean - X.STDEV AND t.testNumber <= X.mean + X.STDEV
0 голосов
/ 20 июня 2010

Я был бы осторожен и думал о том, что ты делаешь. Отбрасывание выбросов может означать, что вы отбрасываете информацию, которая может не вписываться в заранее продуманное мировоззрение, что может быть совершенно неверным. Эти выбросы могут быть «черными лебедями», которые являются редкими, хотя и не такими редкими, как вы думаете, и весьма значительными.

Вы не даете контекста или объяснения того, что делаете. Легко привести функцию или технику, которая будет отвечать потребностям вашего конкретного случая, но я счел целесообразным опубликовать предупреждение до тех пор, пока не будет предоставлена ​​дополнительная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...