plsregress

Частичная регрессия методом наименьших квадратов (PLS)

Описание

[XL,YL] = plsregress(X,Y,ncomp) возвращает предиктор и загрузки на ответ XL и YL, соответственно, для частичной регрессии откликов методом наименьших квадратов (PLS) в матрице Y на предикторах в матричной X, использование ncomp Компоненты ПЛС.

пример

[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = plsregress(X,Y,ncomp) также возвращает:

  • Предиктор оценивает XS. Счета предиктора являются компонентами PLS, которые являются линейными комбинациями переменных в X.

  • Ответ оценивает YS. Счета отклика являются линейными комбинациями откликов, с которыми компоненты PLS XS имеют максимальную ковариацию.

  • A матрицы BETA оценок коэффициентов для регрессии PLS. plsregress добавляет столбец таковых в матрицу X вычислить оценки коэффициентов для модели с постоянными терминами (точка пересечения).

  • Процент отклонений PCTVAR объясняется регрессионной моделью.

  • Предполагаемые средние квадратичные невязки MSE для моделей PLS с ncomp компоненты.

  • Структурный stats который содержит веса PLS, T2 статистические, и предикторные и ответные остатки.

[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = plsregress(___,Name,Value) задает опции, использующие один или несколько аргументов имя-значение в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Аргументы имя-значение задают MSE параметры вычисления. Для примера, 'cv',5 вычисляет MSE использование 5-кратной перекрестной проверки.

Примеры

свернуть все

Загрузите spectra набор данных. Создайте предиктор X в виде числовой матрицы, которая содержит ближнюю инфракрасную (NIR) спектральную интенсивность 60 выборок бензина на 401 длинах волн. Создайте ответ y как числовой вектор, который содержит соответствующие октановые оценки.

load spectra
X = NIR;
y = octane;

Выполните регрессию PLS с 10 компонентами откликов в y на предикторах в X.

[XL,yl,XS,YS,beta,PCTVAR] = plsregress(X,y,10);

Постройте график процента отклонения, объясняемой переменной отклика (PCTVAR) как функцию от количества компонентов.

plot(1:10,cumsum(100*PCTVAR(2,:)),'-bo');
xlabel('Number of PLS components');
ylabel('Percent Variance Explained in y');

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

Вычислите установленный ответ и отобразите невязки.

yfit = [ones(size(X,1),1) X]*beta;
residuals = y - yfit;
stem(residuals)
xlabel('Observations');
ylabel('Residuals');

Figure contains an axes. The axes contains an object of type stem.

Вычислите переменную важность в проекционной (VIP) счета для частичной регрессионой методом наименьших квадратов (PLS). Можно использовать VIP, чтобы выбрать переменные-предикторы, когда среди переменных существует многоколлинейность. Переменные с счетом VIP, больше 1, считаются важными для проекции регрессионой модели PLS [3].

Загрузите spectra набор данных. Создайте предиктор X в виде числовой матрицы, которая содержит ближнюю инфракрасную (NIR) спектральную интенсивность 60 выборок бензина на 401 длинах волн. Создайте ответ y как числовой вектор, который содержит соответствующие октановые оценки. Задайте количество компонентов ncomp.

load spectra
X = NIR;
y = octane;
ncomp = 10;

Выполните регрессию PLS с 10 компонентами откликов y на предикторах в X.

[XL,yl,XS,YS,beta,PCTVAR,MSE,stats] = plsregress(X,y,ncomp);

Вычислите нормированные веса PLS.

W0 = stats.W ./ sqrt(sum(stats.W.^2,1));

Вычислите VIP- счета для ncomp компоненты.

p = size(XL,1);
sumSq = sum(XS.^2,1).*sum(yl.^2,1);
vipScore = sqrt(p* sum(sumSq.*(W0.^2),2) ./ sum(sumSq,2));

Найдите переменные с VIP- счетом, большей или равной 1.

indVIP = find(vipScore >= 1);

Постройте графики счетов.

scatter(1:length(vipScore),vipScore,'x')
hold on
scatter(indVIP,vipScore(indVIP),'rx')
plot([1 length(vipScore)],[1 1],'--k')
hold off
axis tight
xlabel('Predictor Variables')
ylabel('VIP Scores')

Figure contains an axes. The axes contains 3 objects of type scatter, line.

Входные параметры

свернуть все

Переменные предиктора, заданные как числовая матрица. X является n -by - p матрицей, где n - количество наблюдений, а p - количество переменных предиктора. Каждая строка X представляет одно наблюдение, и каждый столбец представляет одну переменную. X должно иметь одинаковое число строк как Y.

Типы данных: single | double

Переменные отклика, заданные как числовая матрица. Y является n -by - m матрицей, где n - количество наблюдений, а m - количество переменных отклика. Каждая строка Y представляет одно наблюдение, и каждый столбец представляет одну переменную. Каждая строка в Y - ответ для соответствующей строки в X.

Типы данных: single | double

Количество компонентов, заданное в виде числового вектора. Если вы не задаете ncomp, значение по умолчанию является min(size(X,1) – 1,size(X,2)).

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'cv',10,'Options',statset('UseParallel',true) вычисляет MSE использование 10-кратной перекрестной валидации, где расчеты выполняются параллельно.

MSE метод вычисления, заданный как 'resubstitution', положительное целое число или cvpartition объект.

  • Задайте 'cv' как 'resubstitution' использовать обе X и Y для подгонки модели и оценки средних квадратичных невязок, без перекрестной валидации.

  • Задайте 'cv' как положительное целое число k использовать k-кратная перекрестная валидация.

  • Задайте 'cv' как cvpartition объект, чтобы задать другой тип раздела перекрестной проверки.

Пример: 'cv',5

Пример: 'cv',cvpartition(n,'Holdout',0.3)

Типы данных: single | double | char | string

Количество повторений Монте-Карло для перекрестной валидации, заданное как положительное целое число. Если вы задаете 'cv' как 'resubstitution', затем 'mcreps' должен быть равен 1.

Пример: 'mcreps',5

Типы данных: single | double

Опции для выполнения расчетов параллельно и настройки случайных потоков, заданные как структура. Создайте Options структура с statset. В этой таблице перечислены поля опций и их значения.

Имя поляЗначениеДефолт
UseParallelУстановите это значение равным true чтобы запустить расчеты параллельно.false
UseSubstreams

Установите это значение равным true проводить расчеты параллельно воспроизводимым способом.

Чтобы вычислить воспроизводимо, установите Streams к типу, который позволяет субпотоки: 'mlfg6331_64' или 'mrg32k3a'.

false
StreamsЗадайте это значение как RandStream объект или массив ячеек, состоящий из одного такого объекта.Если вы не задаете Streams, затем plsregress использует поток по умолчанию.

Примечание

Вам нужен Parallel Computing Toolbox™, чтобы запускать расчеты параллельно.

Пример: 'Options',statset('UseParallel',true)

Типы данных: struct

Выходные аргументы

свернуть все

Загрузки предиктора, возвращенные как числовая матрица. XL является p -by- ncomp матрица, где p - количество переменных предиктора и ncomp количество компонентов PLS. Каждая строка XL содержит коэффициенты, которые задают линейную комбинацию компонентов PLS, аппроксимирующую исходные переменные предиктора.

Типы данных: single | double

Загрузки отклика, возвращенные как числовая матрица. YL является m -by- ncomp матрица, где m - количество переменных отклика и ncomp количество компонентов PLS. Каждая строка YL содержит коэффициенты, которые задают линейную комбинацию компонентов PLS, аппроксимирующую исходные переменные отклика.

Типы данных: single | double

Предиктор оценивает, возвращается как числовая матрица. XS является n -by- ncomp ортонормальная матрица, где n - количество наблюдений и ncomp количество компонентов PLS. Каждая строка XS соответствует одному наблюдению, и каждый столбец соответствует одному компоненту.

Типы данных: single | double

Ответные счета, возвращенная как числовая матрица. YS является n -by- ncomp матрица, где n количество наблюдений и ncomp количество компонентов PLS. Каждая строка YS соответствует одному наблюдению, и каждый столбец соответствует одному компоненту. YS не ортогональен и не нормирован.

Типы данных: single | double

Оценки коэффициентов для регрессии PLS, возвращенные в виде числовой матрицы. BETA является (p + 1) -by - m матрицей, где p - количество переменных предиктора, а m - количество переменных отклика. Первая строка BETA содержит оценки коэффициентов для постоянных членов.

Типы данных: single | double

Процент отклонения, объясненный моделью, возвращенный как числовая матрица. PCTVAR является 2-байт- ncomp матрица, где ncomp количество компонентов PLS. Первая строка PCTVAR содержит процент отклонений, объясненный в X по каждому компоненту PLS, а вторая строка содержит процент отклонений, объясненный в Y.

Типы данных: single | double

Средняя квадратичная невязка, возвращенная как числовая матрица. MSE является 2-бай- (ncomp + 1) матрица, где ncomp количество компонентов PLS. MSE содержит оцененные средние квадратичные невязки для модели PLS с ncomp компоненты. Первая строка MSE содержит средние квадратичные невязки для переменных предиктора в X, а вторая строка содержит средние квадратичные невязки для переменных отклика в Y. Столбец j из MSE содержит средние квадратичные невязки для компонентов j – 1.

Типы данных: single | double

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

ОбластьОписание
Wp -by- ncomp матрица весов PLS так, что XS = X0*W
T2T2 статистическая величина для каждой точки в XS
XresidualsПредикторные невязки, X0 – XS*XL'
YresidualsНевязки отклика, Y0 – XS*YL'

Для получения дополнительной информации о центрированных переменных предиктора и отклика X0 и Y0, см. Алгоритмы.

Алгоритмы

plsregress использует алгоритм SIMPLS [1]. Функция сначала центрирует X и Y путем вычитания столбца означает получить центрированные переменные предиктора и отклика X0 и Y0, соответственно. Однако функция не перекраивает столбцы. Чтобы выполнить регрессию PLS со стандартизированными переменными, используйте zscore для нормализации X и Y (столбцы X0 и Y0 центрированы, чтобы иметь среднее 0 и масштабированы, чтобы иметь стандартное отклонение 1).

После центрирования X и Y, plsregress вычисляет сингулярное разложение (SVD) на X0'*Y0. Предиктор и загрузки на ответ XL и YL являются ли коэффициенты, полученные при регрессии X0 и Y0 на счет предиктора XS. Можно восстановить центрированные данные X0 и Y0 использование XS*XL' и XS*YL', соответственно.

plsregress первоначально вычисляет YS как YS = Y0*YL. По соглашению [1], однако, plsregress затем ортогонализует каждый столбец YS относительно предыдущих столбцов XS, так что XS'*YS является нижней треугольной матрицей.

Ссылки

[1] де Йонг, Сижмен. SIMPLS: альтернативный подход к частичной регрессии методом наименьших квадратов. Химометрия и интеллектуальные лабораторные системы 18, № 3 (март 1993): 251-63. https://doi.org/10.1016/0169-7439 (93) 85002-X.

[2] Розипал, Роман и Николь Крамер. «Обзор и последние усовершенствования в частичных наименьших квадратах». Subspace, Latent Structure and Выбора признаков: Statistical and Optimization Perspectives Workshop (SLSFS 2005), Revised Selected Papers (Lecture Notes in Computer Science 3940). Берлин, Германия: Springer-Verlag, 2006, vol. 3940, pp. 34-51. https://doi.org/10.1007/11752790_2.

[3] Chong, Il-Gyo, and Chi-Hyuck Jun. «Эффективность некоторых переменных методов выбора, когда присутствует мультиколлинеарность». Химометрия и интеллектуальные лабораторные системы 78, № 1-2 (июль 2005) 103-12. https://doi.org/10.1016/j.chemolab.2004.12.011.

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

Введенный в R2008a