Реферат: Моделирование логнормального распределения

Министерствонауки и образования Украины

ХарьковскийНациональный Университет им. В.Н.Каразина

Факультеткомпьютерных наук

Кафедрамоделирования систем и технологий

Моделированиелогнормального распределения

Курсоваяработа по дисциплине

«Компьютерноемоделирование стохастических процессов»

Исполнитель *************

студент ****

Руководитель

Ст. преп. ************

Харьков 2007


План

1.        Введение

2.        Логнормальноераспределение

3.        Применение логнормальногораспределения

4.        Постановка задачи

5.        Реализацияпоставленной задачи

6.        Инструкцияпользователю

7.        Описаниепрограммного модуля

8.        Заключение

9.        Списокиспользуемой литературы

10.     Общие данныелогнормального распределения


Введение

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


Логнормальноераспределение

Случайная величина Xимеет логнормальное распределение с параметрами μ, σ, если X =exp(Y), где Y имеет нормальное распределение с параметрами μ, σ.Случайная величина с логнормальным распределением является непрерывной, ипринимает только положительные значения. Графики плотности (привязан к левойвертикальной оси ординат) и функции (привязан к правой оси ординат)логнормального распределения с параметрами μ = 0, σ = 0.7 приведен наследующем рисунке.

/>

Характеристики

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

Плотность распределения />    

Функция распределения* />         

Математическое ожидание />            

Стандартное отклонение />     

Дисперсия />                     

Асимметрия />                        

Мода />                                                         

* Функция логнормальногораспределения F через элементарные функции не выражается. Для приближенноговычисления функции этого распределения с параметрами μ, σ можновоспользоваться формулой F(x) = Φμ,σ(ln x), гдеΦμ,σ — функция нормального распределения с параметрами μ,σ.

Моделирование

Моделирование значенийслучайной величины с логнормальным распределением (с параметрами μ,σ) проводится по формуле X = exp(Y), где Y имеет нормальное распределениес теми же параметрами..

Применениелогнормального распределения

В статистике такназываемое логнормальное распределение применяется в том случае, когда начинаетизменяться цена актива в будущем – а это случайный процесс, который в принципедолжен описываться нормальным распределением. В то же время для целейвероятностной оценки стоимости актива в теории пользуются не нормальным, алогнормальным распределением. Это обусловлено следующими причинами. Во-первых,нормальное распределение симметрично относительно ее центральной оси и можетиметь как положительные, так и отрицательные значения; однако цена актива неможет быть отрицательной. Во-вторых, нормальное распределение говорит о равнойвероятности для значений переменной отклониться вверх или вниз. В то же времяна практике, например, имеет место инфляция, которая оказывает давление на ценыв сторону их повышения, а также сама временная сущность денег: стоимость денегсегодня меньше, чем стоимость денег вчера, но больше, чем стоимость денегзавтра. Кривая логнормального распределения всегда положительна и имеетправостороннюю скошенность (асимметрично), т.е. она указывает на большуювероятность цены отклониться вверх. Поэтому если, допустим, цена актива составляет50 долл., то кривая логнормального распределения свидетельствует о том, чтоопцион пут с ценой исполнения 45 долл. должен стоить меньше опциона колл сценой исполнения 55 долл., в то время как в соответствии с нормальнымраспределением они должны были бы иметь одинаковую цену. Хотя нельзя надеяться,что приведенные исходные предположения в точности выполняются во всех реальныхрыночных ситуациях, тем не менее принято считать, что логнормальноераспределение достаточно хорошо как первое приближение в случае активов,которыми торгуют на конкурентных рынках аукционного типа для длинныхрассматриваемых периодов.

Постановка задачи

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


Реализацияпоставленной задачи

Для решения поставленнойя использовал среду программирования Delphi 7.

Сначала были сделанырасчеты по формулам которые описывались выше для того, чтобы отобразить графикплотности логнормального распределения при помощи аналитических расчетов.

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

