Аппроксимация функции распределения вероятностей времени «жизни» HYIP

Доброго времени суток мои уважаемые читатели.

Время идет, у вас появляются новые вопросы, замечания и предложения по тематике имитационного статистического моделирования высокодоходных интернет-проектов (HYIP). В частности, ваши вопросы о том, как по графику эмпирической функции распределения определить вероятность того, что проект проработает больше заданного количества дней, либо по заданному количеству дней определить эту самую вероятность, заставили меня задуматься и постараться упростить вам жизнь.

Действительно определять эти величины по графику крайне неудобно. Как это делать в принципе я описал здесь. Но точность такого метода будет оставлять желать лучшего.

Скажем, основные значения вероятностей по срокам жизни проекта и сами сроки жизни я рассчитываю автоматически и привожу в каждом обзоре проекта, а также на этой странице.

Ну, а что, если вам захотелось найти количество дней, больше которого проработает проект, со своей экзотической вероятностью, скажем 0.78? Попробуйте-ка найти эту вероятность на графике и соответствующее ей значение времени работы проекта? Не выйдет.

Или наоборот, вам захотелось определить вероятность того, что проект проживет дольше заданного количества дней… а на графике даже просто определить, где именно будет это число дней на оси абсцисс нереально.

Как-то раз мне поступило предложение сделать формулу, по которой можно было бы рассчитывать нужные величины.

Признаюсь, по началу не хотелось этим заниматься. Функции распределения, получаемые для каждого проекта различны. И подбирать непрерывную функцию аппроксимации искомого отображения функции распределения на графике не всегда просто. Но в целом вполне возможно.

Подобрав такую функцию и её параметры не составит труда любому читателю знающего азы математики определять вероятность того, что проект проживет больше заданного количества дней, либо определять количество дней, больше которого проживет проект с заданной вероятностью.

В итоге я решил, что отныне такая формула будет находится для каждого нового мной проанализированного проекта!

Каким образом происходит нахождение такой формулы? Путём аппроксимации эмпирической функции распределения какой-либо другой известной функцией распределения с параметрами, подобранными линейным итерационным методом так, чтобы ошибка аппроксимации была минимальной. Здесь за основу я взял лог-нормальное распределение.

Мерой ошибки аппроксимации у меня выступает максимальное значение модулей разности между значениями эмпирической функции распределения и её аппроксимирующими значениями. Существуют и другие меры ошибок. Насколько эффективна эта мера? Вопрос открытый. Но эта мера точно удобна для интерпретации в дальнейшем.

Пришлось написать дополнительный модуль на языке R для решения данной задачи.

Вот код на языке R:

D<-read.table("project_edf.csv",header=F, sep=";",dec=".",colClasses=c("double"))
names(D)<-c("EDF","x")
y<-D[,"EDF"];x<-D[,"x"]
#График
plot(x,y,col="blue")
#Нормировка
xn<-x/sd(x)
err<-NA;bm<-NA; bsd<-NA
  for(mi in 1:100/100)
  {
    for(sdi in 1:100/100)
    {
      ya<-plnorm(xn,meanlog = mi,sdlog=sdi)  
      if( (is.na(err)) || ((max(abs(y-ya)))<=err)) {err<-max(abs(y-ya));bm<-mi;bsd<-sdi}
    }
  }
ya<-plnorm(xn,meanlog = bm,sdlog=bsd)
lines(y=ya,x=x,col="red")
print(paste("Ошибка:",round(max(abs(y-ya)),2)))
print(paste("Мат.ожидание:",round(bm,2)))
print(paste("Стандартное отклонение:",round(bsd,2)))
print(paste("Нормирующий делитель:",round(sd(x),2)))

А теперь хотелось вас рассчитывать сроки «жизни» проектов и их вероятности самостоятельно по формуле, которую я приведу ниже на примере проекта «Wealth Dividends».

Вот точечный график эмпирической функции распределения вероятностей времени жизни этого проекта, полученный по результатам 1000 итераций при моделировании.

