Анализируйте курсы акций Используя факторный анализ

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

Факторные нагрузки

Загрузите выборочные данные.

load stockreturns

Предположим, что в течение 100 недель, процентное изменение в курсах акций для десяти компаний было зарегистрировано. Из этих десяти компаний первые четыре могут быть классифицированы так же, в основном, технология, следующие три, столь же финансовые, и последние три как розничная продажа. Кажется разумным, что курсы акций для компаний, которые находятся в том же секторе, могут варьироваться вместе, как экономические условия изменяются. Факторный анализ может представить количественные свидетельства.

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

[Loadings,specificVar,T,stats] = factoran(stocks,3,'rotate','none');

Первые два factoran выходными аргументами являются предполагаемые загрузки и предполагаемые определенные отклонения. Каждая строка матрицы загрузок представляет один из этих десяти запасов, и каждый столбец соответствует общему множителю. С невращаемыми оценками интерпретация факторов в этой подгонке затрудняет, потому что большинство запасов содержит довольно большие коэффициенты для двух или больше факторов.

Loadings
Loadings = 10×3

    0.8885    0.2367   -0.2354
    0.7126    0.3862    0.0034
    0.3351    0.2784   -0.0211
    0.3088    0.1113   -0.1905
    0.6277   -0.6643    0.1478
    0.4726   -0.6383    0.0133
    0.1133   -0.5416    0.0322
    0.6403    0.1669    0.4960
    0.2363    0.5293    0.5770
    0.1105    0.1680    0.5524

Факторное вращение помогает упростить структуру в Loadings матрица, чтобы облегчить присваивать значимые интерпретации факторам.

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

specificVar
specificVar = 10×1

    0.0991
    0.3431
    0.8097
    0.8559
    0.1429
    0.3691
    0.6928
    0.3162
    0.3311
    0.6544

Определенное отклонение 1 указало бы, что нет никакого компонента общего множителя в той переменной, в то время как определенное отклонение 0 указало бы, что переменная полностью определяется общими множителями. Эти данные, кажется, падают где-нибудь промежуточные.

Отобразите p-значение.

stats.p
ans = 0.8144

P-значение возвращено в stats структуре не удается отклонить нулевую гипотезу трех общих множителей, предполагая, что эта модель дает удовлетворительное объяснение ковариации в этих данных.

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

[Loadings2,specificVar2,T2,stats2] = factoran(stocks, 2,'rotate','none');

Отобразите p-значение.

stats2.p
ans = 3.5610e-06

P-значение для этой второй подгонки является очень значительным, и отклоняет гипотезу двух факторов, указывая, что более простая модель не достаточна, чтобы объяснить шаблон в этих данных.

Факторное вращение

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

Если вы думаете о каждой строке матрицы загрузок как координаты точки в M-мерном-пространстве, то каждый фактор соответствует координатной оси. Факторное вращение эквивалентно вращению тех осей и вычислению новых загрузок во вращаемой системе координат. Существуют различные способы сделать это. Некоторые методы оставляют оси ортогональными, в то время как другие являются наклонными методами, которые изменяют углы между ними. В данном примере можно вращать предполагаемые загрузки при помощи промакс. критерия, общего наклонного метода.

[LoadingsPM,specVarPM] = factoran(stocks,3,'rotate','promax');
LoadingsPM
LoadingsPM = 10×3

    0.9452    0.1214   -0.0617
    0.7064   -0.0178    0.2058
    0.3885   -0.0994    0.0975
    0.4162   -0.0148   -0.1298
    0.1021    0.9019    0.0768
    0.0873    0.7709   -0.0821
   -0.1616    0.5320   -0.0888
    0.2169    0.2844    0.6635
    0.0016   -0.1881    0.7849
   -0.2289    0.0636    0.6475

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

biplot(LoadingsPM,'varlabels',num2str((1:10)'));
axis square
view(155,27);

Figure contains an axes object. The axes object contains 31 objects of type line, text.

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

Факторные баллы

Иногда, полезно смочь классифицировать наблюдение на основе своих факторных баллов. Например, если вы приняли три факторных модели и интерпретацию вращаемых факторов, вы можете хотеть категоризировать каждую неделю в терминах того, насколько благоприятный это было для каждого из трех секторов запаса, на основе данных из 10 наблюдаемых запасов. Поскольку данные в этом примере являются изменениями цен сырья, и не только их корреляционной матрицей, у вас может быть factoran возвратите оценки значения каждого из трех вращаемых общих множителей в течение каждой недели. Можно затем построить предполагаемые баллы, чтобы видеть, как различные секторы запаса были затронуты в течение каждой недели.

[LoadingsPM,specVarPM,TPM,stats,F] = factoran(stocks, 3,'rotate','promax');

plot3(F(:,1),F(:,2),F(:,3),'b.')
line([-4 4 NaN 0 0 NaN 0 0], [0 0 NaN -4 4 NaN 0 0],[0 0 NaN 0 0 NaN -4 4], 'Color','black')
xlabel('Financial Sector')
ylabel('Retail Sector')
zlabel('Technology Sector')
grid on
axis square
view(-22.5, 8)

Figure contains an axes object. The axes object contains 2 objects of type line.

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

inv(TPM'*TPM);

Визуализируйте результаты

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

biplot(LoadingsPM,'scores',F,'varlabels',num2str((1:10)'))
xlabel('Financial Sector')
ylabel('Retail Sector')
zlabel('Technology Sector')
axis square
view(155,27)

Figure contains an axes object. The axes object contains 32 objects of type line, text.

В этом случае факторный анализ включает три фактора, и таким образом, побочная сюжетная линия 3D. Каждый из этих 10 запасов представлен в этом графике вектора, и направление и длина вектора указывают, как каждый запас зависит от базовых факторов. Например, вы видели, что после промакс. вращения, первые четыре запаса имеют положительные загрузки на первом факторе и неважные загрузки на других двух факторах. Тот первый фактор, интерпретированный как эффект финансового сектора, представлен в этой побочной сюжетной линии как одна из горизонтальных осей. Зависимость тех четырех запасов на том факторе соответствует этим четырем векторам, направленным приблизительно вдоль той оси. Точно так же зависимость запасов 5, 6, и 7, в основном, на втором факторе, интерпретированном как эффект розничного сектора, представлена векторами, направленными приблизительно вдоль той оси.

Каждое из этих 100 наблюдений представлено в этом графике точки, и их местоположения указывают на счет каждого наблюдения для этих трех факторов. Например, точки около верхней части этого графика имеют самую высокую музыку к фактору технологического сектора. Точкам масштабируют для соответствия в модульном квадрате, поэтому только их относительные местоположения могут быть определены из графика.

Можно использовать Инструмент Data Cursor в меню Tools в окне рисунка, чтобы идентифицировать элементы в этом графике. Путем нажатия на запас (вектор) можно прочитать загрузки того запаса для каждого фактора. Путем нажатия на наблюдение (точка) можно прочитать музыку того наблюдения к каждому фактору.