Моделювання логнормальному розподілу

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Міністерство науки і освіти України

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

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

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

Моделювання логнормальному розподілу

Курсова робота з дисципліни

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

Виконавець *************

студент ****

Керівник

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

Харків 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

Щільність розподілу

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

begin

if x <> 0 then

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

else

result: = 0;

end;

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

var

y: real;

x: double;

begin

repeat

x: = a + random * (ba);

f: = PL (x);

y: = fmax * random;

until y <f;

result: = x;

end;

procedure TForm1.Clear; //------------ clear array ---------

const M = 50;

var j: integer;

begin

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

begin

gist [j]: = 0;

end;

end;

procedure TForm1.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;

//-------** All fields must be filled !**---------

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

(E5.Text ='') then

begin

with Application do

begin

NormalizeTopMosts;

MessageBox ('All of 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);

if kk> 2000000000 then

begin

Showmessage ('Дуже велике число, введіть менше');

exit;

end;

N: = StrToInt (E5.Text);

g1: = 100 / N;

g2: = 0;

Randomize;

M: = 50;

//---------------** Theoretical method **------------------

for i: = 1 to 100 do

begin

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

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

/ / P: = PL (x);

if x <> 0 then

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

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

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

//---------------** Method of Neumann **------------------------

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

{For i: = 1 to N do

begin

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

x: = a + i * (ba) / 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 ((xa) / ((ba) / 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 ((xa) / ((ba) / M));

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

g2: = g2 + g1;

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

if i> N then break;

if flag = true then

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 + (ba) / M * (j +0.5)) * (ba) / M-gist [j], 2)) /

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

chi2_N: = chi2_N + sum;

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

end;

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

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

Метод зворотного функції

//--------------** Method of inverse function **-----------------

Clear;

chi2_if: = 0;

{For i: = 1 to N do

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 ((xa) / ((ba) / M));

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

end;}

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

begin

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

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

chi2_if: = chi2_if + sum;

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

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;

procedure TForm1.Panel7Click (Sender: TObject);

begin

Close;

end;

procedure TForm1.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 is TEdit then

begin

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

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

Key: = # 0

else

begin

if Key = DecimalSeparator then

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

Key: = # 0;

end;

end;

end;

procedure TForm1.Aboutme1Click (Sender: TObject);

begin

AboutBox.Show;

end;

procedure TForm1.Timer1Timer (Sender: TObject);

begin

Panel19.Caption: = TimeToStr (Time);

end;

procedure TForm1.E1KeyDown (Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if (ssShift in Shift) then

key: = 0;

end;

procedure TForm1.Panel20Click (Sender: TObject);

begin

flag: = true;

end;

end.

Інструкція користувачеві

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

Праворуч у розділі "Теоретично користувач може ввести значення sigma і mu, ті значення, які він вважає потрібними; a і b це інтервал у межах якого змінюється графік. І значення N - (кількість єксперементов) - в завісемості від того скільки разів ми будемо проводити єксперемент . Залежно від вибору даних параметрів користувач може отримати різні форми графіка щільності ймовірності.

У розділі "Критерій згоди" виводяться значення оцінки Хі-квадрат для двох зазначених методів. Нижче висновок математичного сподівання і дисперсії, порахованих теоретично й експериментально.

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

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

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

При натисканні на кнопку «2 D / 3 D» користувач може спостерігати зміну графіка з 2 D в 3 D і навпаки.

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

У закладці «About» користувач може дізнатися про творців даного програмного продукту та короткий опис програмного продукту.

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

Програма складається з одного вікна, на якому розташовані всі елементи управління. Праворуч форми знаходяться поля для введення вихідних даних.

У центрі форми розміщена кнопка «Вивести графіки і обчислити», натискання на яку запускає генератор випадкових величин. На графіку з'являються дві криві описують функцію щільності логнормальному розподілу. Червоним кольором зображено теоретична крива, а синім (метод зворотної функції) і зеленим (метод Неймана) - отримана в результаті експерименту. Праворуч у полях відображаються значення математичного очікування і дисперсії ..

Висновок

У моїй роботі я розглянув логнормальної розподіл, ми отримали графіки щільності розподілу і функції розподілу, і зв'язки з іншими розподілами.

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

Список використаної літератури

  1. http://en.wikipedia.org

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

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

Загальні дані логнормальної розподіл

Щільність ймовірності

μ = 0

Функція розподілу

μ = 0

Параметри


Носій

Щільність ймовірності

Функція розподілу

Математичне сподівання

Медіана

e μ

Мода

Дисперсія

Коефіцієнт асиметрії

Коефіцієнт ексцесу

Інформаційна ентропія

Логнорма льное розподілу ня в теорії ймовірностей - це двопараметрична сім'я абсолютно неперервних розподілів. Якщо випадкова величина має логнормальної розподіл, то її логарифм має нормальний розподіл.

Визначення

Нехай розподіл випадкової величини X задається щільністю ймовірності, яка має вигляд:

,

де . Тоді кажуть, що X має логнормальної розподіл з параметрами μ і σ. Пишуть: X ~ LogN (μ, σ 2).



Моменти

Формула для k-го моменту логнормальної випадкової величини X має вигляд:

звідки випливає, зокрема:

,

.

Властивості логнормальному розподілу

  • Якщо - Незалежні логнормальної випадкові величини, такі що , То їх твір також логнормальної:

.

Зв'язок з іншими розподілами

  • Якщо X ~ LogN (μ, σ 2), то

Y = ln X ~ N (μ, σ 2).

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
70.1кб. | скачати


Схожі роботи:
Моделювання розподілу домішок у базі дрейфового біполярного
Моделювання дискретної випадкової величини по геометричному закону розподілу
Моделювання датчиків випадкових чисел із заданим законом розподілу
Ряд розподілу функція розподілу
Імітаційне моделювання системи фазового автопідстроювання частоти в пакеті моделювання динамічних
Теорія розподілу інформації
Маркетингова політика розподілу 2
Онлайнові канали розподілу
Маркетингова політика розподілу
© Усі права захищені
написати до нас