Рассматривается решение задачи
корреляционного анализа на конкретном практическом примере. Необходимые
вычисления производятся в системе Matlab, поэтому
конечная реализация является универсальной и гибкой, и может применяться и с
другими входными данными.
Скачать текст программы для пакета Matlab (.m)
Задача: по данным
годовых отчётов десяти (n=10)
промышленных предприятий (см. табл. 1) найти оценки парных коэффициентов корреляции.
Таблица 1
№ предприятия
|
x1
|
x2
|
y
|
№ предприятия
|
x1
|
x2
|
y
|
1
|
3
|
1.8
|
2.1
|
6
|
5
|
1.5
|
4.9
|
2
|
4
|
1.5
|
2.8
|
7
|
6
|
1.6
|
5.5
|
3
|
5
|
1.4
|
3.2
|
8
|
7
|
1.2
|
6.5
|
4
|
5
|
1.3
|
4.5
|
9
|
15
|
1.3
|
12.1
|
5
|
5
|
1.3
|
4.8
|
10
|
20
|
1.2
|
15.0
|
Описание работы программы
Программа
реализует способ оценки парных коэффициентов корреляции, описанный в учебном
пособии «Статистические методы в математическом моделировании и научных
исследованиях» (скачать).
Текст программы:
clc; clear;
title='Корреляционная
связь';
promt={'Введите
количество проводимых измерений (n): ','Введите
через знак проблела ( ) параметр x1: ','Введите
через знак проблела ( ) параметр x2:)', 'Введите
через знак проблела ( ) параметр y:'};
lines=4;
defaul={'10', '3
4 5 5 5 5 6 7 15 20', '1.8 1.5 1.4 1.3 1.3 1.5 1.6 1.2 1.3 1.2', '2.1
2.8 3.2 4.5 4.8 4.9 5.5 6.5 12.1 15.0'};
answer=inputdlg(promt, title, lines, defaul);
n=str2num(char(answer(1)));
x1=str2num(char(answer(2)));
x2=str2num(char(answer(3)));
alpha=0.05; %
Устанавливаем уровень значимости
% Средние значения
параметров (по формуле (1.2), стр. 39):
sumrandomx1=0;
sumrandomx2=0;
for
i=1:n
sumrandomx1=sumrandomx1+x1(i);
sumrandomx2=sumrandomx2+x2(i);
end
meanx1=sumrandomx1/n; % среднее значение x1
disp('Среднее
значение x1: ');
disp(meanx1);
meanx2=sumrandomx2/n; %
среднее значение x2
disp('Среднее
значение x2: ');
disp(meanx2);
% Дисперсия
параметров (по формуле (1.4), стр. 40):
sumx1=0;
sumx2=0;
for
i=1:n
sumx1=sumx1+(x1(i)-meanx1).^2;
sumx2=sumx2+(x2(i)-meanx2).^2;
end
disperx1=sumx1/(n-1); % дисперсия (S^2)
disperx2=sumx2/(n-1);
disp('Дисперсия для x1: ');
disp(disperx1);
disp('Дисперсия
для x2: ');
disp(disperx2);
% Ковариация
параметров (формула (1.6), стр. 40):
sumcvr=0;
for
i=1:n
sumcvr=sumcvr+(x1(i)-meanx1)*(x2(i)-meanx2); % числитель
end
covar=sumcvr/(n-1); % cov(x1, x2), формула (1.6)
disp('Ковариация
случайных параметров: ');
disp(covar);
% Коэффициент
корреляции (по формуле (1.8), стр. 40):
coefcorel=covar/(sqrt(disperx1*disperx2));
disp('Коэффициент
корреляции параметров: ');
disp(coefcorel);
% Условная градация
тесноты связи (см. стр. 40-41):
coefgrad=abs(coefcorel);
% Проверяем степень
связи между параметрами:
disp('Связь
между параметрами x1, x2: ')
if
(0<coefgrad) & (coefgrad<0.2)
disp('Очень слабая ( 0.0 < r < 0.2)');
elseif
(0.2<=coefgrad) & (coefgrad<0.4)
disp('Слабая (0.2 <= r < 0.4)');
elseif
(0.4<=coefgrad) & (coefgrad<0.7)
disp('Средняя связь (0.4 <= r < 0.7)');
elseif
(0.7<=coefgrad) & (coefgrad<0.9)
disp('Сильная связь (0.7 <= r < 0.9)');
elseif
(0.9<=coefgrad) & (coefgrad<=1)
disp('Очень сильная
(практически функциональная) связь (0.9 <= r <= 1)');
end
% Проверка
нуль-гипотезы о некоррелированности x1,
x2:
disp('Проверка
нуль-гипотезы о некоррелированности параметров x1, x2:')
% t эксп. (по формуле (1.10), стр. 43):
t=(abs(coefgrad)*sqrt(n-2))/(sqrt(1-coefgrad.^2));
disp('t
экспериментальное: ');
disp(t);
P=1-alpha;
f=n-2;
ttabl=tinv(P,f);
disp('t
табличное: ');
disp(ttabl);
if
t>ttabl
disp(sprintf('Нуль-гипотеза о
некоррелированности x1, x2 принимается, т.к. %g (эксп.) > %g (табл.)', t,
ttabl));
else
disp(sprintf('Нуль-гипотеза о
некоррелированности x1, x2 отклоняется, т.к. %g (эксп.) < %g (табл.)', t,
ttabl));
end
Результат работы программы:

Рис. 1
При введённых
значениях y, x1, x2 (см. табл. 1 и рис. 1), программа рассчитывает и
отображает следующие результаты:
Среднее значение
x1:
7.5000
Среднее значение
x2:
1.4100
Дисперсия для
x1:
30.2778
Дисперсия для
x2:
0.0366
Ковариация
случайных параметров:
-0.5944
Коэффициент
корреляции параметров:
-0.5650
Связь между
параметрами x1, x2:
Средняя связь
(0.4 <= r < 0.7)
Проверка
нуль-гипотезы о некоррелированности параметров x1, x2:
t
экспериментальное:
1.9370
t табличное:
1.8595
Нуль-гипотеза о
некоррелированности x1, x2 принимается, т.к. 1.93699 (эксп.) > 1.85955
(табл.)
Список
используемой литературы
1. Ткачев Н. Н. Статистические методы в
математическом моделировании и научных исследованиях: Учебное пособие для
студентов спец. 21.03-Роботы и робототехнические системы.: КГТУ, Красноярск,
1996. - 151 c., стр. 37 - 43
Комментариев нет:
Отправить комментарий