Также нужно былопосчитать математическое ожидание и дисперсию и ввести полученные результаты наэкран. Формулы которых представлены ниже

Математическое ожидание

/>

Дисперсия

/>

var

 Form1:TForm1;

 kk:Int64;

 flag:boolean;

implementation

Плотностьраспределения

functionTForm1.PL(x:double):double; //--density of distribution

begin

 if x<>0then

 result :=exp(-(ln(x)-mu)*(ln(x)-mu)/(2*sigma*sigma))/(x*sigma*Sqrt(2*Pi))

 else

 result := 0;

end;

functionTForm1.LogNorm(): double; //--for a method of Neumann

var

 y: real;

 x: double;

begin

 repeat

 x :=a+random*(b-a);

 f := PL(x);

 y :=fmax*random;

 until y<f;

 result := x;

end;

procedureTForm1.Clear; //------------clear array---------

const M=50;

var j:integer;

begin

 for j:=0 to(M-1) do

 begin

 gist[j] := 0;

 end;

end;

procedureTForm1.Panel1Click(Sender: TObject);

var

 x, r, sr, h1,h2, Ob,g1,g2, chi2_N, chi2_12, chi2_if, sum, Z: double;

 p, y, Mat,Mat2, Disp: real;

 M, j:integer;

 N, i, u:longint;

begin

flag:=false;

Gauge1.Progress:=0;

//-------**Allfields must be filled!**---------

 if(E1.Text='') or (E2.Text='') or (E3.Text='') or (E4.Text='') or

 (E5.Text='')then

 begin

 withApplication do

 begin

 NormalizeTopMosts;

 MessageBox('Allof fields must be filled!', 'Error', MB_OK);

 RestoreTopMosts;

 end;

 exit;

 end;

//----------**initialization**--------------

T := GetTime;

Clear;

 Chart1.Series[0].Clear;

 Chart1.Series[1].Clear;

 Chart1.Series[2].Clear;

 sigma :=StrToFloat(E1.Text);

 mu :=StrToFloat(E2.Text);

 a :=StrToFloat(E3.Text);

 b :=StrToFloat(E4.Text);

 kk:=StrToint64(E5.Text);

 ifkk>2000000000 then

 begin

 Showmessage ('Оченьбольшое число, введите меньшее');

 exit;

 end;

 N :=StrToInt(E5.Text);

 g1:=100/N;

 g2:=0;

 Randomize;

M := 50;

//---------------**theoreticalmethod**------------------

for i:=1 to100 do

begin

 if (i mod 10)=0 then application.ProcessMessages;

 x :=a+i*(b-a)/100;

 //p := PL(x);

 if x<>0then

 p :=exp(-(ln(x)-mu)*(ln(x)-mu)/(2*sigma*sigma))/(x*sigma*Sqrt(2*Pi))

 else

 p := 0;

 Chart1.Series[0].AddXY(x,p);

end; //---theoretical

//***********************************************************

МетодНеймана

//---------------**methodof Neumann**------------------------

fmax:=Chart1.Series[0].MaxYValue;

{for i:=1 to Ndo

begin

 if (i mod 10)=0 then application.ProcessMessages;

 x :=a+i*(b-a)/N;

 f := PL(x);

 if(f>fmax)then

 fmax := f;

end;} //max

//------------------------------

Clear;

chi2_N:=0;

Mat:=0;

Mat2:=0;

Disp:=0;

i:=0;

Clear;

chi2_if := 0;

while true do

 begin

 if (i mod 10)=0 then application.ProcessMessages;

 inc(i);

 x :=LogNorm();

 Mat := Mat+x;//expectation

 Mat2 := Mat2+sqr(x);

 if (x>b)or (x<a) then

 continue;

 u := trunc((x-a)/((b-a)/M));

 gist[u] :=gist[u]+1;

 h1 := random;

 h2 := random;

 Ob :=sqrt(-2*ln(h1))*cos(2*Pi*h2);

 Ob :=mu+Ob*sigma;

 x := exp(Ob);

 if (x>b)or (x<a) then

 continue;

 u :=trunc((x-a)/((b-a)/M));

 gist1[u] :=gist1[u]+1;

 g2:=g2+g1;

 Gauge1.Progress:=trunc(g2)+1;

 if i>Nthen break;

 if flag=truethen

 begin

 N:=i;

 break;

 end;

 end;

