SCILAB: Библиотеки
Глава 6. Библиотека статистики
Общая критика:
Раздел статистики впервые представлен в версии 2.7. Поэтому в нем попадаются ошибки.
Сообщайте о найденных ошибках производителю INRIA!!! Это в наших общих интересах.
В описании определении синтаксиса команд зачастую (и даже как правило) не приводится
формула, по которой вычисляется результат данной команды. Мне приходилось
подбирать эти формулы самой, исходя из текста подпрограмм. Это большая оплошность производителя: всегда проверяйте результаты выполнения команд на простых примерах.
Может быть вычисляется совсем не то, что Вы ожидаете.
Для тех, кто хочет самостоятельно ознакомится с текстовым содержанием подпрограммы библиотеки, следует найти интересующий Вас файл с расширением.sci в подкаталоге Scilab../macros/statistics/, открыть его в любом текстовым редакторе и попытаться понять его содержание. Имена файлов совпадают с именами подпрограмм. Текст подпрограмм написан на языке пакета Scilab.
Содержание главы:
Электронные учебники по статистике • Как вычислить выборочное среднее значение?
• Как вычислить среднее геометрическое?
• Как вычислить гармоническое среднее выборки случайных чисел?
• Как найти размах (амплитуду) распределения случайных величин?
• Как вычислить медиану для распределения величин?
• Как вычислить квартиль распределения случайных величин?
• Как вычислить квартильный размах распределения величин?
• Как вычислить процентиль распределения?
• Как вычислить центральные моменты всех порядков?
• Как вычислить нецентральные моменты всех порядков?
• Как вычислить простое (абсолютное) среднее отклонение?
• Как вычислить среднее квадратичное отклонение?
• Как вычислить дисперсию значений вектора или матрицы?
• Как преобразовать матрицу в «усредненную» по амплитуде?
• Как вычислить соотношение Фишера (Fischer ratio)?
• Как вычислить частоту встречаемости значения случайной величины?
• Как вычислить коэффициенты регрессии двух величин?
• Как вычислить коэффициент корреляции?
• Как вычислить ковариацию двух величин?
• Замечание: О способах создания последовательность случайных чисел для использования в примерах смотрите в главе 7 "Библиотека функций распределения" Удобное для статистики графическое представление в виде гистограммы осуществляется с помощью команд histplot и hist3d (смотри главу 5 "Графика").
Электронные учебники по статистике А. Д. Манита. Учебник по теории вероятности http://teorveronline.narod.ru/teorver73.html" Учебник StatSoft http://www.statsoft.ru/home/textbook/default.htm • Учебник "Математическая статистика" http://jenpc.nstu.nsk.su/uchebnik2/ • Электронный статистический словарь • http://www.kgtu.runnet.ru/WD/TUTOR/textbook/glossary/default.htm Как вычислить выборочное среднее значение?
Способ 1.
С помощью команды mean.
Для набора величин (x1,x2,...,xn) выборочное среднее совпадает со средним арифметическим и вычисляется по формуле:
где n - объем выборки.
Синтаксис y=mean(x) y=mean(x,'r') y=mean(x,'c') Параметры x : действительный вектор или матрица y : скаляр или вектор Если x - матрица, у которой число строк равно n_row, а число столбцов равно n_col, то среднее вычисляется как сумма всех элементов матрицы, деленная на произведения числа строк на число столбцов:
y=(1/(n_row*n_col))*sum(x) Команда y=mean(x,'r') (или y=mean(x,1)) является "строковым" средним значением.
Возвращает вектор-строку y(j)= mean(x(:,j)) Если x является матрицей:
y=mean(x,'r') (или y=mean(x,1)) возвращает в качестве каждого элемента вектора-строки y среднее арифметическое по соответствующему столбцу матрицы x.
y(j)= mean(x(:,j)) y=mean(x,'c') (или y=mean(x,2)) возвращает в качестве каждого элемента вектора-столбца y среднее арифметическое по соответствующей строке матрицы x.
Пример.
x=[1,2,10;7,7.1,7.01];
Результат:
! 1. 2. 10. !
! 7. 7.1 7.01 !
M=mean(x) // (1+2+10+7+7.1+7.01)/ Результат:
5. mean(x,'r') Результат:
M_col = ! 4. 4.55 8.505 ! // !(1+7)/2 (2+7.1)/2 (10+7.2)/1!
mean(x,'c') Результат:
M_col= ! 4.3333333 ! // (1+2+10)/ ! 7.0366667 ! // (7+7.1+7.01)/ Способ 2.
С помощью команды meanf вычисляется среднее арифметическое с учетом веса.
Для набора величин (x1,x2,...,xn) выборочное среднее совпадает со средним арифметическим и вычисляется по формуле:
где n - объем выборки.
Синтаксис y=meanf(x,fre) y=meanf(x,fre,'r') или m=meanf(x,fre,1) y=meanf(x,fre,'c') или m=meanf(x,fre,2) Параметры x : действительный вектор или матрица fre : действительный вектор или матрица той же размерности, что и x Команда y=meanf(x,fre,'r') (или y=mean(x,fre,2)) является "строковым" средним значением.
Команда y=meanf(x,fre,'c') (или y=meanf(x,fre,2)) является "столбцовым" значением.
Как найти среднее геометрическое?
С помощью команды geomean.
Для набора величин (x1,x2,...,xn) выборочное среднее совпадает со средним арифметическим и вычисляется по формуле:
где n - объем выборки.
Синтаксис gm=geomean(x) gm=geomean(x,'r')( или gm=geomean(x,1)) gm=geomean(x,'c')(или gm=geomean(x,2)) Параметры x :действительный или комплексный вектор (матрица) gm: скаляр, вектор-строка или вектор-столбец.
Команды вычисляет среднее геометрическое для вектора или матрицы x.
Для вектора или матрицы x команда gm=geomean(x) возвращает скаляр gm, равный геометрическому среднему всех элементов x.
Команда gm=geomean(x,'r') (или gm=gmean(x,1) ) возвращает в качестве каждого элемента вектора-строки gm среднее геометрическое по соответствующему столбцу матрицы x.
Команда gm=geomean(x,'c') (или gm=gmean(x,2) ) возвращает в качестве каждого элемента вектора-столбца gm среднее геометрическое по соответствующей строке матрицы x.
Если произведение всех элементов 1.
Замечание:
Если все веса матрицы x равны, т.е. все элементы матрицы fre равны единице, то результаты выполнения команд variancef и variance будут совпадать.
Пример.
x=[2 5 7 1];
fre=[1 1 1 1];
v=variance(x) Результат:
7. vf=variancef(x,fre) Результат:
7.5833333 // совпадает с v Как преобразовать матрицу в «усредненную» по амплитуде?
Способ 1.
С помощью команды center. В результате работы команды произойдет уменьшение значения каждого элемента матрицы данных (т. е. каждую случайную величину)на среднюю амплитуду, равную среднему арифметическому из элементов матрицы. (англ.
термин = mean deviation).
Синтаксис s=center(x) s=center(x,'r') или s=center(x,1) s=center(x,'c') или s=center(x,2) Параметры x, s: действительный или комплексный вектор (матрица) Команда вычисляет из матрицы x в «усредненную» матрицу s, которая вычисляется следующим образом:
s - это матрица, каждый элемент которой s(i,j) вычисляется как разность соответствующего элемента x(i,j) и xbar:
s(i,j )=x(i,j)-xbar, где xbar=(x(1)+x(2)+…+x(n))/n Значение величины xbar является выборочным средним значением матрицы x и может быть вычислено с помощью команды mean(x).
Фактически из всех элементов матрицы вычитается значение выборочного среднего матрицы.
s= center (x,'r') (или s= center (x,1) ) «строковое» среднеквадратичное (или “стандартное”)отклонение.
s= center (x,'c') (или s= center (x,2) ) «столбцовое» среднеквадратичное отклонение.
Пример.
x=[0.2113249 0.0002211 0.6653811; 0.7560439 0.3303271 0.6283918] s=center(x) Результат:
! -.2206234 -.4317272.2334328 !
!.3240956 -.1016212.1964435 !
//Для сравнения bar=mean(x);
z=x-bar Результат:
! -.2206234 -.4317272.2334328 !
!.3240956 -.1016212.1964435 !
Мы видим, что значение s совпадает со значением z.
Способ 2.
С помощью команды wcenter.
Команда производит преобразование матрицы в "усредненную" (mean deviation)по амплитуде с учетом дисперсии по следующей формуле (для вектора):
Делитель в формуле для si быть вычислен с помощью команд stdev(x), величина Mx является средним арифметическим и может быть получено с помощью команды mean.
Синтаксис s=wcenter(x) s=wcenter(x,'r') или s=wcenter(x,1) s=wcenter(x,'c') или s=wcenter(x,2) Параметры x, s: действительный или комплексный вектор (матрица) Команда s=wcenter(x,'r') (или s=wcenter(x,1)) - это «строковый» вариант команды, возвращающий s(i,j) как (x(i,j)-xbarv(j))/sigmav(j), где xbarv(j) - выборочное среднее значение (команда mean) значений элементов j-го столбца и sigmav(j) является стандартным отклонением j-го столбца матрицы x.
Команда s=wcenter(x,'r') (или s=wcenter(x,1)) - это «столбцовый» вариант команды, возвращающий s(i,j) как (x(i,j)-xbarv(j))/sigmav(j), где xbarv(j) - выборочное среднее значение (mean) значений элементов j-го строки и sigmav(j) является стандартным отклонением (standard deviation) j-й строки матрицы x.
Пример.
x=[21 2 6 7];
n=length(x);
wc=wcenter(x) // для проверки sigma=stdev(x);
mx=mean(x);
s=zeros(n);
for i = 1:n, s(i)=(x(i)-mx)/sigma;end;
w=s' Результат:
! 1.4481324 -.8447439 -.3620331 -.2413554 !
! 1.4481324 -.8447439 -.3620331 -.2413554 !
Как вычислить соотношение Фишера (Fischer ratio)?
Способ 1.
C помощью команды ftest.
Синтаксис f=ftest(samples) [f,p]=ftest(samples) Параметры samples : действительная или комплексная матрица размером nr на nc Пример.
samples=[46 55 54;
53 54 50;
49 58 51;
50 61 51;
46 52 49] [f,p]=ftest(samples) Способ 2.
С помощью команды ftuneq. Вычисляется соотношение Фишера для образцов неравной длины. Смотри подробно help ftuneq.
Как вычислить частоту встречаемости значения случайной величины?
С помощью команды tabul.
Синтаксис [m]=tabul(x) Параметры x : действительный, комплексный вектор (матрица) или вектор (матрица) из символьных переменных Если x - числовой вектор или матрица, то m: матрица из двух столбцов, в первом из которых содержатся числовые значения вектора x, отсортированные по убыванию (упорядоченный по убыванию вариационный ряд), а во втором содержится целое число, равное тому, как часто повторяется это значение в векторе x. Если элементы x являются символьными, то m - является списком.
Пример 1.
t=tabul(x) Результат:
Пример 2.
y=["cat" "cat" "dog" "dog" "pig"];
t=tabul(y) Результат:
t(1) !cat !
!dog !
!pig !
t(2) ! 2. !
! 2. !
! 1. !
Как вычислить коэффициенты регрессии двух величин?
С помощью команды regress. Регрессия в теории вероятностей и математической статистике, зависимость среднего значения какой-либо величины от некоторой другой величины или от нескольких величин.
Результатом выполнения команды будет такая матрица сoefs =[a b] размером 1 на 2, что y=C1+C2*x будет уравнением, аппроксимирующим наши дискретные данные по методу наименьших квадратов согласно регрессионной модели.
Команда regress вычисляет коэффициенты регрессии C1 и C2, по следующим формулам:
Синтаксис coefs=regress(x,y) Параметры x, y : действительные или комплексные векторы c одинаковым числом элементов n.
Значение coefs(1) равно C1 из приведенной выше формулы, а значение coefs(2) соответственно равно C2.
Пример.
x=[0.5608486 0.6623569 0.7263507 0.1985144 0.5442573 0.2320748 0.2312237];
y=[0.3616361 0.2922267 0.5664249 0.4826472 0.3321719 0.5935095 0.5015342];
coefs=regress(x,y) plot2d(x,y,-8); // -8 - означает то, что точки не соединены линиями t=0.2:0.05:0.7;
q=coefs(1)+coefs(2)*t;
plot2d(t,q,5); // это аппроксимирующая кривая Результат:
coefs = !.5563731 ! ! -.2422534 !
Как вычислить коэффициент корреляции?
С помощью команды correl (лат.Correlatio - взаимозависимость).
В пакете Scilab коэффициент корреляции rho между двумя наборами случайных величин x и y с учетом матрицы весов f определяется по следующим формулам:
Замечание: Вектора x и y могут иметь разную длину.
Синтаксис rho=correl(x,y,fre) Параметры x : действительный или комплексный вектор y : действительный или комплексный вектор fre : матрица размера length(x) на length(y) Команда correl(x,y,fre) вычисляет корреляцию двух величин x и y. В весовой матрице fre элемент и индексом (i,j) соответствует величина или номер частоты xi, yj.
Пример.
x=[2.5 7.5 12.5 17.5] h=[0 1 2] fre=[.03.12.07;.02.13.11;.01.13.14;.01.09.14] rho=correl(x,h,fre) Результат:
rho =. Как вычислить ковариацию двух величин?
С помощью команды covar.
Ковариация служит мерой взаимной связи между случайными величинами y и x, то есть стремление одной случайной величины возрастать или убывать при возрастании или убывании другой случайной величины. Ковариация характеризует меру стохастической связи между случайными величинами. Если случайные величины независимы, то ковариация равна нулю. Обратное верно не всегда.
Синтаксис s=covar(x,y,fre) Параметры x : действительный или комплексный вектор y : действительный или комплексный вектор fre : матрица размера length(x) на length(y) Команда covar(x,y,fre) вычисляет ковариацию двух величин x и y.
В матрице fre элемент и индексом (i,j) соответствует величина или номер частоты (xiyj).
Смотри подробно help covar.
Пример.
x=[10 20 30 40] y=[10 20 30 40] fre=[.20.04.01 0;.10.36.09 0; 0.05.10 0; 0 0 0.05];
s=covar(x,y,fre)