1

Здравствуйте.
Требуется сделать курсовую работу по теории вероятности и математической статистике.
Поставил Octave (на лекциях давали MathCad (под Linux вроде тоже есть, но если не ошибаюсь - платный)) и прочитал этот курс статей: http://xgu.ru/wiki/GNU_Octave.
Несмотря на это, застопорился на первом же задании, в котором для выборок надо найти оценки. В MathCad выборка осуществляется с помощью функции rnorm. В Octave её нет.
Что можно прочитать, чтобы все-таки разобраться и сделать эту курсовую? ab
Заранее спасибо.

Свободу узникам эппла и майкрософта!

2 (23.05.2011 11:36:21 отредактировано Vascom)

Что-то я не вижу в матлабе функции rnorm. Возможно тебе нужна normrnd, так она есть и в octave.

3

rnorm (m, m, s)    Возвращает вектор m случайных чисел, имеющих нормальное распределение. s > 0.
http://www.nsu.ru/matlab/Exponenta_RU/s … st.asp.htm

Свободу узникам эппла и майкрософта!

4

Посмотрел normrnd здесь: http://www.obihiro.ac.jp/~suzukim/masud … e_136.html
Вроде бы то, что нужно.
Спасибо за помощь.

Свободу узникам эппла и майкрософта!

5

Vascom пишет:

в матлабе

Не в матлабе функция, а в маткаде, который нам дают на лекции ab

Свободу узникам эппла и майкрософта!

6

Да, не заметил.
В любом случае Octave - замена именно Matlab, а не Mathcad.

7

Насчет этого я в курсе, но на OpenNet было указано, что заменой MathCad является GAP. Но там опять же было несовпадение функций с MathCad, после чего мне посоветовали Octave.

Свободу узникам эппла и майкрософта!

8

Хм...
Для формирования выборки использовал normrnd, далее, для нахождения выборочного среднего - mean. По идее должно было получиться одно число, т.к., грубо говоря, находим среднее арифмитическое (по формуле).
А вот то, что получилось:

+ открыть спойлер

http://img199.imageshack.us/img199/1197/201105232028431280x800s.png

При этом через MathCad получается все нормально (работа девушки):
http://dl.dropbox.com/u/20415838/%D1%82 … %D1%81.pdf
http://dl.dropbox.com/u/20415838/%E2%84%966.pdf

Свободу узникам эппла и майкрософта!

9 (24.05.2011 11:13:17 отредактировано Vascom)

Дело в том, что mean считает среднее для вектора, а ты подсунул ему матрицу 100х100, вот он для каждого столбца и подсчитал среднее.
Читай help mean

Чтобы создать вектор, команда должна выглядеть так:
normrnd(m,s,ns,nc)
где
ns - число строк
nc - число стобцов.
Если nc не указывать, то будет создана квадратная матрица ns x ns.

10

Vascom пишет:

Читай help mean

Читал прилагающуюся к Octave pdf-ку - там про вектор не заметил

Vascom пишет:

Чтобы создать вектор, команда должна выглядеть так:
normrnd(m,s,ns,nc)
где
ns - число строк
nc - число стобцов.
Если nc не указывать, то будет создана квадратная матрица ns x ns.

Была такая догадка, но также была уверенность в том, что я перевел описание неправильно.

Сейчас вызвал таким образом: normrnd(m, s, n, 1); - вроде все нормально.
Благодарю.

Свободу узникам эппла и майкрософта!

11

Кстати, для мат-статистики вроде люди рекомендуют R. Сам его пока особо не распробовал - не до того было.

12

R - это язык программирования. Матлаб и Octave - несколько другое. А уж тем более Mathcad

13

Battle Coder пишет:

Кстати, для мат-статистики вроде люди рекомендуют R. Сам его пока особо не распробовал - не до того было.

В обозримом будущем мне предстоит сделать курсовик по мат.статистике и в следующем семестре у нас вычислительная математика и вроде как все, поэтому пока не вижу смысла сильно заморачиваться по этому поводу.

Свободу узникам эппла и майкрософта!

14

Я сейчас не могу понять одного: стало интересно и я посмотрел какие числа заносятся в выборку.
Выборки получаются следующим образом:

X = normrnd(m, s, n, 1);
Y = normrnd(m, s, n, 1);

