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 со следующими полями:

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

  • T2T 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