Факторный анализ
factoran вычисляет оценку максимального правдоподобия (MLE) матрицы факторных нагрузок Λ в модели факторного анализа
Λ f + e
где x - вектор наблюдаемых переменных, λ - постоянный вектор средних, Λ - константа dоколо-m матрица факторных нагрузок, f - вектор независимых, стандартизированных общих факторов, e - вектор независимых специфических факторов. x, λ и e каждый имеет длину d. f имеет длину m.
Альтернативно, модель факторного анализа может быть определена как
Λ Λ T + Start
где (e) являетсяdоколо-d диагональная матрица конкретных отклонений.
Для использования factoran и его связи с pca, см. раздел Выполнение факторного анализа для экзаменационных оценок.
___ = factoran( изменяет аппроксимацию модели и вывод с использованием одного или нескольких аргументов пары имя-значение для любых выходных аргументов в предыдущих синтаксисах. Например, можно указать, что X,m,Name,Value)X данные - это ковариационная матрица.
Создание псевдослучайных необработанных данных.
rng default % For reproducibility n = 100; X1 = 5 + 3*rand(n,1); % Factor 1 X2 = 20 - 5*rand(n,1); % Factor 2
Создайте шесть векторов данных из необработанных данных и добавьте случайный шум.
Y1 = 2*X1 + 3*X2 + randn(n,1); Y2 = 4*X1 + X2 + 2*randn(n,1); Y3 = X1 - X2 + 3*randn(n,1); Y4 = -2*X1 + 4*X2 + 4*randn(n,1); Y5 = 3*(X1 + X2) + 5*randn(n,1); Y6 = X1 - X2/2 + 6*randn(n,1);
Создайте матрицу данных из векторов данных.
X = [Y1,Y2,Y3,Y4,Y5,Y6];
Извлеките два фактора из матрицы шумных данных X использование factoran. Отображение выходных данных.
m = 2; [lambda,psi,T,stats,F] = factoran(X,m); disp(lambda)
0.8666 0.4828
0.8688 -0.0998
-0.0131 -0.5412
0.2150 0.8458
0.7040 0.2678
-0.0806 -0.2883
disp(psi)
0.0159
0.2352
0.7070
0.2385
0.4327
0.9104
disp(T)
0.8728 0.4880
0.4880 -0.8728
disp(stats)
loglike: -0.0531
dfe: 4
chisq: 5.0335
p: 0.2839
disp(F(1:10,:))
1.8845 -0.6568
-0.1714 -0.8113
-1.0534 2.0743
1.0390 -1.1784
0.4309 0.9907
-1.1823 0.6570
-0.2129 1.1898
-0.0844 -0.7421
0.5854 -1.1379
0.8279 -1.9624
Просмотрите корреляционную матрицу данных.
corrX = corr(X)
corrX = 6×6
1.0000 0.7047 -0.2710 0.5947 0.7391 -0.2126
0.7047 1.0000 0.0203 0.1032 0.5876 0.0289
-0.2710 0.0203 1.0000 -0.4793 -0.1495 0.1450
0.5947 0.1032 -0.4793 1.0000 0.3752 -0.2134
0.7391 0.5876 -0.1495 0.3752 1.0000 -0.2030
-0.2126 0.0289 0.1450 -0.2134 -0.2030 1.0000
Выдержать сравнение corrX к соответствующим значениям, возвращенным factoran, lambda*lambda' + diag(psi).
C0 = lambda*lambda' + diag(psi)
C0 = 6×6
1.0000 0.7047 -0.2726 0.5946 0.7394 -0.2091
0.7047 1.0000 0.0426 0.1023 0.5849 -0.0413
-0.2726 0.0426 1.0000 -0.4605 -0.1542 0.1571
0.5946 0.1023 -0.4605 1.0000 0.3779 -0.2611
0.7394 0.5849 -0.1542 0.3779 1.0000 -0.1340
-0.2091 -0.0413 0.1571 -0.2611 -0.1340 1.0000
factoran получает lambda и psi которые тесно соответствуют корреляционной матрице исходных данных.
Просмотр результатов без использования поворота.
[lambda,psi,T,stats,F] = factoran(X,m,'Rotate','none'); disp(lambda)
0.9920 0.0015
0.7096 0.5111
-0.2755 0.4659
0.6004 -0.6333
0.7452 0.1098
-0.2111 0.2123
disp(psi)
0.0159
0.2352
0.7070
0.2385
0.4327
0.9104
disp(T)
1 0
0 1
disp(stats)
loglike: -0.0531
dfe: 4
chisq: 5.0335
p: 0.2839
disp(F(1:10,:))
1.3243 1.4929
-0.5456 0.6245
0.0928 -2.3246
0.3318 1.5356
0.8596 -0.6544
-0.7114 -1.1504
0.3947 -1.1424
-0.4358 0.6065
-0.0444 1.2789
-0.2350 2.1169
Вычислите коэффициенты, используя только ковариационную матрицу X.
X2 = cov(X); [lambda2,psi2,T2,stats2] = factoran(X2,m,'Xtype','covariance','Nobs',n)
lambda2 = 6×2
0.8666 0.4828
0.8688 -0.0998
-0.0131 -0.5412
0.2150 0.8458
0.7040 0.2678
-0.0806 -0.2883
psi2 = 6×1
0.0159
0.2352
0.7070
0.2385
0.4327
0.9104
T2 = 2×2
0.8728 0.4880
0.4880 -0.8728
stats2 = struct with fields:
loglike: -0.0531
dfe: 4
chisq: 5.0335
p: 0.2839
Результаты совпадают с исходными данными, за исключением factoran не удается вычислить матрицу коэффициентов оценки F для ковариационных данных.
Загрузите образцы данных.
load carbigОпределите матрицу переменных.
X = [Acceleration Displacement Horsepower MPG Weight]; X = X(all(~isnan(X),2),:);
Оцените факторные нагрузки, используя минимальный прогноз среднеквадратичной ошибки для факторного анализа с двумя общими факторами.
[Lambda,Psi,T,stats,F] = factoran(X,2,'Scores','regression'); inv(T'*T); % Estimated correlation matrix of F, == eye(2) Lambda*Lambda' + diag(Psi); % Estimated correlation matrix Lambda*inv(T); % Unrotate the loadings F*T'; % Unrotate the factor scores
Создайте биплот из двух факторов.
biplot(Lambda,'LineWidth',2,'MarkerSize',20)

Оцените факторные нагрузки с помощью ковариационной (или корреляционной) матрицы.
[Lambda,Psi,T] = factoran(cov(X),2,'Xtype','covariance')
Lambda = 5×2
-0.2432 -0.8500
0.8773 0.3871
0.7618 0.5930
-0.7978 -0.2786
0.9692 0.2129
Psi = 5×1
0.2184
0.0804
0.0680
0.2859
0.0152
T = 2×2
0.9476 0.3195
0.3195 -0.9476
(Вместо этого можно использовать corrcoef(X) вместо cov(X) для создания данных для factoran.) Хотя оценки одинаковы, использование ковариационной матрицы, а не необработанных данных не позволяет запрашивать оценки или уровень значимости.
Используйте ротацию promax.
[Lambda,Psi,T,stats,F] = factoran(X,2,'Rotate','promax','power',4); inv(T'*T) % Estimated correlation of F, no longer eye(2)
ans = 2×2
1.0000 -0.6391
-0.6391 1.0000
Lambda*inv(T'*T)*Lambda'+diag(Psi) % Estimated correlation of Xans = 5×5
1.0000 -0.5424 -0.6893 0.4309 -0.4167
-0.5424 1.0000 0.8979 -0.8078 0.9328
-0.6893 0.8979 1.0000 -0.7730 0.8647
0.4309 -0.8078 -0.7730 1.0000 -0.8326
-0.4167 0.9328 0.8647 -0.8326 1.0000
Постройте график неизменяемых переменных с наложенными наклонными осями.
invT = inv(T); Lambda0 = Lambda*invT; figure() line([-invT(1,1) invT(1,1) NaN -invT(2,1) invT(2,1)], ... [-invT(1,2) invT(1,2) NaN -invT(2,2) invT(2,2)], ... 'Color','r','LineWidth',2) grid on hold on biplot(Lambda0,'LineWidth',2,'MarkerSize',20) xlabel('Loadings for unrotated Factor 1') ylabel('Loadings for unrotated Factor 2')

Постройте график повернутых переменных относительно наклонных осей.
figure() biplot(Lambda,'LineWidth',2,'MarkerSize',20)

X - ДанныеДанные, указанные как nоколо-d матрица, где каждая строка является наблюдением d переменные.
Типы данных: double
m - Количество общих факторовЧисло общих факторов, указанных как положительное целое число.
Пример: 3
Типы данных: double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
lambda = factoran(X,m,'Start',10,'Scores','Thomson') указывает использовать начальную точку для конкретных отклонений 10 и метод Томсона для прогнозирования показателей коэффициента.'Xtype' - Тип входных данных'data' (по умолчанию) | 'covariance'Тип входных данных X, указанная как пара, разделенная запятыми, состоящая из 'Xtype' и одно из следующих:
'data' — X является необработанными данными.
'covariance' — X - положительная определенная ковариационная или корреляционная матрица.
Пример: 'Xtype','covariance'
Типы данных: char | string
'Scores' - Метод прогнозирования показателей коэффициента'wls' или эквивалент 'Bartlett' (по умолчанию) | 'regression' или эквивалент 'Thomson'Метод прогнозирования коэффициентов, указанный как пара, разделенная запятыми, состоящая из 'Scores' и одно из следующих:
'wls' или эквивалент 'Bartlett' - Взвешенная оценка наименьших квадратов F как фиксированное
'regression' или эквивалент 'Thomson' - Минимальный среднеквадратичный прогноз ошибок, эквивалентный регрессии гребня
Пример: 'Scores','regression'
Типы данных: char | string
'Start' - Начальная точка для определенных отклонений psi при оптимизации максимального правдоподобия'Rsquared' (по умолчанию) | 'random' | положительное целое число | матрица с d рядыНачальная точка для определенных отклонений psi в максимальной оптимизации правдоподобия, указанной как пара, разделенная запятыми, состоящая из 'Start' и одно из следующих:
'Rsquared' - выбор начального вектора в качестве масштабного коэффициента раз diag(inv(corrcoef(X))) (по умолчанию). Примеры см. в Jöreskog [2].
'random' - Выбирает d равномерно распределенные значения на интервале [0,1].
Положительное целое число - выполняет заданное число совпадений максимального правдоподобия, каждое из которых инициализировано таким же образом, как 'random'. factoran возвращает аппроксимацию с наибольшей вероятностью.
Матрица с d rows - выполняет одну максимальную аппроксимацию правдоподобия для каждого столбца указанной матрицы. factoran инициализирует i-я оптимизация со значениями из i4-я колонна.
Пример: 'Start',5
Типы данных: double | char | string
'Rotate' - Метод, используемый для поворота факторных нагрузок и баллов'varimax' (по умолчанию) | 'none' | 'quartimax' | 'equamax' | 'parsimax' | 'orthomax' | 'promax' | 'procrustes' | 'pattern' | дескриптор функцииМетод, используемый для поворота факторных нагрузок и баллов, определяемый как разделенная запятыми пара, состоящая из 'Rotate' и одно из значений в следующей таблице. Можно управлять поворотом, указывая дополнительные аргументы пары имя-значение rotatefactors , как описано в таблице. Для получения более подробной информации см. rotatefactors.
| Стоимость | Описание |
|---|---|
| Не выполняет поворот |
| Особый случай |
| Ортогональное вращение, которое максимизирует критерий, основанный на дисперсии нагрузок. Используйте |
| Особый случай вращения ортомакса. Используйте |
| Выполняет либо наклон (по умолчанию), либо ортогональный поворот для наилучшего соответствия заданной матрице массива. Используйте |
| Выполняет либо наклон (по умолчанию), либо ортогональный поворот для наилучшего соответствия заданной целевой матрице в смысле наименьших квадратов. Используйте |
| Выполняет поворот наклонных заготовок к целевой матрице, определяемой |
| Особый случай |
| Особый случай |
дескриптор функции | Дескриптор функции для функции поворота формы [B,T] = myrotation(A,...) где Используйте |
Пример: [lambda,psi,T] = factoran(X,m,'Rotate','promax','power',5,'maxit',100)
Типы данных: char | string | function_handle
'Delta' - Нижняя граница для psi во время оптимизации максимального правдоподобия0.005 (по умолчанию) | скаляр между 0 и 1Нижняя граница для psi аргумент во время оптимизации максимального правдоподобия, указанный как пара, разделенная запятыми, состоящая из 'Delta' и скалярное значение от 0 до 1 (0 < Delta < 1).
Пример: 0.02
Типы данных: double
'OptimOpts' - Варианты оптимизации максимального правдоподобия[] (по умолчанию) | структура создана statsetПараметры оптимизации максимального правдоподобия, указанные как разделенная запятыми пара, состоящая из 'OptimOpts' и структура, созданная statset. Можно ввести statset('factoran') для списка опций, которые также описаны в следующей таблице.
Имя поля (statset аргумент) | Значение | Значение {по умолчанию} |
|---|---|---|
'Display' | Объем информации, отображаемой алгоритмом |
|
MaxFunEvals | Максимально допустимое количество оценок целевых функций | Положительное целое число, {400} |
MaxIter | Максимально допустимое число итераций | Положительное целое число, {100} |
TolFun | Допуск окончания для значения целевой функции. Решатель останавливается, когда значения последовательных функций меньше | Положительный скаляр, {1e-8} |
TolX | Допуск окончания для параметров. Решатель останавливается, если значения последовательных параметров меньше | Положительный скаляр, {1e-8} |
Пример: statset('Display','iter')
Типы данных: struct
'Nobs' - Количество наблюдений, использованных для оценки XКоличество наблюдений, использованных для оценки X, указанная как пара, разделенная запятыми, состоящая из 'Nobs' и положительное целое число. Nobs применяется только тогда, когда Xtype является 'covariance'. Определение 'Nobs' позволяет получить stats поля структуры вывода chisq и p.
Пример: 50
Типы данных: double
lambda - Факторные нагрузкиФакторные нагрузки, возвращенные как dоколо-m матрица. d - количество столбцов матрицы данных X, и m является вторым входным аргументом factoran.
(i,j)-й элемент lambda - коэффициент или нагрузка j-й коэффициент для i-я переменная. По умолчанию factoran вызывает функцию rotatefactors для поворота расчетных нагрузок коэффициента с помощью 'varimax' вариант. Сведения о вращении см. в разделе Вращение факторных нагрузок и баллов.
psi - Специфические отклоненияОпределенные отклонения, возвращаемые как dоколо-1 вектор. d - количество столбцов матрицы данных X. Записи psi являются оценками максимального правдоподобия.
T - Вращение факторных нагрузокВращение факторных нагрузок, возвращаемое как mоколо-m матрица. m является вторым входным аргументом factoran. Сведения о вращении см. в разделе Вращение факторных нагрузок и баллов.
stats - Информация об общих факторахИнформация об общих факторах, возвращенная как структура. stats содержит информацию, относящуюся к нулевой гипотезе, H0, что число общих факторов равно m.
stats содержит следующие поля.
| Область | Описание |
|---|---|
loglike | Максимальная стоимость средств к существованию |
dfe | Погрешность степеней свободы = |
chisq | Приблизительная статистика хи-квадрата для нулевой гипотезы |
p | Уровень значимости правого хвоста для нулевой гипотезы |
factoran не вычисляет chisq и p поля, за исключением dfe является положительным и все конкретные оценки дисперсии в psi положительные (см. Дело Хейвуда). Если X является матрицей ковариации и вы хотите factoran для вычисления chisq и p , то вы также должны указать 'Nobs' аргумент пары имя-значение.
F - Коэффициенты оценкиПоказатели факторов, также называемые предсказаниями общих факторов, возвращаются как nоколо-m матрица. n - количество строк в матрице данных X, и m является вторым входным аргументом factoran.
Примечание
Если X - ковариационная матрица (Xtype = 'covariance'), factoran не удается вычислить F.
factoran вращается F с использованием того же критерия, что и для lambda. Сведения о вращении см. в разделе Вращение факторных нагрузок и баллов.
Если элементы psi равны значению Delta параметр (то есть они по существу равны нулю), подгонка известна как случай Хейвуда, и интерпретация полученных оценок проблематична. В частности, может быть несколько локальных максимумов вероятности, каждый с различными оценками нагрузок и конкретных отклонений. Случаи Heywood могут указывать на переоборудование (m слишком велик), но также может быть результатом недоукомплектования.
Если явным образом не указан поворот с помощью 'Rotate' аргумент пары имя-значение, factoran поворачивает расчетные нагрузки коэффициента lambda и коэффициенты оценки F. Выходная матрица T используется для поворота нагрузок, то есть lambda = lambda0*T, где lambda0 - начальный (невращаемый) MLE загрузок. T является ортогональной матрицей для ортогональных вращений и единичной матрицей для отсутствия вращения. Обратная T известен как матрица вращения первичной оси, тогда как T сама по себе связана с матрицей вращения опорной оси. Для ортогональных поворотов они идентичны.
factoran вычисляет коэффициенты, которые были повернуты на inv(T'), то есть F = F0 * inv(T'), где F0 содержит неотвращенные прогнозы. Оценочная ковариация F является inv(T'*T), которая является единичной матрицей для ортогонального поворота или без него. Ротация факторных нагрузок и баллов - это попытка создать структуру, которую легче интерпретировать в матрице нагрузок после оценки максимального правдоподобия.
Синтаксис передачи дополнительных аргументов определяемой пользователем функции ротации:
[Lambda,Psi,T] = ... factoran(X,2,'Rotate',@myrotation,'UserArgs',1,'two');
[1] Харман, Гарри Гораций. Современный факторный анализ. 3-й ред. Чикаго: Чикагский университет, 1976 год.
[2] Йереског, К. Г. «Некоторые вклады в анализ максимального фактора правдоподобия». Психометрика 32, № 4 (декабрь 1967): 443-82. https://doi.org/10.1007/BF02289658
[3] Lawley, D. N. и А. Э. Максвелл. Факторный анализ как статистический метод. 2-й ред. Нью-Йорк: American Elsevier Publishing Co., 1971.
pcacov и factoran не работают непосредственно на массивах tall. Вместо этого используйте C = gather(cov(X)) для вычисления ковариационной матрицы высокого массива. Затем можно использовать pcacov или factoran для работы с ковариационной матрицей в памяти. Кроме того, можно использовать pca непосредственно на высоком массиве.

Дополнительные сведения см. в разделе Tall Arrays for Out-of-Memory Data.
biplot | pca | pcacov | procrustes | rotatefactors | statset
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.