exponenta event banner

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 имеют максимальную ковариацию.

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

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

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

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

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

Примеры

свернуть все

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

load spectra
X = NIR;
y = octane;

Выполнить регрессию ПЛС с 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);

Постройте график VIP-оценок.

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 использует поток по умолчанию.

Примечание

Для параллельного выполнения вычислений требуется Toolbox™ параллельных вычислений.

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Алгоритмы

plsregress использует алгоритм SIMPLS [1]. Функция сначала центрирует X и Y вычитанием значения столбца для получения центрированных переменных предиктора и отклика X0 и Y0соответственно. Однако функция не выполняет масштабирование столбцов. Для выполнения регрессии ПЛС со стандартизированными переменными используйте 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] Росипал, Роман и Николь Крамер. «Обзор и последние изменения в частичных наименьших квадратах». Subpace, Latent Structure and Feature Selection: Statistics and Optimization Perspectives Workshop (SLSFS 2005), Revised Selected Papers (Lecture Notes in Computer Science 3940). Берлин, Германия: Springer-Verlag, 2006, том 3940, стр. 34-51. https://doi.org/10.1007/11752790_2.

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

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

Представлен в R2008a