Где m = 0, s = 1, n = 180.
При этом в выборке X вроде как все нормально (на таком объеме проверить сложновато), а выборка Y состоит из 180-ти одинаковых чисел. Я думаю, что все-таки так не должно быть.
В чем ошибка?

Свободу узникам эппла и майкрософта!

15

Извиняюсь. Была моя ошибка. Случайно нажал не ту кнопку на клаве, в результате чего в цикле выполнялось не вычитание, а присваивание ab

Свободу узникам эппла и майкрософта!

16

И снова прошу вашей помощи.

Имеется код:

# -------------- [Четвертое задание] --------------
# Для X построить эмпирическую кривую плотности
# распределения, разбив интервал (X(1), X(n)) на 10
# интервалов. На этом же графике изобразить
# теоретическую кривую

function tmp = xb(u, n)
  if (u<0)
    tmp = 0;
  else
    tmp = 1/n;
  endif
endfunction

function tmp = fb(u, n, X)
  temp = 0;
  for i = 1:n
    temp += xb(u - X(i), n);
  endfor
  tmp = temp;
endfunction

# Функция для построения эмпирической кривой
# плотности распределения:
function y = fEmp(x, Sx2, Xsr, n, X)
  tmp = 0;
  for i = 1:9
    tmp += (fb(sqrt(Sx2)*0.8*(i-4)+Xsr, n, X) - fb(sqrt(Sx2)*0.8*(i-5)+Xsr, n, X))*(xb(x-(sqrt(Sx2)*0.8*(i-5)+Xsr), n)-xb(x-(sqrt(Sx2)*0.8*(i-4)+Xsr), n))*(n/(0.8*sqrt(Sx2)));
  endfor
  y = tmp;
endfunction

# Строим эмпирическую кривую плотности распределения:
Xe = 0:1:5;
Ye = fEmp(Xe, Sx2, Xsr, n, X);

# Строим теоретическую кривую плотности распределения:
Yt = normpdf(Xe, Xsr, sqrt(Sx2));

# Прорисовываем график:
plot(Xe, Yt, Xe, Ye)
grid("on")
# -------------------------------------------------

Формулы взяты из учебника. Некоторые переменные были определены выше.

Собственно проблема в том, что график, строящийся функцией normpdf, представляет собой прямую линию, а график, строящийся с помощью самописной функции fEmp вообще не выводится.

К сожалению никак не могу понять в чем проблема.

Заранее спасибо.

P.S. На всякий случай выкладываю полностью скрипт, который есть на данный момент:

+ открыть спойлер
# -------------- [Первое задание] --------------
# Для выборок X, Y найти оценки: выборочное среднее
# выборочная дисперсия, оценка центрального момента
# порядка 3 и 4, коэффициент эксцесса, коэффициент
# ассимитрии, оценка корреляционного момента, оценка
# коэффициента корреляции, размах выборки X и Y

n = 180; # Объем выборки
m = 0; # Коэффициент сдвига
s = 1; # Коэффициент масштаба
a = 0.05; # Уровень значимости

# Формируем выборки с нормальным распределением:
X = normrnd(m, s, n, 1);
Y = normrnd(m, s, n, 1);

# Находим выборочное среднее:
Xsr = mean(X)
Ysr = mean(Y)

# Находим выборочную дисперсию:
Sx2 = 0;
Sy2 = 0;
for i = 1:n
  Sx2 += X(i) - Xsr;
  Sy2 += Y(i) - Ysr;
endfor
Sx2 /= n - 1
Sy2 /= n - 1

# Находим оценку центрального момента порядка 3 и 4:
M3X = 0;
M3Y = 0;
M4X = 0;
M4Y = 0;
for i = 1:n
  M3X += (X(i) - Xsr)^3;
  M3Y += (Y(i) - Ysr)^3;
  M4X += (X(i) - Xsr)^4;
  M4Y += (Y(i) - Ysr)^4;
endfor
M3X /= n - 1
M3Y /= n - 1
M4X /= n - 1
M4Y /= n - 1

# Находим коэффициент эксцесса:
Ex = (M4X / Sx2^2) - 3
Ey = (M4Y / Sy2^2) - 3

# Находим коэффициент ассимитрии:
Sx = M3X / Sx2^(3/2)
Sy = M3Y / Sy2^(3/2)

