factoran

Факторный анализ

Синтаксис

lambda = factoran(X,m)
[lambda,psi] = factoran(X,m)
[lambda,psi,T] = factoran(X,m)
[lambda,psi,T,stats] = factoran(X,m)
[lambda,psi,T,stats,F] = factoran(X,m)
[...] = factoran(...,param1,val1,param2,val2,...)

Описание

lambda = factoran(X,m) возвращает оценку наибольшего правдоподобия, lambda, матрицы факторных нагрузок, в аналитической модели общего множителя с общими множителями m. X является n-by-d матрица, где каждая строка является наблюдением за переменными d. (i,j) th элемент d-by-m матричный lambda является коэффициентом или загрузкой, j th фактор для i th переменная. По умолчанию factoran вызывает функциональный rotatefactors, чтобы вращать предполагаемые факторные нагрузки с помощью опции 'varimax'.

[lambda,psi] = factoran(X,m) также возвращает оценки наибольшего правдоподобия определенных отклонений как вектор-столбец psi длины d.

[lambda,psi,T] = factoran(X,m) также возвращает m-by-m матрица вращения факторных нагрузок T.

[lambda,psi,T,stats] = factoran(X,m) также возвращает структуру stats, содержащий информацию, относящуюся к нулевой гипотезе, H0, что количеством общих множителей является m. stats включает следующие поля:

Поле Описание
loglike

Максимизируемое значение логарифмической вероятности

dfe

Ошибочные степени свободы = ((d-m)^2 - (d+m))/2

chisq

Аппроксимируйте статистическую величину в квадрате хи для нулевой гипотезы

p

Уровень значения правильного хвоста для нулевой гипотезы

factoran не вычисляет поля chisq и p, если dfe не положителен, и все определенные оценки отклонения в psi положительны (см. Случай Хейвуда ниже). Если X является ковариационной матрицей, то необходимо также задать параметр 'nobs', если вы хотите, чтобы factoran вычислил поля chisq и p.

[lambda,psi,T,stats,F] = factoran(X,m) также возвращается, в F, прогнозах общих множителей, известных как факторные очки. F является n-by-m матрица, где каждая строка является прогнозом общих множителей m. Если X является ковариационной матрицей, factoran не может вычислить F. factoran вращает F с помощью того же критерия что касается lambda.

[...] = factoran(...,param1,val1,param2,val2,...) позволяет вам задать дополнительное название параметра / пары значения, чтобы управлять образцовой подгонкой и выходными параметрами. Следующее является допустимыми парами параметра/значения.

ПараметрЗначение
'xtype'

Тип входа в матричном X. 'xtype' может быть одним из:

'data'

Необработанные данные (значение по умолчанию)

'covariance'

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

'scores'

Метод для предсказания факторных очков. 'scores' проигнорирован, если X не является необработанными данными.

'wls'
'Бартлетт'

Синонимы для метод взвешенных наименьших квадратов оценивает, что обрабатывает F как зафиксированный (default)

'регрессия'
'Томсон'

Синонимы для минимального прогноза среднеквадратической ошибки, который эквивалентен гребенчатой регрессии

'start'

Отправная точка для определенных отклонений psi в оптимизации наибольшего правдоподобия. Может быть задан как:

'random'

Выбирает d равномерно распределенные значения на интервале [0,1].

'Rsquared'

Выбирает стартовый вектор в качестве масштабного коэффициента времена diag(inv(corrcoef(X))) (значение по умолчанию). Для примеров смотрите Jöreskog [2].

Положительное целое число

Выполняет возмущенное количество наибольшего правдоподобия, каждый инициализированный как с 'random'. factoran возвращает подгонку с самой высокой вероятностью.

Матрица

Выполняет одно наибольшее правдоподобие, подходящее для каждого столбца заданной матрицы. i th оптимизация инициализируется со значениями от i th столбец. Матрица должна иметь строки d.

'rotate'

Метод раньше вращал факторные нагрузки и очки. 'rotate' может иметь те же значения как параметр 'Method' rotatefactors. Смотрите страницу с описанием для rotatefactors для полного описания доступных методов.

 

'none'

Не выполняет вращения.

 

'equamax'

Особый случай ортомакс. вращения. Используйте 'normalize', 'reltol' и параметры 'maxit', чтобы управлять деталями вращения.

 

'orthomax'

Ортогональное вращение, которое максимизирует критерий на основе отклонения загрузок.

Используйте 'coeff', 'normalize', 'reltol' и параметры 'maxit', чтобы управлять деталями вращения.

 

'parsimax'

Особый случай ортомакс. вращения (значение по умолчанию). Используйте 'normalize', 'reltol' и параметры 'maxit', чтобы управлять деталями вращения.

 

'pattern'

Выполняет любого наклонное вращение (значение по умолчанию) или ортогональное вращение, чтобы лучше всего совпадать с заданной матрицей шаблона. Используйте параметр 'type', чтобы выбрать тип вращения. Используйте параметр 'target', чтобы задать матрицу шаблона.

 

'procrustes'

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

Используйте параметр 'type', чтобы выбрать тип вращения. Используйте 'target', чтобы задать целевую матрицу.

 

'promax'

Выполняет наклонное procrustes вращение к целевой матрице, определенной factoran как функция ортомакс. решения.

Используйте параметр 'power', чтобы задать экспоненту для создания целевой матрицы. Поскольку 'promax' использует 'orthomax' внутренне, можно также задать параметры, которые применяются к 'orthomax'.

 

'quartimax'

Особый случай ортомакс. вращения (значение по умолчанию). Используйте 'normalize', 'reltol' и параметры 'maxit', чтобы управлять деталями вращения.

 

'varimax'

