A. Встановлення розподілу за експериментальними даними



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

A. Встановлення розподілу за експериментальними даними



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

Для встановлення функцій статистичного опису вибірки розроблено програму create_rozpodil, яка приймає 4 параметри. Це sample_a – масив вибірки, nazva_pok_a – назва вибірки, idd_view – признак, чи виводити графіки шуканих функцій, idd_save – признак, чи зберігати ці графіки у файли.

В програмі create_rozpodil вирахувано розподіл – залежність кількості випадків від величини елементів у вибірці, закон розподілу (густину ймовірності) елементів у вибірці, функцію розподілу (інтеграл від густини ймовірності). Ця програма повертає hist_xxi ‑ вузли визначення (дискретно задані аргументи) шуканих функцій, hist_yni_fu ‑ відповідні дискретні значення закону розподілу (кількості випадків); hist_yni_fu ‑ дискретні значення закону розподілу (густини ймовірності), hist_yfi_fu ‑ дискретні значення функції розподілу. Ця функція також повертає об'єкти сплайн-апроксимації цих трьох функцій, і параметр rez_one – який відображає точність вирахування закону розподілу. При успішному встановленні закону розподілу цей параметр має значення, близьке до одиниці.

Текст функції create_rozpodil подано нижче.

 

%-------------------- Програма встановлення розподілу --------------------------

function [hist_xxi, ... % аргументи у вузлах інтерполяції

hist_yyi_fu, ... % дискрентні значення розподілу (кільк. випадків)

hist_yni_fu, ... % дискренті значення закону розподiлу

hist_yfi_fu, ... % дискрентні значення функцiї розподiлу

hist_yyi_sp, ... % сплайн розподілу (кількості випадків)

hist_yni_sp, ... % сплайн закон розподiлу

hist_yfi_sp, ... % сплайн функцiї розподiлу

rez_one ] = ... % контроль точності закону розподілу == 1

create_rozpodil (sample_a, nazva_pok_a, idd_view, idd_save)

 

%------------------------------------------------------------------------------

% create_rozpodil - Програма створеня масивів і сплайнів, які описують
% математичні функції ддля статистичного опису вибірки.

%

% Функцція create_rozpodil приймає статистичну вибірку і вираховує для неї

% розподіл, густину ймовірності та функцію ймовірності на області,

% обмеженій найменшим та найбільшим значенням елементів у вибірці.

%

% Вхiднi параметри:

% sample_a - Вибірка, вектор-стовпчик розміром n*1

% nazva_pok_a - Назва вибірки

% idd_view - Признак, чи виводити графіки при зветранні до функції

% idd_save - Признак, чи зберігати графіки у файл

%

% Вихiднi параметри:

% hist_xxi - Масив (стовпчик) значення аргументу у вузлах інтерполяції

% hist_yyi_fu - Масив (стовпчик) значень розполіду (кількості

% випадків) у вузлах інтерполяції

% hist_yni_fu - Масив (стовпчик) значень закону розполіду (густини

% ймовірності) у вузлах інтерполяції

% hist_yfi_fu - Масив (стовпчик) значень функції розполіду (інтегралу

% від густини ймовірності) у вузлах інтерполяції

% hist_yyi_sp - Об’єкт сплайн-апроксимації розполіду (кількості

% випадків)

% hist_yni_sp - Об’єкт сплайн-апроксимації закону розполіду

% (густини ймовірності)

% hist_yfi_sp - Об’єкт сплайн-апроксимації розполіду функції розполіду

% (інтегралу від густини ймовірності)

% rez_one - Критерій точності приведення розподілу до

% гусини ймовірності. Це інтеграл від густини ймовірності.

% Має дорівнювати одиниці. Для контролю точності обчислень.

%

% Спеціальпні зауваження:

% При вирахуванні значення аргументів у вузлах інтерполяції вжито явну їх

% кількість NNN. Якість встановленого закону розподілу залежить від кількості

% відрізнів MMM, на які розбито ширину вибірки. Параметр MMM краще підбирати

% експериментально. Оскільки в практичних задачах часто трапляться малі

% вибірки, тому в сплайн-інтерполяції вжито нийнижчу (третю) з прийнятних

% степенів сплайна. Такж для апроксимації розподілу вжито функцію pchip.

%--------------------------------------------------------------------------

 

% Розмір вибірки

[size_row_sample_a, size_col_sample_a] = size(sample_a);

 

NNN = 100; % Кількість вузлів інтерполяції

MMM = 5; % Кількість стовпчиків в гісограмі

 

% Утворення дискретного розподілу (залежність кількості випадків від значення)

[hist_yy1, hist_xx1] = hist(sample_a, MMM); % MMM - кількіст стовпчикiв

 

% На області визначення розподілу вибираємо вузли інтерполяції

hist_xxi = (hist_xx1(1) : (hist_xx1(end)-hist_xx1(1))/NNN : hist_xx1(end))';

 

% Масив - апроксимація розподілу (кількості випадків)

hist_yy1_tmp = pchip (hist_xx1, hist_yy1, hist_xxi); % З функції pchip

 

% Сплайн розподілу (кількості випадків)

hist_yyi_sp = spapi(3, hist_xxi, hist_yy1_tmp);

 

% Масив значень значень сплайна розподілу (кількості випадків)

hist_yyi_fu = fnval(hist_yyi_sp, hist_xxi); % за сплайном 3-го степеня

 

% Грааниці бласті визначення розподілу (сплайна, що його апроксимує)

board_1 = [min(hist_xx1), max(hist_xx1)];

 

% Iнтеграл вiд сплайна розподілу (кількості випадків) на області визначення

sss_1 = diff(fnval(fnint(hist_yyi_sp), board_1)); % Коефіціент нормування.

 

