exponenta event banner

Анализ качества жизни в городах США с помощью PCA

В этом примере показано, как выполнить взвешенный анализ главных компонентов и интерпретировать результаты.

Загрузить данные образца.

Загрузите образцы данных. Данные включают рейтинги по 9 различным показателям качества жизни в 329 городах США. Это климат, жилье, здравоохранение, преступность, транспорт, образование, искусство, отдых и экономика. Для каждой категории более высокая оценка лучше. Например, более высокий рейтинг преступности означает более низкий уровень преступности.

Отображение categories переменная.

load cities
categories
categories =
   climate       
   housing       
   health        
   crime         
   transportation
   education     
   arts          
   recreation    
   economics   

В общей сложности, cities набор данных содержит три переменные:

  • categories, символьная матрица, содержащая имена индексов

  • names, символьная матрица, содержащая 329 названий городов

  • ratings, матрица данных с 329 строками и 9 столбцами

Данные графика.

Создайте рамочный график для просмотра распределения ratings данные.

figure()
boxplot(ratings,'Orientation','horizontal','Labels',categories)

В рейтингах искусств и жилья больше изменчивости, чем в рейтингах преступности и климата.

Проверьте попарную корреляцию.

Проверьте попарную корреляцию между переменными.

C = corr(ratings,ratings);

Корреляция между некоторыми переменными достигает 0,85. Анализ главных компонентов создает независимые новые переменные, которые являются линейными комбинациями исходных переменных.

Вычислить основные компоненты.

Когда все переменные находятся в одной единице, целесообразно вычислять основные компоненты для необработанных данных. Когда переменные находятся в разных единицах или разница в дисперсии различных столбцов существенна (как в этом случае), масштабирование данных или использование весов часто предпочтительнее.

Выполните анализ основного компонента, используя в качестве весов обратные отклонения оценок.

w = 1./var(ratings);
[wcoeff,score,latent,tsquared,explained] = pca(ratings,...
'VariableWeights',w);

Или эквивалентно:

[wcoeff,score,latent,tsquared,explained] = pca(ratings,...
'VariableWeights','variance');

В следующих разделах разъясняются пять выходов: pca.

Коэффициенты компонента.

Первый выход, wcoeff, содержит коэффициенты главных компонентов.

Первыми тремя векторами коэффициентов основных компонентов являются:

c3 = wcoeff(:,1:3)
c3 = wcoeff(:,1:3)
c3 =

   1.0e+03 *

    0.0249   -0.0263   -0.0834
    0.8504   -0.5978   -0.4965
    0.4616    0.3004   -0.0073
    0.1005   -0.1269    0.0661
    0.5096    0.2606    0.2124
    0.0883    0.1551    0.0737
    2.1496    0.9043   -0.1229
    0.2649   -0.3106   -0.0411
    0.1469   -0.5111    0.6586

Эти коэффициенты взвешиваются, следовательно, матрица коэффициентов не является ортонормированной.

Коэффициенты преобразования.

Преобразуйте коэффициенты так, чтобы они были ортонормированными.

 coefforth = inv(diag(std(ratings)))*wcoeff;

Обратите внимание, что при использовании вектора весов w, во время проведения pca, то

 coefforth = diag(sqrt(w))*wcoeff;

Проверочные коэффициенты являются ортонормированными.

Преобразованные коэффициенты теперь являются ортонормированными.

I = coefforth'*coefforth;
I(1:3,1:3)
ans =
    1.0000   -0.0000   -0.0000
   -0.0000    1.0000   -0.0000
   -0.0000   -0.0000    1.0000

Оценки компонентов.

Второй выход, scoreсодержит координаты исходных данных в новой системе координат, определенной главными компонентами. score матрица имеет тот же размер, что и матрица входных данных. Оценки компонентов можно также получить с помощью ортонормированных коэффициентов и стандартизированных оценок следующим образом.

cscores = zscore(ratings)*coefforth;

cscores и score являются идентичными матрицами.

Постройте график оценки компонентов.

Создание графика первых двух столбцов score.

figure()
plot(score(:,1),score(:,2),'+')
xlabel('1st Principal Component')
ylabel('2nd Principal Component')

На этом графике показаны центрированные и масштабированные данные оценок, спроецированные на первые два основных компонента. pca вычисляет баллы, чтобы иметь среднее значение ноль.

Изучение графика в интерактивном режиме.

Обратите внимание на внешние точки в правой части графика. Можно графически идентифицировать эти точки следующим образом.

gname

Наведите курсор на график и щелкните один раз рядом с самыми правыми семью точками. Точки помечаются по номерам строк, как показано на следующем рисунке.

После маркировки точек нажмите клавишу Return.

Извлеките имена наблюдений.

Создайте индексную переменную, содержащую номера строк всех выбранных городов, и получите имена городов.

