Удалить "неправильные номера" - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь создать приложение для Windows Phone 7 с vb.net

И мне нужно очистить список:

932 100 592 21 924 641 200 1230 5200 842 951 658

Я хотел бы удалить «неправильные числа», потому что я хочу получить среднее значение. В этом случае неправильные цифры: слишком низко: 100, 21, 200 слишком высоко: 5200

Я просто придумаю способ сделать это

For each items in listbox 
 calc the avarage
Next

for each item in listbox
 if item < avarage/2 then
 remove item
 end if
 if item > avarage*2 then
 remove item
 end if
next

for each item in listbox
calc the avarage
next

1 Ответ

2 голосов
/ 12 марта 2012

Вот как найти выбросы в серии значений:

  1. Вычислить среднее значение всех точек: m

  2. Вычислите стандартное отклонение: s

  3. Для каждой точки со значением v, если abs(v - m) > s, то v является выбросом.

Вот псевдокод для этого:

m = sum(v0, v1, ...) / N
diff = sum((v0-m)^2, (v1-m)^2, ...) / N
s = sqrt(diff)

for each value v
    if abs(v - m) > s then
        remove v
    end if
end for

Теперь у вас есть M значений, и вы можете вычислить их среднее значение:

average = sum(V0, V1, ...) / M
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...