# Находим оценку корреляционного момента:
Rxy = 0;
for i = 1:n
  Rxy += (X(i) - Xsr) * (Y(i) - Ysr);
endfor
Rxy /= n - 1

# Находим оценку коэффициента корреляции:
ro = Rxy / (Sx2^(1/2) * Sy2^(1/2))

# Находим размах выборки:
wX = X(n) - X(1)
wY = Y(n) - Y(1)
# ----------------------------------------------

# -------------- [Второе задание] --------------
# Для оценок по выбоке X построить доверительные
# доверительные интервалы для математического
# ожидания (считая дисперсию известной и
# неизвестной) и дисперсии

# Находим доверительный интервал для математического ожидания
# в случае с известной дисперсией для выборки X:
dims1 = Xsr - ((Sx2^(1/2) / n^(1/2)) * norminv(1-a/2, m, s))
dims2 = Xsr + ((Sx2^(1/2) / n^(1/2)) * norminv(1-a/2, m, s))

# Находим доверительный интервал для математического ожидания
# в случае с неизвестной дисперсией для выборки X:
dimns1 = Xsr - ((Sx2^(1/2) / n^(1/2)) * tinv(1-a/2, n-1))
dimns2 = Xsr + ((Sx2^(1/2) / n^(1/2)) * tinv(1-a/2, n-1))

# Находим доверительный интервал для дисперсии
# для выборки X:
dis1 = (n-1)*Sx2/chi2inv(1-a/2, n-1)
dis2 = (n-1)*Sx2/chi2inv(a/2, n-1)
# ----------------------------------------------

# -------------- [Третье задание] --------------
# По выборкам X, Y построить доверительный интервал
# для коэффициента корреляции

# Определяем доверительный интервал по коэффициенту
# корреляции для выборок X, Y:
z = (1/2)*log((1+Rxy)/(1-Rxy));
z1 = z - tinv(1-a/2, n) * (1/(n-3)^(1/2));
z2 = z + tinv(1-a/2, n) * (1/(n-3)^(1/2));
ro1 = tanh(z1)
ro2 = tanh(z2)
# ----------------------------------------------

# -------------- [Четвертое задание] --------------
# Для X построить эмпирическую кривую плотности
# распределения, разбив интервал (X(1), X(n)) на 10
# интервалов. На этом же графике изобразить
# теоретическую кривую

function tmp = xb(u, n)
  if (u<0)
    tmp = 0;
  else
    tmp = 1/n;
  endif
endfunction

function tmp = fb(u, n, X)
  temp = 0;
  for i = 1:n
    temp += xb(u - X(i), n);
  endfor
  tmp = temp;
endfunction

# Функция для построения эмпирической кривой
# плотности распределения:
function y = fEmp(x, Sx2, Xsr, n, X)
  tmp = 0;
  for i = 1:9
    tmp += (fb(sqrt(Sx2)*0.8*(i-4)+Xsr, n, X) - fb(sqrt(Sx2)*0.8*(i-5)+Xsr, n, X))*(xb(x-(sqrt(Sx2)*0.8*(i-5)+Xsr), n)-xb(x-(sqrt(Sx2)*0.8*(i-4)+Xsr), n))*(n/(0.8*sqrt(Sx2)));
  endfor
  y = tmp;
endfunction

# Строим эмпирическую кривую плотности распределения:
Xe = 0:1:5;
Ye = fEmp(Xe, Sx2, Xsr, n, X);

# Строим теоретическую кривую плотности распределения:
Yt = normpdf(Xe, Xsr, sqrt(Sx2));

# Прорисовываем график:
plot(Xe, Yt, Xe, Ye)
grid("on")
# -------------------------------------------------

# -------------- [Пятое задание] --------------
# ---------------------------------------------

# -------------- [Шестое задание] --------------
# ----------------------------------------------
Свободу узникам эппла и майкрософта!

17

У тебя Xe = 0:1:5;
это что вообще такое? Если интервалы то их должно быть 10. А если данные для которых надо построить кривую плотности распределения, то конечно у тебя будет горизонтальная прямая с такими исходными данными.

По твоей рукописной функции ни чего не строится, потому что Ye у тебя представляет собой одну точку. Вот она и строится, да и то она нулю равна.