theory_edpfПо оси абсцисс отложено количество дней «жизни» проекта по оси ординат — значение функции распределения вероятностей. График точечный (сделал специально для демонстрации нюансов) и в некоторых местах отсутствуют эти самые точки (реальные данные). Дело в том, что наша функция распределения – эмпирическая и её значения заданы дискретно и неравномерно. Непрерывная аппроксимация подобной функции позволяет не только упростить задачу поиска нужных нам значений, но и позволяет определять («восстанавливать») эти значения там, где их попросту «нет» в исходной функции.

Боле того, у меня есть мысль, что непрерывная функция аппроксимации исходной эмпирической функции распределения более точна для оценок вероятностей и количества дней работы проектов.

Также в будущем я планирую использовать полученные аппроксимации для определения наиболее часто встречающихся вероятностей скамов проектов и за тем использовать эту наиболее частую вероятность для определения количества дней «жизни» проектов. Но это уже отклонение от темы статьи…

Итеративным путем на базе лог-нормального распределения была подобрана аппроксимирующая функция (красный цвет) для эмпирической функции распределения (отображена синими точками):

theory_edf_apprПо графику все выглядит весьма прилично и точно. Величина ошибки аппроксимации не превышает 0.02 единиц. Это очень неплохо! То есть при расчетах вероятности вы можете ошибиться максимум на эту величину.

А теперь сами формулы и их параметры.

1. Формула определения вероятности (P) того, что проект «проживет» больше заданного количества дней (n):

P=1-F(m,µ,σ2)

Здесь F – значение функции лог-нормального распределения при заданном значении m=n/11.67, математическом ожидании µ =0.6 и стандартном отклонении σ2=0.29.

2. Формула определения количества дней (n), больше которого «проживет» проект с вероятностью (P):

P=Q(F, µ,σ2)*11.67

Здесь Q – квантиль функции лог-нормального распределения при заданном значении F=1-P, математическом ожидании µ =0.6 и стандартном отклонении σ2=0.29.

А теперь приведу несколько примеров по расчету этих величин в Microsoft Excel, опуская математические подробности (выбрал Microsoft Excel, так как мне кажется он наиболее доступен и понятен большинству людей).

1) Расчет вероятности того, что проект проживет более 20 дней.

Пишем в ячейку следующее:

=ОКРУГЛ(1-ЛОГНОРМ.РАСП(20/11,67;0,6;0,29;ИСТИНА);2)

Нажимаем Enter и получаем 0,60 или 60%.

2) Расчет вероятности того, что проект проживет более 15 дней.

Пишем в ячейку следующее:

=ОКРУГЛ(1-ЛОГНОРМ.РАСП(15/11,67;0,6;0,29;ИСТИНА);2)

Нажимаем Enter и получаем 0,89 или 89%.

Полученные вероятности округляются до 2-го знака после запятой. Результаты точнее тех, что я привел в этой статье. Округлите до 1-го знака после запятой эти результаты и получите результаты один в один как в статье.

3) Расчет количества дней, больше которого «проживет» проект с вероятностью 0.6 или 60%.

Пишем в ячейку следующее:

=ОКРУГЛ(ЛОГНОРМ.ОБР(1-0,6;0,6;0,29)*11,67;0)

Нажимаем Enter и получаем 20 дней.

4) Расчет количества дней, больше которого «проживет» проект с вероятностью 0.8 или 80%.

Пишем в ячейку следующее:

=ОКРУГЛ(ЛОГНОРМ.ОБР(1-0,8;0,6;0,29)*11,67;0)

Нажимаем Enter и получаем 17 дней.

Полученные вероятности округляются до 0-го знака после запятой, подразумевая, что день не может быть дробным. Результаты аналогичны тем, что я привел в этой статье.

Приведенные мной примеры для Microsoft Excel, в частности формулы, вы можете напрямую копировать и вставлять в ячейку книги Microsoft Excel. Подробную информацию о функциях, используемых в формулах, вы можете найти в руководстве по Microsoft Excel, либо в Интернет.

Использовать приведенные формулы можно и в любых других программных продуктах, с учетом их синтаксиса. Результаты будут и должны быть неизменными.

То, что касается математики, то в подробности не углублялся, ведь это крайне специфично… Если же что-то непонятно или хотите разобраться глубже, то спрашивайте. Объясню.

Похожие статьи:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *