plsregress

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

Синтаксис

[XL,YL] = plsregress(X,Y,ncomp)
[XL,YL,XS] = plsregress(X,Y,ncomp)
[XL,YL,XS,YS] = plsregress(X,Y,ncomp)
[XL,YL,XS,YS,BETA] = plsregress(X,Y,ncomp,...)
[XL,YL,XS,YS,BETA,PCTVAR] = plsregress(X,Y,ncomp)
[XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(X,Y,ncomp)
[XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(...,param1,val1,param2,val2,...)
[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = plsregress(X,Y,ncomp,...)

Описание

[XL,YL] = plsregress(X,Y,ncomp) вычисляет регрессию частичных наименьших квадратов (PLS) Y на X, с помощью ncomp компоненты PLEASE, и возвращает предиктор и загрузки ответа в XL и YL, соответственно. X является n-by-p матрица переменных прогноза со строками, соответствующими наблюдениям и столбцам к переменным. Y является n-by-m матрица ответа. XL является p-by-ncomp матрица загрузок предиктора, где каждая строка содержит коэффициенты, которые задают линейную комбинацию компонентов PLEASE, которые аппроксимируют исходные переменные прогноза. YL является m-by-ncomp матрица загрузок ответа, где каждая строка содержит коэффициенты, которые задают линейную комбинацию компонентов PLEASE, которые аппроксимируют исходные переменные отклика.

[XL,YL,XS] = plsregress(X,Y,ncomp) возвращает очки предиктора XS, то есть, компоненты PLEASE, которые являются линейными комбинациями переменных в X. XS является n-by-ncomp ортонормированная матрица со строками, соответствующими наблюдениям и столбцам к компонентам.

[XL,YL,XS,YS] = plsregress(X,Y,ncomp) возвращает очки ответа YS, то есть, линейные комбинации ответов, с которыми компоненты PLEASE XS имеют максимальную ковариацию. YS является n-by-ncomp матрица со строками, соответствующими наблюдениям и столбцам к компонентам. YS не является ни ортогональным, ни нормирован.

plsregress использует алгоритм SIMPLS, сначала сосредотачивая X, и Y путем вычитания от столбца означает получать сосредоточенные переменные X0 и Y0. Однако это не повторно масштабирует столбцы. Чтобы выполнить PLEASE со стандартизированными переменными, используйте zscore, чтобы нормировать X и Y.

Если ncomp не использован, его значением по умолчанию является min(size(X,1)-1,size(X,2)).

Отношения между очками, загрузками и сосредоточенными переменными X0 и Y0:

XL = (XS\X0)' = X0'*XS,

YL = (XS\Y0)' = Y0'*XS,

XL и YL являются коэффициентами от регрессирующего X0 и Y0 на XS, и XS*XL' и XS*YL' являются приближениями PLEASE к X0 и Y0.

plsregress первоначально вычисляет YS как:

YS = Y0*YL = Y0*Y0'*XS,

Условно, однако, plsregress затем ортогонализирует каждый столбец YS относительно предыдущих столбцов XS, так, чтобы XS'*YS был нижним треугольным.

[XL,YL,XS,YS,BETA] = plsregress(X,Y,ncomp,...) возвращает коэффициенты регрессии PLEASE BETA. BETA (p +1)-by-m матрица, содержа условия прерывания в первой строке:

Y = [ones(n,1),X]*BETA + Yresiduals,

Y0 = X0*BETA(2:end,:) + Yresiduals. Здесь Yresiduals является вектором невязок ответа.

[XL,YL,XS,YS,BETA,PCTVAR] = plsregress(X,Y,ncomp) возвращает 2 ncomp матричным PCTVAR, содержащим процент отклонения, объясненного моделью. Первая строка PCTVAR содержит процент отклонения, объясненного в X каждым компонентом PLEASE, и вторая строка содержит процент отклонения, объясненного в Y.

[XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(X,Y,ncomp) возвращает 2-by-(ncomp +1), матричный MSE, содержащий, оценил среднеквадратические ошибки для моделей PLEASE с компонентами 0:ncomp. Первая строка MSE содержит среднеквадратические ошибки для переменных прогноза в X, и вторая строка содержит среднеквадратические ошибки для переменной (переменных) отклика в Y.

[XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(...,param1,val1,param2,val2,...) задает дополнительное название параметра / пары значения из следующей таблицы, чтобы управлять вычислением MSE.

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

Метод раньше вычислял MSE.

  • Когда значением является положительный целочисленный k, plsregress использует k - перекрестная проверка сгиба.

  • Когда значение является объектом класса cvpartition, другие формы перекрестной проверки могут быть заданы.

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

Значением по умолчанию является 'resubstitution'.

'mcreps'

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

options

Структура, которая задает, запуститься ли параллельно, и задает случайный поток или потоки. Создайте структуру options с statset. Поля опции:

  • 'UseParallel' Установите на true, чтобы вычислить параллельно. Значением по умолчанию является false.

  • UseSubstreams — Установите на true, чтобы вычислить параллельно восстанавливаемым способом. Значением по умолчанию является false. Чтобы вычислить восстанавливаемо, установите Streams на тип, позволяющий подпотоки: 'mlfg6331_64' или 'mrg32k3a'.

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

Чтобы вычислить параллельно, вам нужен Parallel Computing Toolbox™

[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = plsregress(X,Y,ncomp,...) возвращает структуру stats со следующими полями:

  • W p-by-ncomp матрица весов PLEASE так, чтобы XS = X0*W.

  • T2 T 2 статистических величины для каждой точки в XS.

  • Xresiduals — Невязки предиктора, то есть, X0-XS*XL'.

  • Yresiduals — Невязки ответа, то есть, Y0-XS*YL'.

Примеры

свернуть все

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

load spectra
X = NIR;
y = octane;

Выполните регрессию PLEASE с десятью компонентами.

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

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

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

Вычислите подходящий ответ и отобразите невязки.

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

Ссылки

[1] Де Йонг, S. “SIMPLS: Альтернативный Подход к Частичной Регрессии Наименьших квадратов”. Хемометрики и Интеллектуальные Лабораторные Системы. Издание 18, 1993, стр 251–263.

[2] Rosipal, R. и Н. Крамер. “Обзор и Недавние Усовершенствования в Частичных Наименьших квадратах”. Подпространство, Скрытый Выбор Структуры и Функции: Статистический и Семинар по Перспективам Оптимизации (SLSFS 2005), Пересмотренный, Выбрал Papers (Lecture Notes in Computer Science 3940). Берлин, Германия: Springer-Verlag, 2006, стр 34–51.

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

Смотрите также

|

Введенный в R2008a