Особый случай ортомакс. вращения (значение по умолчанию). Используйте 'normalize', 'reltol' и параметры 'maxit', чтобы управлять деталями вращения.

 

Функция

Указатель на функцию к функции вращения формы

[B,T] = 
myrotation(A,...)

где A является d-by-m матрица невращаемых факторных нагрузок, B является d-by-m матрица вращаемых загрузок, и T является соответствующий m - попеременно-m матрица.

Используйте параметр factoran 'userargs', чтобы передать дополнительные аргументы этой функции вращения. Смотрите Пользовательскую Функцию Вращения.

'coeff'

Коэффициент, часто обозначаемый как γ, задавая определенный критерий 'orthomax'. Должен быть от 0 до 1. Значение 0 соответствует quartimax и 1, соответствует varimax. Значением по умолчанию является 1.

'normalize'

Отметьте указание, должна ли матрица загрузки быть нормирована строкой (1) или оставлена ненормированная (0) для вращения 'varimax' или 'orthomax'. Значение по умолчанию равняется 1.

'reltol'

Относительный допуск сходимости для 'orthomax' или вращения 'varimax'. Значением по умолчанию является sqrt(eps).

'maxit'

Предел итерации для 'orthomax' или вращения 'varimax'. Значением по умолчанию является 250.

'target'

Целевая матрица факторной нагрузки для вращения 'procrustes'. Требуемый для вращения 'procrustes'. Никакое значение по умолчанию.

'type'

Тип вращения 'procrustes'. Может быть 'oblique' (значение по умолчанию) или 'orthogonal'.

'power'

Экспонента для создания целевой матрицы во вращении 'promax'. Должен быть ≥ 1. Значением по умолчанию является 4.

'userargs'

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

'nobs'

Если X является ковариационной или корреляционной матрицей, указывает на количество наблюдений, которые использовались по его оценке. Это позволяет вычисление значения для нулевой гипотезы, даже когда исходные данные не доступны. Нет никакого значения по умолчанию. 'nobs' проигнорирован, если X является необработанными данными.

'delta'

Нижняя граница для определенных отклонений psi во время оптимизации наибольшего правдоподобия. Значением по умолчанию является 0.005.

'optimopts'

Структура, которая задает параметры управления для итеративного алгоритма функциональное использование, чтобы вычислить оценки наибольшего правдоподобия. Создайте эту структуру с функциональным statset. Введите statset('factoran'), чтобы видеть имена и значения по умолчанию параметров, которые factoran принимает в структуре options. Смотрите страницу с описанием для statset для получения дополнительной информации об этих опциях.

Примеры

свернуть все

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

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','cov')
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

% [Lambda,Psi,T] = factoran(corrcoef(X),2,'xtype','cov')

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

Используйте промакс. вращение.

[Lambda,Psi,T,stats,F] = factoran(X,2,'rotate','promax',...
                                      'powerpm',4);
inv(T'*T)                            % Estimated correlation of F, 
ans = 2×2

    1.0000   -0.6391
   -0.6391    1.0000

                                     % no longer eye(2)
Lambda*inv(T'*T)*Lambda'+diag(Psi)   % Estimated correlation of X
ans = 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)

Синтаксис для передачи дополнительных аргументов к пользовательской функции вращения:

[Lambda,Psi,T] = ...
     factoran(X,2,'rotate',@myrotation,'userargs',1,'two');

Больше о

свернуть все

Модель факторного анализа

factoran вычисляет оценку наибольшего правдоподобия (MLE) матрицы факторных нагрузок Λ в модели факторного анализа

x=μ+Λf+e

где x является вектором наблюдаемых переменных, μ является постоянным вектором средних значений, Λ является постоянной d-by-m матрицей факторных нагрузок, f является вектором независимых, стандартизированных общих множителей, и e является вектором независимых специфических факторов. x, μ и e имеют длину d. f имеет длину m.

Также модель факторного анализа может быть задана как

cov(x)=ΛΛT+Ψ

где Ψ=cov(e) d-by-d диагональная матрица определенных отклонений.

Советы

Наблюдаемые переменные данных

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

factoran стандартизирует наблюдаемые данные X, чтобы обнулить среднее значение и модульное отклонение прежде, чем оценить загрузки lambda. Это не влияет на образцовую подгонку, потому что MLEs в этой модели являются инвариантными, чтобы масштабироваться. Однако lambda и psi возвращены с точки зрения стандартизированных переменных, т.е. lambda*lambda'+diag(psi) является оценкой корреляционной матрицы исходных данных X (несмотря на то, что не после наклонного вращения). Смотрите Факторные нагрузки Оценки и Графика и Пользовательскую Функцию Вращения.

Случай Хейвуда

Если элементы psi равны значению параметра 'delta' (т.е. они - по существу нуль), подгонка известна как случай Хейвуда, и интерпретация получившихся оценок проблематична. В частности, может быть несколько локальных максимумов вероятности, каждого с различными оценками загрузок и определенных отклонений. Случаи Хейвуда могут указать на сверхподбор кривой (т.е. m является слишком большим), но может также быть результат underfitting.

Вращение факторных нагрузок и очков

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

Ссылки

[1] Харман, H. H. Современный факторный анализ. 3-й Эд. Чикаго: нажатие Чикагского университета, 1976.

[2] Jöreskog, K. G. “Некоторые Вклады в Факторный анализ Наибольшего правдоподобия”. Psychometrika. Издание 32, Выпуск 4, 1967, стр 443–482.

[3] Lawley, D. N. и А. Э. Максвелл. Факторный анализ как статистический метод. 2-й Эд. Нью-Йорк: American Elsevier Publishing Co., 1971.

Расширенные возможности

Представлено до R2006a