metro = [43 65 179 213 234 270 314];
names(metro,:)
ans =
   Boston, MA                  
   Chicago, IL                 
   Los Angeles, Long Beach, CA 
   New York, NY                
   Philadelphia, PA-NJ         
   San Francisco, CA           
   Washington, DC-MD-VA

Эти помеченные города являются одними из крупнейших населенных пунктов в Соединенных Штатах, и они кажутся более экстремальными, чем остальные данные.

Отклонения компонентов.

Третий выход, latent, - вектор, содержащий дисперсию, объясненную соответствующей главной составляющей. Каждый столбец score имеет дисперсию выборки, равную соответствующей строке latent.

latent
latent =

    3.4083
    1.2140
    1.1415
    0.9209
    0.7533
    0.6306
    0.4930
    0.3180
    0.1204

Объяснена разница в процентах.

Пятый выход, explained, - вектор, содержащий процентную дисперсию, объясненную соответствующей главной составляющей.

explained
explained =

   37.8699
   13.4886
   12.6831
   10.2324
    8.3698
    7.0062
    5.4783
    3.5338
    1.3378

Создание scree-графика.

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

figure()
pareto(explained)
xlabel('Principal Component')
ylabel('Variance Explained (%)')

Этот scree-график показывает только первые семь (вместо девяти) компонентов, которые объясняют 95% общей дисперсии. Единственным четким разрывом в величине дисперсии, учитываемой каждым компонентом, является разрыв между первым и вторым компонентами. Однако первый компонент сам по себе объясняет менее 40% дисперсии, поэтому может потребоваться больше компонентов. Можно видеть, что первые три основных компонента объясняют примерно две трети общей изменчивости стандартизированных рейтингов, так что это может быть разумным способом уменьшения размеров.

T-квадрат статистики Отеллинга.

Последний вывод из pca является tsquared, что является T2 Хотеллинга, статистической мерой многомерного расстояния каждого наблюдения от центра набора данных. Это аналитический способ найти самые экстремальные точки в данных.

[st2,index] = sort(tsquared,'descend'); % sort in descending order
extreme = index(1);
names(extreme,:)
ans =

New York, NY

Рейтинги Нью-Йорка наиболее далеки от среднего города США.

Визуализация результатов.

Визуализируйте как ортонормированные коэффициенты главной компоненты для каждой переменной, так и оценки главной компоненты для каждого наблюдения на одном графике.

biplot(coefforth(:,1:2),'Scores',score(:,1:2),'Varlabels',categories);
axis([-.26 0.6 -.51 .51]);

Все девять переменных представлены в этом двумерном графике вектором, и направление и длина вектора указывают, как каждая переменная вносит вклад в два главных компонента графика. Например, первый главный компонент на горизонтальной оси имеет положительные коэффициенты для всех девяти переменных. Именно поэтому девять векторов направлены в правую половину графика. Наибольшими коэффициентами в первом главном компоненте являются третий и седьмой элементы, соответствующие переменным. health и arts.

Второй главный компонент на вертикальной оси имеет положительные коэффициенты для переменных education, health, arts, и transportationи отрицательные коэффициенты для остальных пяти переменных. Это указывает на то, что второй компонент различает города, которые имеют высокие значения для первого набора переменных и низкие для второго, и города, которые имеют противоположные значения.

Метки переменных на этом рисунке несколько переполнены. Вы можете либо исключить VarLabels аргумент пары «имя-значение» при создании графика или выберите и перетащите некоторые метки в лучшее положение с помощью инструмента «Редактировать график» на панели инструментов окна рисунка.

Этот 2-й bi-сюжет также включает пункт для каждого из этих 329 наблюдений с координатами, указывающими на счет каждого наблюдения для двух основных компонентов в сюжете. Например, точки вблизи левого края этого графика имеют самые низкие оценки для первого главного компонента. Точки масштабируются относительно максимального значения оценки и максимальной длины коэффициента, так что из графика можно определить только их относительные местоположения.

Можно определить элементы на графике, выбрав Инструменты > Курсор данных в окне рисунка. Щелкнув переменную (вектор), можно прочитать метку переменной и коэффициенты для каждого главного компонента. Щелкнув на наблюдении (точке), можно прочитать имя наблюдения и оценки для каждого основного компонента. Можно указать'Obslabels',names для отображения имен наблюдений вместо номеров наблюдений в окне курсора данных.

Создание трехмерного двумерного графика.

Можно также создать двойной график в трех измерениях.

figure()
biplot(coefforth(:,1:3),'Scores',score(:,1:3),'Obslabels',names);
axis([-.26 0.8 -.51 .51 -.61 .81]);
view([30 40]);

Этот график полезен, если первые две основные координаты недостаточно объясняют дисперсию в данных. Чтобы повернуть фигуру под разными углами, выберите команду Инструменты >Rotate 3D.

См. также

| | | | |

Связанные темы