Mat := Mat/N;

Mat2 :=Mat2/N;

Disp := Mat2 — sqr(Mat);

for j:=0 to(M-1) do //------histogram

 begin

 sum :=(Power(N*PL(a+(b-a)/M*(j+0.5))*(b-a)/M-gist[j], 2))/

 (N*PL(a+(b-a)/M*(j+0.5))*(b-a)/M);

 chi2_N :=chi2_N+sum;

 Chart1.Series[1].AddXY((a+(j+0.5)*(b-a)/M),gist[j]/N*M/(b-a));

 end;

E6.Text :=FloatToStrF(chi2_N, fffixed, 4, 4);//--chi-square for a Neumann

//****************************************************************

Метод обратной функции

//--------------**methodof inverse function**-----------------

Clear;

chi2_if := 0;

{for i:=1 to Ndo

begin

 h1 := random;

 h2 := random;

 Ob :=sqrt(-2*ln(h1))*cos(2*Pi*h2);

 Ob :=mu+Ob*sigma;

 x := exp(Ob);

 if (x>b)or (x<a) then

 continue;

 u :=trunc((x-a)/((b-a)/M));

 gist[u] :=gist[u]+1;

end;}

for j:=0 to(M-1) do //------histogram

begin

 sum :=(Power(N*PL(a+(b-a)/M*(j+0.5))*(b-a)/M-gist1[j], 2))/

 (N*PL(a+(b-a)/M*(j+0.5))*(b-a)/M);

 chi2_if :=chi2_if+sum;

 Chart1.Series[2].AddXY((a+(j+0.5)*(b-a)/M),gist1[j]/N*M/(b-a));

 gist1[j]:=0;

end;

E8.Text :=FloatToStrF(chi2_if, fffixed, 4, 4); //chi-sq for a inverse function

E10.Text :=FloatToStr(exp(mu+sqr(sigma)/2)); //--expectation (teor)

E11.Text :=FloatToStr(Mat); //--expectation (experim)

E12.Text :=FloatToStr((exp(sqr(sigma))-1)*exp(2*mu+sqr(sigma)));

E13.Text :=FloatToStr(Disp);

D := GetTime;

Z :=MilliSecondSpan(D, T);

e5.Text:=IntTostr(N);

Edit1.Text :=FloatToStrF(Z, fffixed, 6, 6);

//*****************************************************************

end;

procedureTForm1.Panel7Click(Sender: TObject);

begin

Close;

end;

procedureTForm1.E1KeyPress(Sender: TObject; var Key: Char);

begin

if (key='-')

then begin

if Pos ('-',(Sender as TEdit).Text)=0 then Begin (Sender as TEdit).SelStart:=0; key:='-';end

else key:=#0;

end;

if Sender isTEdit then

 begin

 if Not((Keyin ['0'..'9'])or (Key=Chr(vk_Back))

 or(Key=DecimalSeparator) or (Key='-')) then

 Key:=#0

 else

 begin

 if Key =DecimalSeparator then

 ifPos(DecimalSeparator,(Sender as TEdit).Text)>0 then

 Key:=#0;

 end;

end;

end;

procedureTForm1.Aboutme1Click(Sender: TObject);

begin

 AboutBox.Show;

end;

procedureTForm1.Timer1Timer(Sender: TObject);

begin

Panel19.Caption:= TimeToStr(Time);

end;

procedureTForm1.E1KeyDown(Sender: TObject; var Key: Word;

 Shift:TShiftState);

begin

if (ssShift inShift)then

key:=0;

end;

