ПР1_Заболотников_9373
.pdfСПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. |
База |
данных |
// |
Kaggle. |
URL: |
https://www.kaggle.com/jeanmidev/smart-meters-in-london/version/11 (дата
обращения: 11.09.2021)
11
ПРИЛОЖЕНИЕ А
ПРОГРАММНЫЙ КОД (ЯЗЫК ПРОГРАММИРОВАНИЯ – MATLAB)
%%Выборка clear; clc; grid on;
SAMPLE = [97 102 83 90 102 109 108 98 107 53 54 77 ...
94 84 212 71 105 98 79 90 62 108 153 69 60 58 ...
91 64 97 75 95 154 242 295 87 94 203 22 96 103 ...
138 140 138 89 20 81 30 72 112 158 125 36 77 154 ...
107 99 44 47 120 108 115 75 97 44 78 110 101 98 ...
105 84 73 108 106 106 107 105 110 98 72 83 87 79 ...
107 109 113 110 100 92 81 75 93 123 139 115 97 69 ...
49 108 166 69 123 147 42 75 117 103 98 98 90 99 113];
%%Построение интервалов
N = 111;
MAX = max(SAMPLE); MIN = min(SAMPLE);
amplitude = MAX - MIN; amount_of_gaps = 1 + ceil(log2(N));
gap_length = amplitude / amount_of_gaps; GAPS = randi(1, N, 2);
GAPS(1, 1) = MIN - 0.5 * gap_length; GAPS(1, 2) = GAPS(1, 1) + gap_length; for i = 2 : amount_of_gaps
for j = 1 : 2 if(j == 2)
GAPS(i, j) = GAPS(i, j - 1) + gap_length; else
GAPS(i, j) = GAPS(i - 1, j + 1); end;
end;
end;
while(GAPS(i, 2) < MAX) i = i + 1;
for j = 1 : 2 if(j == 2)
GAPS(i, j) = GAPS(i, j - 1) + gap_length; else
GAPS(i, j) = GAPS(i - 1, j + 1); end;
end;
end; amount_of_gaps = i;
%% Построение ранжированного ряда
SORTED = sort(SAMPLE); amount_of_diff_elements = 1; for i = 2 : N
if(SORTED(i) ~= SORTED(i - 1))
amount_of_diff_elements = amount_of_diff_elements + 1;
end; end;
12
%% Построение вариационного ряда
VARIATION = randi(1, 3, amount_of_diff_elements); i = 0;
j = 1;
while i ~= (N - 1) i = i + 1;
VARIATION(1, j) = SORTED(i); while(SORTED(i) == SORTED(i + 1))
VARIATION(2, j) = VARIATION(2, j) + 1; i = i + 1;
end;
VARIATION(3, j) = VARIATION(2, j) / N; j = j + 1;
end
if(SORTED(N - 1) ~= SORTED(N))
VARIATION(1, amount_of_diff_elements) = SORTED(N); VARIATION(2, amount_of_diff_elements) = 1; VARIATION(3, amount_of_diff_elements) = 1 / N;
end;
%%Построение интервального ряда
GAPS_ROW = randi(1, 4, N); j = 1;
for i = 1 : amount_of_gaps GAPS_ROW(1, i) = GAPS(i, 1); GAPS_ROW(2, i) = GAPS(i, 2); GAPS_ROW(3, i) = 0;
while(VARIATION(1, j) > GAPS_ROW(1, i) && VARIATION(1, j) <= GAPS_ROW(2, i))
GAPS_ROW(3, i) = GAPS_ROW(3, i) + VARIATION(2, j); j = j + 1;
if(j > amount_of_diff_elements) break;
end;
end;
GAPS_ROW(4, i) = GAPS_ROW(3, i) / N;
end;
%%Построение полигона абсолютных частот интервального ряда grid on;
GAP_MIDS = randi(1, 1, amount_of_gaps); GAP_FREQS = randi(1, 1, amount_of_gaps); for i = 1 : amount_of_gaps
GAP_MIDS(i) = GAPS_ROW(1, i) + 0.5 * gap_length; GAP_FREQS(i) = GAPS_ROW(4, i);
end;
plot(GAP_MIDS, GAP_FREQS, '-*'); hold on;
%%Построение эмперической Функции распределения
hold on; grid on;
ACC_FREQS = randi(1, 1, amount_of_gaps); ACC_FREQS(1) = GAPS_ROW(4, 1);
for i = 2 : amount_of_gaps
ACC_FREQS(i) = ACC_FREQS(i - 1) + GAPS_ROW(4, i);
13
end;
F_EMP = randi(1, 1, amount_of_gaps); for i = 1 : amount_of_gaps
F_EMP(i) = ACC_FREQS(i);
end;
plot([10 GAP_MIDS(1)], [0 F_EMP(1)], 'blue'); plot([GAP_MIDS(amount_of_gaps) (GAP_MIDS(amount_of_gaps) + 10)], [F_EMP(amount_of_gaps) 1], 'blue');
plot(GAP_MIDS, F_EMP, '-*blue');
%%Построение кумуляты grid on;
ACCUM_FREQS = randi(1, 1, amount_of_gaps); ACCUM_FREQS(1) = GAPS_ROW(4, 1);
for i = 2 : amount_of_gaps
ACCUM_FREQS(i) = ACCUM_FREQS(i - 1) + GAPS_ROW(4, i);
end;
plot(GAP_MIDS, ACCUM_FREQS, '-*'); hold on;
%%Построение гистограммы
grid on;
for i = 1 : amount_of_gaps
rectangle('Position', [GAPS_ROW(1, i) 0 gap_length GAPS_ROW(4, i)/gap_length], 'FaceColor', [0.9290 0.6940 0.1250]);
end;
14