В общем как-то всё плохо у тебя в четвёртом задании.

18

Vascom пишет:

R - это язык программирования. Матлаб и Octave - несколько другое. А уж тем более Mathcad

Я бы не назвал R именно языком программирования. То есть, конечно, это язык программирования - но по той же логике и matlab - язык программирования.
R - среда для статистических расчётов. Логично, что у неё свой синтаксис и свой язык программирования... Есть и много оболочек для R.

19

Vascom пишет:

У тебя Xe = 0:1:5;
это что вообще такое? Если интервалы то их должно быть 10. А если данные для которых надо построить кривую плотности распределения, то конечно у тебя будет горизонтальная прямая с такими исходными данными.

А как правильно надо задать? Это данные по координате x для построения графика.

Vascom пишет:

По твоей рукописной функции ни чего не строится, потому что Ye у тебя представляет собой одну точку.

Т.е. я так понимаю определение координаты y надо поставить в цикл? Или можно использовать оператор "." перед вызовом функции?

Свободу узникам эппла и майкрософта!

20

Если Xe это для построения графика, то зачем ты их используешь для вычисления Ye и Yt? Я так понимаю, что для этого тебе надо использовать изначальный массив случайных величин X или какую-то функцию от него (разбитие на участки или что-то около того).

Я не вникал глубоко в твою функцию, какая-то она монстроузная, так что не могу ответить на второй вопрос.

21