% Закон розподілу визначаємо, ділячи розподіл (клькість випадків)

% на коефіцієнт нормування (площу від цього розподілу)

hist_yni_fu = hist_yyi_fu ./ sss_1;

 

% Сплайн закону розподілу (густини ймовірності)

hist_yni_sp = spapi(3, hist_xxi, hist_yni_fu);

 

% Інтеграл від закону розподілу на області його визначення == 1

rez_one = diff(fnval(fnint(hist_yni_sp), [min(hist_xxi), max(hist_xxi)]));

 

% Сплайн Функцiї розподiлу знаходимо, інтгеруючи сплайн закону розподілу

hist_yfi_sp = fnder(hist_yni_sp, -1);

 

% Масив значеннь функції розподілу у вузлах інтеополяції

hist_yfi_fu = fnval(hist_yfi_sp, hist_xxi);

 

%--------------------------------------------------------------------------

% Якщо задно признак виводити графіки

if idd_view

ff1 = figure('Name', 'hist', 'Position',[180 230 755 340]); % Явно задані

ff2 = figure('Name', 'hist', 'Position',[180 230 755 340]); % розміри вікон

ff3 = figure('Name', 'hist', 'Position',[180 230 755 340]); % з графіками

 

ax1 = axes('Parent',ff1);

ax2 = axes('Parent',ff2);

ax3 = axes('Parent',ff3);

 

box(ax1, 'on'); hold(ax1, 'all');

box(ax2, 'on'); hold(ax2, 'all');

box(ax3, 'on'); hold(ax3, 'all');

 

% Графік розподiлу (Залежність кількість випадків від величин)

hnd1 = plot (ax1, hist_xxi, hist_yyi_fu);

 

% Графiк закону розподiлу (густина ймовiрностi)

hnd2 = plot (ax2, hist_xxi, hist_yni_fu);

 

% Графiк функції розподiлу (інтеграл від густини ймовірності)

hnd3 = plot (ax3, hist_xxi, hist_yfi_fu);

 

title (ax1, 'Розподiл', 'FontName', 'Arial Narrow'); % Назва

title (ax2, 'Густина ймовiрностi', 'FontName', 'Arial Narrow');

title (ax3, 'Функцiя розподiлу', 'FontName', 'Arial Narrow');

 

xlabel(ax1, nazva_pok_a, 'FontName','Arial Narrow'); % Назва

xlabel(ax2, nazva_pok_a, 'FontName','Arial Narrow'); % осі

xlabel(ax3, nazva_pok_a, 'FontName','Arial Narrow'); % аргументів

 

ylabel(ax1, 'Кiлькiсть випадкiв', 'FontName','Arial Narrow'); % Назва

ylabel(ax2, 'Густина ймовiрностi', 'FontName','Arial Narrow'); % осей

ylabel(ax3, 'Функцiя розподiлу', 'FontName','Arial Narrow'); % функцій

 

set(hnd1(1) ,'LineWidth',2, 'Color', [0 0 0], 'LineStyle', '-'); % Явно задані

set(hnd2(1) ,'LineWidth',2, 'Color', [0 0 0], 'LineStyle', '-'); % опис ліній

set(hnd3(1) ,'LineWidth',2, 'Color', [0 0 0], 'LineStyle', '-'); % на графіках

 

% Якщо задано признак зберігати графіки у файл

if idd_save

set (ff1,'PaperPositionMode','auto'); % Прийняти явно задані

set (ff2,'PaperPositionMode','auto'); % розміри зображень

set (ff3,'PaperPositionMode','auto'); % при збереженні

 

saveas(ff1, 'Rozpodil_demo.jpg'); % Явно задані назви файлів

saveas(ff1, 'Rozpodil_demo.fig');

 

saveas(ff2, 'zakon_rozpodilu_demo.jpg');

saveas(ff2, 'zakon_rozpodilu_demo.fig');

 

saveas(ff3, 'fia_rozpodilu_demo.jpg');

saveas(ff3, 'fia_rozpodilu_demo.fig');

 

end; % if idd_save

 

end; % if idd_view

%-------------------- Кінець програми вирахування розподілу -----------------

 

 

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

 

%-------------- Приклад звертання до програми вирахування розподілу -----------

% Вибiрка, для якої порiбно встановити статистичний розподiл

sample_a = [ ...

26; 20; 32; 19; 24; 32; 33; 38; 26; 28; 28; 26; 37; 29; 21; 26; 21; ...

25; 17; 23; 30; 44; 36; 20; 23; 22; 23; 24; 22; 25; 25; 17; 24; 23; ...

34; 22; 23; 22; 35; 23; 35; 30; 30; 26; 30; 24; 27; 20; 25; 24; 24; ...

21; 18; 23; 24; 17; 19; 21; 23; 28; 28; 32; 18; 19; 27; 28; 22; 24; ...

24; 19; 27; 45; 27; 27; 27; 22; 32; 27; 24; 26; 26; 26; 21; 23; 23; ...

25; 26; 27; 28; 33; 29; 31; 31; 24; 30; 33; 26; 26; 27; 25; 29; 23; ...

24; 23; 31; 26; 27; 23; 25];

 

% Назва вибiрки

name_sample_a = 'Вiк матері';

 

% Виклик процедури, яка вираховує статистичний розподіл

[xxxi, rozp_fu, rozn_fu, rozf_fu, rozp_sp, rozn_sp, rozf_sp, idd_ones ] = ...

create_rozpodil(sample_a, name_sample_a, 1, 1);

 

% Вивід показника точності

idd_ones

%-------------- Кінець прикладу ----------------------------------------------

 

Рис. А.1. Графік густини ймовірності, отриманий функцією create_rozpodil.

 



Последнее изменение этой страницы: 2016-06-19; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.236.110.106 (0.03 с.)