PHP: диапазон цен / средний расчет на основе исторических данных

Я создаю небольшое приложение, которое анализирует на eBay исторические цены проданных товаров
и для некоторых ключевых слов / элементов диапазон очень широк, потому что поиск слишком широкий или просто неправильный, зараженный элементом, не соответствующим образом связанным

например.

поиск цен на iphone результаты включают либо телефон, но
также зарядное устройство и аксессуары / несвязанные предметы, которые фальсифицируют данные о ценах …
так что у меня есть диапазон, который идет от $ 5 для зарядного устройства и 500 $ для
iphone

Итак, учитывая, что я постараюсь улучшить поиск на моей стороне, мне интересно, есть ли математические вычисления, чтобы исключить выбросы

скажи, что у меня есть

$1200
$549
$399
$519
$9
$599
$549
$9
$499
$399
$519
$99
$5
$5

как получить диапазон цен 300-300 долларов вместо 10-800 долларов или около того …

ее ebelow текущий php я использую … не уверен, если это лучший

    function remove_outliers($dataset, $magnitude = 1)
{
$count     = count($dataset);
$mean      = array_sum($dataset) / $count;                                                                                             // Calculate the mean
$deviation = sqrt(array_sum(array_map("sd_square", $dataset, array_fill(0, $count, $mean))) / $count) * $magnitude;                    // Calculate standard deviation and times by magnitude
return array_filter($dataset, function ($x) use ($mean, $deviation) {return ($x <= $mean + $deviation && $x >= $mean - $deviation);}); // Return filtered array of values that lie within $mean +- $deviation.
}

function sd_square($x, $mean)
{
return pow($x - $mean, 2);
}

function calculate_median($arr)
{
sort($arr);
$count     = count($arr);
$middleval = floor(($count - 1) / 2);
if ($count % 2) {
$median = $arr[$middleval];
} else {
$low    = $arr[$middleval];
$high   = $arr[$middleval + 1];
$median = (($low + $high) / 2);
}
return $median;
}

$prices = remove_outliers($prices); //$prices is the array with all the prices stored
$trend  = calculate_median($prices);
$trend  = round(($trend));
$min    = round(min($prices));
$max    = round(max($prices));

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]