Ye и Yt вычисляются для построения эмпирической и теоретической кривой плотности распределения соответственно.
Для вычисления Yt взял функцию normpdf (я так понял, что это аналог функции dnorm в MathCad).
Для вычисления Ye писал свою функцию по аналогии с уже сданным курсовиком, сделанным в MathCad (http://dl.dropbox.com/u/20415838/%D0%BE … %D0%A1.pdf)

Также возник вопрос какой аналог у функции pnorm в Octave?

Свободу узникам эппла и майкрософта!

22

В целом это я понял. Только не понял зачем ты используешь Xe вместо X для вычисления Ye и Yt.

Снова, Octave не аналог MathCad. Не факт, что там есть такая же функция. Читай описание функции в маткаде и ищи в описании октавы аналог.

23

X - нормированый вектор. Xe - координата по х для графика плотности распределения. Применяется для расчета Ye и Yt из-за того, что обе кривые должны быть на одном графике. Либо я вас неправильно понял.
Искал именно по описанию, но normpdf подходит как для pnorm, так и для dnorm, имхо.

Свободу узникам эппла и майкрософта!

24

Ну гляди, здесь
plot(Xe, Yt, Xe, Ye)
да, надо использовать Xe.
Но здесь-то зачем?
Ye = fEmp(Xe, Sx2, Xsr, n, X);
Yt = normpdf(Xe, Xsr, sqrt(Sx2));

Получается ты строишь кривую плотности распределения для вектора Xe, который равен 0 1 2 3 4 5
Понятно?

25

Xe - вектор, представляющий собой арифметическую прогрессию, который применяется для расчета координаты Ye и Yt и для построения обоих кривых. X - это нормированный вектор, который также применяется для расчета координат Ye и Yt (в функции используются оба вектора).
Если в функцию fEmp не передавать Xe, а в функции normpdf заменить аргумент Xe на X, то получается следующее:

+ открыть спойлер

http://img855.imageshack.us/img855/2268/201106020827451280x800s.png

При этом fEmp будет выглядеть следующим образом (другие две функции не изменялись):

# Функция для построения эмпирической кривой
# плотности распределения:
function y = fEmp(x, Sx2, Xsr, n)
  tmp = 0;
  for i = 1:9
    tmp += (fb(sqrt(Sx2)*0.8*(i-4)+Xsr, n, x) - fb(sqrt(Sx2)*0.8*(i-5)+Xsr, n, x))*(xb(x-(sqrt(Sx2)*0.8*(i-5)+Xsr), n)-xb(x-(sqrt(Sx2)*0.8*(i-4)+Xsr), n))*(n/(0.8*sqrt(Sx2)));
  endfor
  y = tmp;
endfunction
Свободу узникам эппла и майкрософта!

26

-- Function File:  normpdf (X, M, S)
     For each element of X, compute the probability density function
     (PDF) at X of the normal distribution with mean M and standard
     deviation S.

     Default values are M = 0, S = 1

Ну и где здесь нужна какая-то арифметическая прогрессия Xe?

27 (02.06.2011 10:37:45 отредактировано Osanve)

Vascom пишет:

Ну и где здесь нужна какая-то арифметическая прогрессия Xe?

Спасибо, помогло.

Мне удалось добиться того, чтобы выводилась теоретическая кривая плотности распределения нормированного вектора.
Никак не могу понять, что требуется сделать с функцией для эмпирической кривой, чтобы она тоже выводилась. В указанном выше примере курсовой писались три своих функции, которые я переписал для Octave (мне кажется переписал правильно), других способов я не знаю, а гугл выдает что-то невнятное ac

Свободу узникам эппла и майкрософта!

28

А можешь написать нужные функции в виде формул?

29

По данной формуле вычисляется график плотности нормального распределения (т.к. не знаю как сюда поместить формулы, взял изображение с сайта. Не понимаю для чего они дописали right, просто в оригинальной формуле его нет (смотрю по учебнику Гмурмана - Теория вероятностей и математическая статистика)):
http://www.nsu.ru/matlab/Exponenta_RU/soft/Mathcad/UsersGuide/chapter13/images13/f13.gif

Как я понял, то для нахождения эмпирической кривой требуется найти значения функции только в некоторых точках, а потом построить ломаную. Но т.к. сам полностью не разобрался - взял за основу уже сданную работу (выкладывал выше), где написан программный модуль на функцию xb со следующей логикой работы: если переданный параметр меньше нуля, то на выходе 0, иначе на выходе 1/n, где n - объем выборки
Определена функция fb, которая возвращает сумму возвращаемых значений функцией xb, которой передается параметр ввиде разницы u - Xi, где u - параметр, переданный функции fb, а Xi - i-ый элемент выборки X.
Определен вектор t (зависит от j, представляющей собой арифметическую прогрессию 1:1:10), который определяется как произведение выборочного среднеквадратичного отклонения, коэффициента шага разбиения и j-5 с дальнейшим вычитанием из этого произведения выборочного среднего.
Сама функция для построения графика возвращает сумму разности произведений:
    произведение №1: (fb(t(j+1)) - fb(t(j)))*(xb(w-t(j)))
    произведение №2: xb(w-t(j+1))*(n/(k*Sx))
        где j - счетчик (1..9) итераций суммы, w - параметр, передаваемый функции fx (данная функция), n - объем выборки, k - коэффициент шага разбиения, Sx - выборочное среднеквадратичное отклонение

Свободу узникам эппла и майкрософта!

30

Каким-то чудом удалось сдать все-таки эту курсовую, хотя, вроде-как, 4-6 задания там неполностью правильные.
Может быть кого-то заинтересует или поможет, поэтому выкладываю полностью скрипт, который получился:

# TViMS.m - скрипт для выполнения курсовой работы
#
# Выполнил: Вытовтов П.К.
#           гр. № 4-78-1
#
# Среда разработки: GNU Octave, version 3.2.4

# -------------- [Первое задание] --------------
# Для выборок X, Y найти оценки: выборочное среднее
# выборочная дисперсия, оценка центрального момента
# порядка 3 и 4, коэффициент эксцесса, коэффициент
# ассимитрии, оценка корреляционного момента, оценка
# коэффициента корреляции, размах выборки X и Y

n = 180; # Объем выборки
m = 0; # Коэффициент сдвига
s = 1; # Коэффициент масштаба
a = 0.05; # Уровень значимости

# Формируем выборки с нормальным распределением:
X = normrnd(m, s, n, 1);
Y = normrnd(m, s, n, 1);

# Находим выборочное среднее:
Xsr = mean(X)
Ysr = mean(Y)

# Находим выборочную дисперсию:
Sx2 = 0;
Sy2 = 0;
for i = 1:n
  Sx2 += X(i) - Xsr;
  Sy2 += Y(i) - Ysr;
endfor
Sx2 /= n - 1
Sy2 /= n - 1

# Находим оценку центрального момента порядка 3 и 4:
M3X = 0;
M3Y = 0;
M4X = 0;
M4Y = 0;
for i = 1:n
  M3X += (X(i) - Xsr)^3;
  M3Y += (Y(i) - Ysr)^3;
  M4X += (X(i) - Xsr)^4;
  M4Y += (Y(i) - Ysr)^4;
endfor
M3X /= n - 1
M3Y /= n - 1
M4X /= n - 1
M4Y /= n - 1

# Находим коэффициент эксцесса:
Ex = (M4X / Sx2^2) - 3
Ey = (M4Y / Sy2^2) - 3

# Находим коэффициент ассимитрии:
Sx = M3X / Sx2^(3/2)
Sy = M3Y / Sy2^(3/2)

# Находим оценку корреляционного момента:
Rxy = 0;
for i = 1:n
  Rxy += (X(i) - Xsr) * (Y(i) - Ysr);
endfor
Rxy /= n - 1

# Находим оценку коэффициента корреляции:
ro = Rxy / (Sx2^(1/2) * Sy2^(1/2))

# Сортируем для нахождения размаха:
for i = 1:n
  for j = 1:n
    if(X(i)<X(j))
      tmp = X(i);
      X(i) = X(j);
      X(j) = tmp;
    endif
    if(Y(i)<Y(j))
      tmp = Y(i);
      Y(i) = Y(j);
      Y(j) = tmp;
    endif
  endfor
endfor

# Находим размах выборки:
wX = X(n) - X(1)
wY = Y(n) - Y(1)
# ----------------------------------------------

# -------------- [Второе задание] --------------
# Для оценок по выбоке X построить доверительные
# доверительные интервалы для математического
# ожидания (считая дисперсию известной и
# неизвестной) и дисперсии

# Находим доверительный интервал для математического ожидания
# в случае с известной дисперсией для выборки X:
dims1 = Xsr - ((Sx2^(1/2) / n^(1/2)) * normcdf(1-a/2, m, s))
dims2 = Xsr + ((Sx2^(1/2) / n^(1/2)) * normcdf(1-a/2, m, s))

# Находим доверительный интервал для математического ожидания
# в случае с неизвестной дисперсией для выборки X:
dimns1 = Xsr - ((Sx2^(1/2) / n^(1/2)) * tcdf(1-a/2, n-1))
dimns2 = Xsr + ((Sx2^(1/2) / n^(1/2)) * tcdf(1-a/2, n-1))

# Находим доверительный интервал для дисперсии
# для выборки X:
dis1 = (n-1)*Sx2/chi2cdf(1-a/2, n-1)
dis2 = (n-1)*Sx2/chi2cdf(a/2, n-1)
# ----------------------------------------------

# -------------- [Третье задание] --------------
# По выборкам X, Y построить доверительный интервал
# для коэффициента корреляции

# Определяем доверительный интервал по коэффициенту
# корреляции для выборок X, Y:
z = (1/2)*log((1+Rxy)/(1-Rxy));
z1 = z - tcdf(1-a/2, n) * (1/(n-3)^(1/2));
z2 = z + tcdf(1-a/2, n) * (1/(n-3)^(1/2));
ro1 = tanh(z1)
ro2 = tanh(z2)
# ----------------------------------------------

# -------------- [Четвертое задание] --------------
# Для X построить эмпирическую кривую плотности
# распределения, разбив интервал (X(1), X(n)) на 10
# интервалов. На этом же графике изобразить
# теоретическую кривую

# Строим теоретическую кривую плотности распределения:
Ypt = normpdf(X);

# Строим эмпирическую кривую плотности распределения:
j = 1;
Xe = [0 0 0 0 0 0 0 0 0 0];
for i = 1:18:n
  Xe(j) = X(i);
  j++;
endfor
Ype = normpdf(Xe);

# Прорисовываем график:
#plot(X, Yt, Xe, Ye)
#grid("on")
# -------------------------------------------------

# -------------- [Пятое задание] --------------
# Для X построить эмпирическую интегральную функцию
# распределения и теоретическую.

function tmp = xb(u, n)
  if(u<0)
    tmp = 0;
  else
    tmp = 1 / n;
  endif
endfunction

function temp = fb(u, X, n)
  tmp = 0;
  for i = 1:n
    tmp += xb(u - X(i), n);
  endfor
  temp = tmp;
endfunction

# Строим эмпирическую кривую
for i = 1:n
  Yie(i) = fb(X(i), X, n);
endfor

# Строим теоретическую кривую
Yit = normcdf(X);

# Прописовываем график
#plot(X, Ye, X, Yt)
#grid("on")
# ---------------------------------------------

# -------------- [Шестое задание] --------------
# Проверить гипотезы: о величине среднего, дисперсии,
# о нормальном законе распределения по Пирсону
# и по Колмогорову

# Проверка гипотезы о величине среднего:
Sx = sqrt(Sx2/n);
t = (Xsr - a)/Sx;
tKrit = tcdf(1-(a/2), n-1);
disp("Выборка X (о величине среднего):");
if(tKrit>t)
  disp("Гипотеза отклоняется");
else
  disp("Гипотеза не отклоняется");
endif
Sy = sqrt(Sy2/n);
t = (Ysr - a)/Sy;
disp("Выборка Y (о величине среднего):");
if(tKrit>t)
  disp("Гипотеза отклоняется");
else
  disp("Гипотеза не отклоняется");
endif

# Проверка гипотезы о величине дисперсии:
HIx2 = n*Sx2/s;
HIy2 = n*Sy2/s;
HIv2 = chi2cdf(a, n-1);
disp("Выборка X (о величине дисперсии):");
if(HIx2>HIv2)
  disp("Гипотеза отклоняется");
else
  disp("Гипотеза не отклоняется");
endif
disp("Выборка Y (о величине дисперсии):");
if(HIy2>HIv2)
  disp("Гипотеза отклоняется");
else
  disp("Гипотеза не отклоняется");
endif

# Проверка гипотезы о нормальном законе
# распределения по Пирсону (хи-квадрат)
function tmp = Pi(Xsr, Sx2)
  tmp = ((((i+1)*18) - Xsr)/(sqrt(Sx2))) - (((i*18) - Xsr)/(sqrt(Sx2)));
endfunction

HI2Xe = 0;
HI2Ye = 0;
for i = 1:9
  HI2Xe += (18 - 18 * Pi(Xsr, Sx2))^2 / (18 * Pi(Xsr, Sx2));
  HI2Ye += (18 - 18 * Pi(Ysr, Sy2))^2 / (18 * Pi(Ysr, Sy2));
endfor
HI2T = chi2cdf(a, n-3);
disp("Выборка X (о нормальном законе по Пирсону):");
if(HI2Xe<HI2T)
  disp("Гипотеза не отклоняется");
else
  disp("Гипотеза отклоняется");
endif;
disp("Выборка Y (о нормальном законе по Пирсону):");
if(HI2Ye<HI2T)
  disp("Гипотеза не отклоняется");
else
  disp("Гипотеза отклоняется");
endif

# Проверка гипотезы о нормальном законе
# распределения по Колмогорову:
Dnx1 = [0 0 0 0 0 0 0 0 0];
Dny1 = [0 0 0 0 0 0 0 0 0];
for i = 1:9
  Dnx1(i) += normcdf(Xe(i)) - fb((Sx2 * 0.8 * (j - 4) + Xsr), X, n) - fb((Sx2 * 0.8 * (j - 5) + Xsr), X, n);
  Dny1(i) += normcdf(Xe(i)) - fb((Sy2 * 0.8 * (j - 4) + Ysr), Y, n) - fb((Sy2 * 0.8 * (j - 5) + Ysr), Y, n);
endfor
Dnx = max(Dnx1);
Dny = max(Dny1);
l = 1.36;
Dnx *= sqrt(n);
Dny *= sqrt(n);
disp("Выборка X (по Колмогорову):");
if(Dnx<l)
  disp("Гипотеза не отклоняется");
else
  disp("Гипотеза отклоняется");
endif
disp("Выборка Y (по Колмогорову):");
if(Dny<l)
  disp("Гипотеза не отклоняется");
else
  disp("Гипотеза отклоняется");
endif
# ----------------------------------------------

# -------------- [График к 4-ому и 5-ому заданию] --------------
plot(X, Ypt, Xe, Ype, X, Yie, X, Yit)
legend('boxon')
legend("4 - Teoreticheskaya", "4 - Empiricheskaya", "5 - Empiricheskaya", "5 - Teoreticheskaya", 2)
grid("on")
# --------------------------------------------------------------

Спасибо всем, кто помогал выполнить данную работу. ab

Свободу узникам эппла и майкрософта!