МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра АМ
Проектная работа
по дисциплине «Теория вероятности и математическая статистика»
Тема: Обработка статистических данных в среде Matlab
Студент гр. 7501 |
|
Исаков А.О. |
Преподаватель |
|
Болотов М.А. |
Санкт-Петербург
2019
Задание на проектную работу
-
Загрузить массив данных и меток класса в соответствии с номером варианта вашей группы.
-
Удалить выбросы в данных, руководствуясь правилом 3S
-
Выравнивание выборок по каждому классу
-
Разбить массив на 2 выборки – обучающую и тестовую (80% и 20% от общего числа элементов соответственно) так, чтобы внутри каждой оказалось равное количество элементов каждого класса.
5. Нормализовать выборки, обеспечив нулевое среднее значение и дисперсию. Для этого подсчитать среднее значение и СКО для обучающей выборки и нормализовать тестовую, используя эти данные.
6.1. Применение Метода Главных Компонент (МГК)
Получить первые две главные компоненты по нормализованным данным, построить график распределения долей дисперсии по главным компонентам, а также представить скатеррограмму в двумерном пространстве распределения классов по первым двум главным компонентам.
6.2. Визуально разделимые признаки
Построить гистограммы классов по каждому признаку (15 штук) и выбрать два признака, в которых классы наиболее хорошо разделимы. Представить скатеррограмму распределения классов по этим двум признакам.
7. Построение линейной регрессии
8. Проверить гипотезу о гетероскедастичности остатков.
9. Оформить пояснительную записку, включающую поэтапное описание работы, исполняемый код, получаемые графики.
Содержание
|
Задание……………………………………………………………….. |
2 |
1. |
Загрузка данных……………………………………………………... |
4 |
2. |
Удаление выбросов…………………………………………………. |
4 |
3. |
Выравнивание выборок……………………………………………. |
4 |
4. |
Нормализация………………………………………………………. |
6 |
5. |
Применение МГК…………………………………………………… |
6 |
6. |
Визуальное разделение признаков…………………………………. |
7 |
7. |
Построение линейной регрессии…………………………………... |
8 |
8. |
Проверка гипотезы о гетероскедастичности остатков…………… |
10 |
9. |
Вывод……………………………………………………………….. |
13 |
-
Загрузка исходных данных
Из исходного .MAT-файла загружаем данные:
load('Xs.mat');
load('Ys.mat');
X=Xs.var5;
Y=Ys.var5;
clear Xs Ys
Присваиваем переменной «Х» значения таблица 2000 х 16, где столбцы (16) – параметры (атрибуты) данных, столбцы (2000) – соответствующие значения.
-
Удаление выбросов
Для удаления выбросов используется правило Трех Сигм (S). Необходимо высчитать СКО каждого столбца данных (признака) и проанализировать каждый столбец на пример того, присутствуют ли там значения, превышающие по модулю модуль 3S. (|X[i,j]|>=|3S|). Если такие значения присутствуют в столбце, то необходимо удалить строку, в которой это значение присутствует.
1.MA=mean(X); % Среднее значение
2.Sigma=std(X); % СКО
3.TSigma=3*Sigma+MA; % Стандартное распределение по правилу 3х сигм
4.[ xrow, ~]=find(X>=TSigma); % Нахождение всех строк с выбросами
5.X(unique(xrow),:)=[]; % Удаление из исходной выборки строк с выбросами
6.Y(unique(xrow),:)=[]; % Удаление флагов данных с выбросами
-
Выравнивание выборок
Для выравнивания выборок по каждому классу необходимо упорядочить строки по столбцу меток и посмотреть, сколько строк принадлежат одному классу, а сколько другому. Необходимо выкинуть столько последних строк из класса, который больше, чтобы количество строк в этом классе стало равно количеству строк в другом классе, который меньше. Из предыдущего пункта (строки 5-6) имеем количество соответствующих флагов.
1. SR = sortrows([X Y], 17) ;
2. DF0=find(Y==0);
3.DF1=find(Y==1);
4. F1=SR(1:length(DF0),end);
5. A=X(1:length(DF0),1:16);
6. F0=SR((length(DF0)+1):(length(DF0)+length(DF1)),end);
7. B=X((length(DF0)+1):(length(DF0)+length(DF1)),1:16);
8. R=length(DF0)-length(DF1);
9. Alpha = [A F1];
10. Betta = [B F0];
11. if (R~=0)
12. if (R>0)
13. Alpha((length(F0)+1):end,:)=[ ];
14. end
15. if (R<0)
16.Betta((length(F1)+1):end,:)=[ ];
17. end
18. end
19. SortXY = [Alpha;Betta];
20. X=SortXY(1:length(SortXY),1:16);
21. Y=SortXY(1:length(SortXY),end);