procedureTForm1.Panel20Click(Sender: TObject);

begin

flag:=true;

end;

end.

Инструкция пользователю

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

 Справа вразделе «Теоретически пользователь может ввести значение sigma и mu, те значения которые он считает нужными; a и b это интервал в пределах которого меняется график. И значение N – (количество єксперементов) – в зависемости от того сколько размы будем проводить єксперемент. В зависимости от выбора данных параметров пользователь может получитьразличные формы графика плотности вероятности.

В разделе „Критерийсогласия“ выводятся значения оценки Хи-квадрат для двух указанных методов.Ниже вывод математического ожидания и дисперсии, посчитанных теоретически иэкспериментально.

Справа внизу формывыводится системное время и время выполнения расчётов в миллисекундах.

При нажатии на кнопку «Вывестиграфики и вычислить» слева выводятся график плотности логнормальногораспределения (построенный теоретически), гистограммы распределения случайнойвеличины по логнормальному закону, смоделированные при помощи метода Неймана иметода обратной функции.

При нажатиина кнопку «Стоп» программа прекращаются свою работу и начинает считыватьзначения которые обработались до определенного момента и записует значения вполя.

При нажатиина кнопку «2D/3D» пользователь может наблюдать изменение графика из 2D в 3D и наоборот.

При нажатиина кнопку «Выход» программа будет завершена.

В закладке «About» пользователь может узнать осоздателях данного программного продукта и краткое описание программногопродукта.

Описаниепрограммного модуля.

Программа состоит изодного окна, на котором расположены все элементы управления. Справа формынаходятся поля для ввода исходных данных.

В центре формы размещенакнопка «Вывести графики и вычислить», нажатие на которую запускает генераторслучайных величин. На графике появляются две кривые описывающие функциюплотности логнормального распределения. Красным цветом изображена теоретическаякривая, а синим (метод обратной функции) и зеленым (метод Неймана) – полученнаяв результате эксперимента. Справа в полях отображаются значения математическогоожидания и дисперсии..


Заключение

 

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

В результате работы былсоздан программный продукт в среде Delphi 7, где мы можем посмотреть как моделируется логнормальное распределение,выводятся графики плотности распределения при помощи аналитических расчетов истохастических преобразований. А также вычисляется мат. ожидание и дисперсия,стохастическим и аналитическим способами.


Список используемой литературы

1.        http://en.wikipedia.org

2.        Шеффе Г.Дисперсионный анализ. — М.: Физматгиз, 1980. — 628 с.

3.        «Delphi 2005: «Секреты программирования»»,Михаил Фленов.


Общие данные логнормальное распределение

Плотность вероятности
/>
μ=0

Функция распределения
/>
μ=0

Параметры

/>
/>

Носитель

/>

Плотность вероятности

/>

Функция распределения

/>

Математическое ожидание

/>

Медиана

Мода

/>

Дисперсия

/>

Коэффициент асимметрии

/>

Коэффициент эксцесса

/>

Информационная энтропия

/>

Логнорма́льноераспределе́ние в теориивероятностей — это двухпараметрическое семейство абсолютно непрерывныхраспределений. Если случайная величина имеет логнормальное распределение, то еёлогарифм имеет нормальное распределение.

Определение

Пусть распределение случайной величины Xзадаётся плотностью вероятности, имеющей вид:

/>,

где />. Тогда говорят, что X имеет логнормальное распределение с параметрами μ и σ. Пишут: X˜LogN(μ,σ2).

/> Моменты

Формула для k-го момента логнормальнойслучайной величины X имеет вид:

/>

откуда в частности:

/>,

/>.

/>Свойства логнормальногораспределения

·          Если /> — независимые логнормальные случайные величины, такие что/>, то их произведение такжелогнормально:

/>.

/>Связь с другимираспределениями

·          Если X˜LogN(μ,σ2), то

Y = lnX˜N(μ,σ2).

еще рефераты
Еще работы по информатике, программированию