Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function MC_LR_4_KHMELEV
- %_______________________________ЗАДАНИЕ I______________________________________
- a_ = -0.7; b_ = 7.3; % по условию
- printf('\n-------------\n TASK NUMBER 1\n');
- X = sort(oneOfArrays('ud-2'));
- N = length(X);
- for j = 1:N
- F(j) = f(X(j));
- FNx(j) = Fn(j, 'x');
- FNx0(j) = Fn(j, '0');
- endfor
- [Dn, j] = max(max( abs(FNx - F), abs(FNx0 - F) ));
- x_ = X(j); % x_ - это x*, X[] - это выборка, состоящая из элементов x от 1 до N
- DnN = Dn*sqrt(N);
- printf('\n------\nTABLE 1:\n a = %i\n b = %i\n N = %i\n Dn = %i\n Dn√N = %i\n x* = %i\n F(x*) = %i\n Fn(x*) = %i\n Fn(x*-0) = %i\n------\n\n', a_, b_, N, Dn, myround(DnN, 5), x_, myround(f(x_), 5), myround(Fn(j, 'x*'), 5), myround(Fn(j, '0'), 5));
- % график эмпирической функции распределения и график функции распределения равномерного закона на отрезке [a , b]:
- v = 0.1; % шаг по вертикали
- h = 1; % шаг по горизонтали
- high = 1 + v;
- left = fix(a_); right = fix(b_);
- low = 0 - v;
- xticks = [left:h:right];
- yticks = [low:v:high];
- figure('Name','EDF & uniform distribution');
- plot(X, FNx, 'b', X, F, 'g'); % FNx - точки эмпирической функции, F - точки функции равномерного закона
- title('blue - EDF; green - cumulative distribution function'), grid on
- set(gca,'xtick', xticks);
- set(gca,'ytick', yticks);
- xlim([left, right]);
- ylim([left, high]);
- % Проверка гипотезы о соответствии выборки равномерному распределению
- a = 0.05; % уровень значимости
- % первый способ:
- printf('Hypothesis'' check,\nthe first method:\n');
- ka = K(a);
- if DnN <= ka
- printf('Dn√N = %i; ka = %i, %i<=%i => Gipoteza mozhet byt prinyata;\n', DnN, ka, DnN, ka);
- else
- printf('Dn√N = %i; ka = %i, %i>%i => Gipoteza nie mozhet byt prinyata;\n', DnN, ka, DnN, ka);
- endif
- % второй способ:
- printf('\nthe second method:\n');
- pval = kolmogorov_smirnov_test(X, "unif", a_, b_);
- if pval >= a
- printf('pval = %i; a = %i, %i>=%i => Gipoteza mozhet byt prinyata\n', myround(pval, 5), a, myround(pval, 5), a);
- else
- printf('pval = %i; a = %i, %i<%i => Gipoteza nie mozhet byt prinyata.\n', myround(pval, 5), a, myround(pval, 5), a);
- endif
- %_______________________________ЗАДАНИЕ II_____________________________________
- printf('\n\n-------------\n TASK NUMBER 2\n');
- Y = sort(oneOfArrays('ud-3'));
- M = length(Y);
- FNy = []; % Fn(y(k))
- FMy = []; % Fm(y(k))
- FMy0 = []; % Fm(y(k) - 0)
- for k = 1:M
- for j = 2:N-1
- if X(j) <= Y(k) && Y(k) < X(j+1)
- FNy(k) = Fn(j, 'y');
- endif
- endfor
- if Y(k) < X(1)
- FNy(k) = 0;
- elseif Y(k) >= X(N)
- FNy(k) = 1;
- endif
- FMy(k) = Fm(k, 'y');
- FMy0(k) = Fm(k, '0');
- endfor
- FMx = []; %Fm(x(j))
- for j = 1:N
- for k = 2:M-1
- if Y(k) <= X(j) && X(j) < Y(k+1)
- FMx(j) = Fm(k, 'x');
- endif
- endfor
- if X(j) < Y(1)
- FMx(j) = 0;
- elseif X(j) >= Y(M)
- FMx(j) = 1;
- endif
- endfor
- x_ = 0; % x*
- [xmax, j] = max(max( abs(FNx - FMx), abs(FNx0 - FMx) ));
- [ymax, k] = max(max( abs(FNy - FMy), abs(FNy - FMy0) ));
- if xmax > ymax
- Dnm = xmax;
- x_ = X(j);
- jk = j;
- else
- Dnm = ymax;
- x_ = Y(k);
- jk = k;
- endif
- Knm = Dnm*sqrt(N*M/(N+M));
- printf('\n------\nTABLE 2:\n N = %i\n M = %i\n Dnm = %i\n Knm = %i\n x* = %i\n Fn(x*) = %i\n Fn(x*-0) = %i\n Fm(x*) = %i\n Fm(x*-0) = %i\n------\n\n', N, M, myround(Dnm, 5), myround(Knm, 5), x_, myround(Fn(jk, 'x*'), 5), myround(Fn(jk, '0'), 5), myround(Fm(jk, 'x*'), 5), myround(Fm(jk, '0'), 5));
- % графики эмпирических функций наших выборок:
- figure('Name','EDFs');
- plot(X, FNx, 'b', Y, FMy, 'r');
- title('blue - EDF of ud-2; red - EDF of ud-3'), grid on
- set(gca,'xtick', xticks); % xticks и yticks указаны в задании I
- set(gca,'ytick', yticks);
- xlim([left, right]); % так же как и left и right
- ylim([left, high]);
- % Проверка гипотезы о соответствии выборки равномерному распределению
- a = 0.02; % уровень значимости
- % первый способ:
- printf('Hypothesis'' check,\nthe first method:\n');
- ka = K(a);
- if Knm <= ka
- printf('Dn√N = %i; ka = %i, %i<=%i => Gipoteza mozhet byt prinyata;\n', DnN, ka, DnN, ka);
- else
- printf('Dn√N = %i; ka = %i, %i>%i => Gipoteza nie mozhet byt prinyata;\n', DnN, ka, DnN, ka);
- endif
- % второй способ:
- printf('\nthe second method:\n');
- pval = kolmogorov_smirnov_test_2(X, Y);
- if pval >= a
- printf('pval = %i; a = %i, %i>=%i => Gipoteza mozhet byt prinyata\n', myround(pval, 5), a, myround(pval, 5), a);
- else
- printf('pval = %i; a = %i, %i<%i => Gipoteza nie mozhet byt prinyata.\n', myround(pval, 5), a, myround(pval, 5), a);
- endif
- %______________________________________________________________________________
- %%%%%%% ФУНКЦИИ, ВКЛЮЧЕННЫЕ В ОСНОВНУЮ ФУНКЦИЮ %%%%%%%
- function Fn = Fn(j, param) % Fn(x(j) - 0)
- Fn = 0;
- if param == '0'
- Fn = (j - 1)/N;
- else
- Fn = j/N;
- endif
- endfunction
- function Fm = Fm(k, param) % Fm(y(k) - 0)
- Fm = 0;
- if param == '0'
- Fm = (k - 1)/M;
- else
- Fm = k/M;
- endif
- endfunction
- function F = f(x)
- F = 0;
- if x < a_
- F = 0;
- return
- elseif x > b_
- F = 1;
- return
- endif
- F = (x-a_)/(b_-a_);
- endfunction
- function ka = K(a) % критические значения распределения Колмогорова
- ka = 0;
- switch a % уровни значимости
- case 0.01
- ka = 1.63;
- case 0.02
- ka = 1.57;
- case 0.05
- ka = 1.36;
- case 0.1
- ka = 1.22;
- case 0.2
- ka = 1.07;
- endswitch
- endfunction
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- end
- function R = myround(x, k) % округление до 5 знаков после запятой
- R = 0;
- R = round(x*10^k)/10^k;
- endfunction
- function arr = oneOfArrays(a) % выдача массива
- arr = []; %вариант 17
- if a == 'ud-2'
- arr = [ -0.39944, 6.75288, 3.31944, -0.48104, 2.61992, 5.96608, 5.66712, 4.99512, 3.20880, 3.06232, 2.20880, -0.11496, 4.19288, 7.12520, 3.03560, -0.56360, 0.43696, 4.32168, 0.81152, -0.06968, -0.61544, 5.30408, 3.98192, 0.07384, 1.54960, 4.06720, 0.45048, 2.57456, 7.04328, 1.64072, 2.83576, 2.44760, 4.22840, 6.32536, 0.18424, 0.95256, 4.69024, 5.25800, 1.66920, 3.89008, 4.64128, 0.43728, 3.15824, 0.35560, 2.09704, 7.03984, 7.13752, 0.83640, 2.63864, -0.62744, 6.64240, 1.05056, 1.45264, 6.26824, 5.71104, 2.18056, -0.18240, 4.26096, 3.40840, 1.65960, 3.66640, 4.17248, 1.61944, 0.45624, 5.40328, 5.01400, 4.35712, -0.52176, 0.55720, 1.09208, -0.35032, 2.42904, 1.67488, 6.21360, 6.42264, -0.56240, 1.92344, 1.76880, 0.38584, 2.94968, 4.02616, 5.09936, 6.16928, 0.13368, 6.87656, 3.73112, 4.09616, 0.58224, 7.07080, 2.60096, 4.55792, 4.91496, 4.02120, 1.55648, 0.38624, 0.09968, 5.12928, 5.38552, -0.14792, 3.30696, 5.98192, 5.84112, 3.79000, 7.28200, 2.92104, -0.12168, 6.14240, 3.45272, 0.21008, 3.28312, 3.36880, 0.87608, 1.14888, 4.54560, 5.97800, 0.07280, 4.23640, -0.25800, 2.65880, -0.38464, 5.64496, -0.00864, 1.15808, -0.50472, 0.92080, 2.99072, 1.41280, 3.70256, 0.43632, 4.90456, 1.51096, 7.21520, 3.36024, 3.51312, 4.10872, 3.53424, 4.57088, 1.60248, 1.51760, 6.46240, 5.62552, 1.93408, 2.88712, 0.59824, 3.36392, 6.77608, 4.60576, 6.11392, 2.80656, 3.53128, 2.81800, 1.56672, 2.97120, 4.60296, 4.93376, 4.05208, 6.54216, 1.67656, -0.04072, 6.37000, 4.02336, 1.32976, 4.99040, 3.11976, 5.62544, 3.48656, 2.31432, 1.71704, 4.66264, 4.10344, 2.15032, 5.22112, -0.69224, 2.71608, 7.20856, 5.63312, 0.65536, 0.12864, 4.88544, 1.27200, 2.84016, 7.24824, 3.16328, 2.26544, 6.39216, 0.01832, 5.36344, 5.97456, 2.63144, 4.16824, 3.62856, -0.02200, 3.99360, 5.43744, 2.90744, 1.01976, 5.27976, -0.10112, 1.18800, 6.06552, 2.56688, 2.88288, 1.66056, 1.90168, 6.26872, 1.58360, 4.89144, 1.95688, 5.61112, 6.07032, 7.17096, 5.30800, 3.07528, 0.77632, 5.78792, 5.25768, 3.28296, 2.67496, -0.15960, 4.46120, 2.02616, 1.37648, 2.91520, 0.65480, -0.39344 ];
- elseif a == 'ud-3'
- arr = [ 6.31552, 4.11264, 6.56736, -0.48704, 0.43344, 0.60616, 0.90928, 5.76784, 6.62000 6.50536, -0.06320, 4.48152, 1.29048, 0.01656, 3.42600, 4.59536, 4.95592, 2.11648 1.07640, 5.57536, 1.45536, 6.79088, 6.59208, 0.37488, 2.33232, 1.90840, 1.17848 0.49480, 6.47288, 6.96040, 6.07528, 5.53096, 2.33072, 3.07584, 1.08968, 2.48720 6.33360, 1.14640, 1.17712, 4.08704, 5.41472, 1.88368, 3.61904, 6.86976, 2.24624 3.85440, 3.68752, 3.78248, 6.53288, 3.31800, 5.03600, 2.00872, 5.79824, 3.23256 5.09064, 2.22064, 5.92912, 3.36816, 0.60736, 4.61112, 4.09192, 6.24808, 6.29184 6.97784, 7.19656, 1.95384, -0.42848, 4.97408, 4.11192, 4.33032, 5.09344, 0.28168 5.15720, 1.85880, 0.67072, 2.46776, 0.52416, -0.23392, 2.25904, 1.72624, 7.20104 0.10808, 5.30144, 3.00144, 4.38832, 7.01656, 3.00272, 0.46944, 1.89472, 6.84232 -0.51504, 7.13128, 0.48152, 3.97552, 0.25880, -0.33232, 7.15312, 4.35944, 3.67256 2.06088, 2.43432, 2.87704, 1.84080, 0.22936, 3.69592, 1.20304, 0.15944, 3.86696 2.31088, 6.51296, 1.91040, 0.71304, -0.39056, 1.02632, 3.53840, 1.14864, 1.59424 1.21120, 6.30400, 3.31000, 4.15016, 0.44560, 4.75040, 1.24392, 1.93936, 4.10968 5.69208, 2.26176, 0.72632, 5.15096, 5.14464, -0.04216, 6.96768, 1.65728, 6.93440 1.84528, 2.96392, 1.27104, 6.26928, 1.59512, 5.68664, -0.35936, 2.78648, 1.15728 0.42272, 0.85120, 6.88056, 4.27968, 0.44752, 6.06968, 0.91632, 2.80912, 5.19872 5.39200, 6.13736, 6.26920, 3.72552, 5.78648, 4.01912, 0.06312, 5.04096, 6.52192 5.62768, -0.37712, 0.49000, 2.67504, 5.74976, 3.87840, 3.95752, 4.07392, 4.96000 1.08176, 5.18920, 3.07328, 5.69696, 2.26976, 5.53432, 1.39512, 0.16264, 3.91384 ];
- endif
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement