exponenta event banner

Анализ цен на акции с использованием факторного анализа

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

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

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

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-мерном пространстве, то каждый коэффициент соответствует координатной оси. Поворот коэффициента эквивалентен повороту этих осей и вычислению новых нагрузок в повернутой системе координат. Есть различные способы сделать это. Некоторые методы оставляют оси ортогональными, в то время как другие являются наклонными методами, которые меняют углы между ними. В этом примере можно повернуть расчетные нагрузки с помощью критерия promax, обычного метода наклонной ориентации.

[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

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

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

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

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

Коэффициенты оценки

Иногда полезно иметь возможность классифицировать наблюдение на основе его факторных показателей. Например, если принята трехфакторная модель и интерпретация повернутых коэффициентов, может потребоваться разделить каждую неделю на категории с точки зрения того, насколько благоприятно это было для каждого из трех секторов запасов на основе данных из 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. The axes 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. The axes contains 131 objects of type line, text.

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

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

Для определения элементов на этом графике можно использовать инструмент «Курсор данных» из меню «Сервис» в окне рисунка. Щелчком по заготовке (вектору) можно считать нагрузки этой заготовки для каждого коэффициента. Щелчком мыши на наблюдении (точке) можно считать оценки этого наблюдения для каждого фактора.