Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function task1
- m = len = num = 0;
- k = denum = 1;
- N = 200; % по условию
- n = w = x = xx = [];
- xx = sort(oneOfArrays(1)); % массив xx[] - это отсортированная выборка, оттого, какая цифра стоит в функции oneOfArrays() зависит, какое задание мы делаем по счёту
- x(1) = xx(1);
- for i = 2:200
- if xx(i) == xx(i-1)
- m = m + 1;
- else
- k = k+1;
- m = 0;
- x = [x, xx(i)];
- endif
- n(k) = m + 1;
- endfor
- w = n/N;
- if sum(w) == 1
- printf('summa w = 1\n\n');
- else
- printf('!!! summa w != 1\n\n');
- endif
- len = length(n);
- figure;
- plot(x, w); %полигон относительных частот
- printf('Stat series:\n\n'); disp([x; n; w]); printf('\n');
- % Массивы x[], n[] и w[] представляют собой статистический ряд, где:
- % в массиве x[] хранятся все различные(!) занчения, встреченные в выборке xx[];
- % в массиве n[] хранится число этих значений, то есть частоты;
- % в массиве w[] хранятся относительные частоты, то есть частоты, деленные на общее количество элементов в выборке xx[];
- X = 0; % выборочное среднее
- X = sampleMoment(x, w, 1, X)
- D = 0; % выборочная дисперсия
- D = sampleMoment(x, w, 2, X)
- sigma = 0; %выборочное среднее квадратическое отклонение
- sigma = sqrt(D)
- M0 = 0; %выборочная мода
- M0 = sampleMode(x, n, len)
- Me = 0; %выборочная медиана
- Me = sampleMedian(x, w, len)
- gamma1 = gamma2 = 0; % выборочные коэффициенты
- if sigma ~= 0
- num = sampleMoment(x, w, 3, X);
- denum = sigma^3;
- gamma1 = num/denum % выборочный коэффициент асимметрии
- num = sampleMoment(x, w, 4, X);
- denum = sigma^4;
- gamma2 = num/denum - 3 % выборочный коэффициент эксцесса
- endif
- figure;
- F = 0;
- x = [x, x(end)+1];
- x = [x, x(end)+1];
- interval = -1:0.1:0;
- for i = 1:len+1
- line(interval, F, "linewidth", 1.75);
- interval = x(i):0.1:x(i+1);
- F = edf(x(i), x, w, len);
- endfor
- endfunction
- function Mu0 = sampleMoment(x, w, k, X) % выборочный (если X != 0, то еще и центральный) момент k-ого порядка
- Mu0 = 0;
- Mu0 = sum(((x.-X).^k).*w);
- endfunction
- function M0 = sampleMode(x, n, len) % выборочная мода
- M0 = nmax = imax = j = 0;
- nmax = max(n);
- for i = 1:len
- if n(i) == nmax
- imax = i;
- if (i ~= len) && (n(i+1) == n(i)) % тут
- j = i; % я
- endif % хз
- endif
- endfor
- if j == 0
- M0 = x(imax);
- else
- M0 = 1/2*(x(imax) + x(j)); % и тут, соответсвенно, тоже хз
- endif
- endfunction
- function Me = sampleMedian(x, w, len) %выборочная медиана
- Me = EDF = EDF1 = 0;
- for i = 2:len-1
- EDF1 = edf(x(i-1), x, w, len);
- EDF = edf(x(i), x, w, len);
- if (EDF1 < 0.5) && (0.5 < EDF)
- Me = x(i);
- break
- elseif EDF == 0.5
- Me = 0.5*(x(i) + x(i+1));
- break
- endif
- endfor
- endfunction
- function F = edf(y, x, w, len) % emperical distribution function (эмпирическая функция распределения)
- F = 0;
- for i = 1:len
- if x(i) <= y
- F += w(i);
- endif
- endfor
- endfunction
- function arr = oneOfArrays(a)
- arr = [];
- if a == 1
- arr1 = [ 5, 5, 2, 5, 5, 3, 5, 4, 4, 9, 5, 3, 3, 5, 7, 5, 3, 4, 7, 5, 5, 5, 5, 5, 3, 3, 5, 5, 7, 6, 4, 4, 7, 4, 4, 3, 3, 4, 3, 3, 3, 4, 6, 2, 5, 6, 4, 3, 6, 3, 3, 5, 2, 4, 2, 5, 3, 5, 3, 4, 6, 3, 4, 8, 5, 5, 5, 5, 6, 6, 4, 7, 4, 4, 5, 6, 7, 3, 7, 4, 5, 5, 5, 4, 3, 4, 6, 5, 4, 5, 3, 4, 4, 6, 3, 7, 10, 4, 6, 5,5, 3, 0, 4, 0, 6, 2, 5, 4, 7, 4, 4, 4, 2, 5, 5, 6, 6, 7, 3, 5, 7, 6, 5, 4, 7, 4, 7, 2, 9, 3, 4, 4, 8, 5, 6, 4, 4, 5, 6, 3, 5, 1, 6, 8, 4, 7, 4, 8, 1, 5, 0, 5, 5, 5, 7, 6, 3, 4, 3, 6, 3, 4, 9, 1, 3, 3, 8, 5, 3, 4, 4, 7, 7, 5, 6, 4, 7, 5, 3, 2, 5, 5, 4, 2, 3, 5, 2, 1, 8, 6, 4, 3, 3, 7, 6, 2, 6, 5, 6 ];
- elseif a == 2
- arr2 = [ 0, 0, 10, 2, 5, 0, 6, 5, 5, 7, 5, 1, 2, 1, 3, 7, 6, 2, 0, 9, 2, 3, 6, 5, 0, 1, 9, 6, 2, 4, 4, 13, 5, 0, 0, 2, 3, 5, 2, 0, 8, 1, 0, 0, 3, 2, 2, 1,0, 0, 5, 2, 4, 10, 5, 2, 0, 13, 1, 0, 1, 0, 5, 4, 0, 14, 1, 4, 5, 1, 2, 7, 6, 4, 0, 4, 1, 0, 13, 3, 4, 4, 1, 4, 4, 0, 7, 1, 11, 0, 1, 3, 2, 3, 2, 1, 8, 1,1, 0, 0, 3, 2, 5, 4, 1, 4, 0, 15, 5, 2, 10, 4, 9, 2, 1, 4, 2, 0, 1, 3, 5, 2, 4, 3, 5, 28, 1, 1, 0, 4, 2, 2, 2, 2, 0, 3, 2, 4, 0, 3, 0, 0, 2, 3, 5, 2, 0, 0, 5, 1, 4, 6, 5, 3, 3, 7, 4, 3, 5, 2, 5, 15, 8, 0, 0, 1, 0, 20, 0, 4, 1, 1, 6, 1, 4, 2, 19, 3, 4, 1, 1, 0, 7, 2, 1, 0, 2, 4, 2, 1, 2, 10, 3, 0, 1, 1, 10, 0, 1 ];
- elseif a == 3
- arr3 = [ 1, 2, 1, 1, 0, 5, 6, 0, 0, 5, 1, 0, 3, 2, 3, 4, 1, 2, 1, 2, 4, 0, 0, 0, 2, 3, 4, 1, 0, 0, 2, 5, 2, 1, 2, 1, 3, 1, 2, 0, 1, 1, 0, 1, 2, 1, 3, 0, 1, 2, 2, 1, 0, 0, 4, 3, 2, 1, 2, 2, 3, 2, 3, 0, 2, 3, 4, 3, 0, 1, 5, 1, 3, 5, 1, 0, 4, 3, 3, 2, 2, 3, 2, 1, 3, 1, 1, 2, 5, 2, 1, 2, 1, 5, 1, 1, 2, 0, 2, 2, 1, 1, 3, 3, 2, 2, 1, 3, 2, 0, 3, 3, 1, 2, 1, 1, 2, 4, 5, 1, 2, 4, 3, 1, 0, 2, 2, 4, 0, 4, 2, 0, 4, 1, 3, 4, 0, 3, 2, 0, 1, 3, 2, 1, 2, 2, 1, 1, 1, 4, 0, 1,3, 3, 2, 1, 2, 3, 3, 4, 1, 3, 0, 2, 5, 2, 4, 3, 1, 3, 1, 2, 3, 1, 5, 2, 2, 0, 3, 3, 2, 3, 0, 0, 2, 0, 2, 2, 3, 2, 3, 1, 3, 2, 4, 1, 4, 1, 0, 1 ];
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement