2010-07-20 3 views
0

Я пытаюсь вычислить значение $ x в числовой ряд на основе массива чисел (в виде $ numbers).PHP Оценка функции

Ex:

$numbers = array(1=>1000,2=>600,3=>500,4=>450,5=>425,6=>405,7=>400,8=>396); 
function estimateNumber($x) { 
    // function to estimate number $x in $numbers data set 
} 

Что бы наиболее статистически точный метод?

+0

Под «оценкой» вы имеете в виду предсказание следующего числа в серии? Если вы не можете сделать некоторые заявления о том, какие серии будут переданы в вашу функцию, это не так много, что можно сделать. Следующее число может быть 50000, или это может быть 393, и любой прогноз может быть оправдан. –

+0

Следующее число не может быть больше или равно предыдущему номеру. Применение этого алгоритма заключается в том, чтобы помочь оценить ставки отмены подписки для списка рассылки на моем игровом сайте и предсказывать ставки отказа от подписки (и, соответственно, проценты) определенных дат в будущем. Первым со вторым номером является наибольшая разница, и скорость отмены подписки сильно снизилась после 3-го или 4-го дней. Я не очень хорошо работал в статистике, поэтому я не знаю, как это сделать :) – reefine

ответ

1

Что вы пытаетесь сделать, это большая ветвь математики под названием interpolation. Утверждение одного из способов более «статистически точно», чем другое, вероятно, вызовет религиозные войны. Все зависит от того, какие данные вы пытаетесь интерполировать.

Linear interpolation будет самым простым.

+0

и я не думаю, что php может справиться с таким глубоким математическим вычислением. В хорошие дни ученые используют fortran для этого, теперь есть Mathematica или Matlab. – marvin

+1

Это действительно возможно в PHP, как и на большинстве языков. Хотя языки и инструменты, такие как Matlab или R, специально разработаны с языковыми конструкциями для этого типа деятельности, более обобщенные языки, такие как C или java или PHP, не менее способны выполнять математику. PHPExcel, для eaxmple, имеет только такие функции, встроенные как часть пакета, написанные на чистом PHP, чтобы реплицировать функции Excel. –

0

Вам нужно решить, хотите ли вы поместить прямую линию или полином n-го порядка. Возможно, попробуйте несколько примеров в Excel, чтобы дать вам представление о том, что вам нужно.

0

Нет единого «наиболее статистически точного метода». Это зависит от того, что вы оцениваете, а также от ранее наблюдаемых значений. Исходя из вашего существующего набора значений, он, по-видимому, экспоненциально уменьшается, и, как видите, по 7-м и 8-м значениям он уже достиг точки, где он уменьшается только на 5 и 4 соответственно. Вы можете ожидать, что это еще больше уменьшится на 3, 2 и 1, после чего оно станет почти постоянным, только немного изменится в десятичных знаках.

Это было бы справедливое приближение:

... 
7 => 400 
8 => 396 
9 => 393 
10 => 391 
11 => 390 
12 and above => 389.xxx