plsregress

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

Описание

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

пример

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

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

  • Баллы ответа YS. Баллы ответа являются линейными комбинациями ответов с который компоненты PLEASE XS имейте максимальную ковариацию.

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

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

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

  • Структура stats это содержит веса PLEASE, T2 статистическая величина, и предиктор и остаточные значения ответа.

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

Примеры

свернуть все

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

load spectra
X = NIR;
y = octane;

Выполните регрессию PLEASE с 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 object. The axes object 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 object. The axes object contains an object of type stem.

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

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

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

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

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

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

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 object. The axes object 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 имя аргумента и 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Задайте это значение как a RandStream возразите или массив ячеек, состоящий из одного такого объекта.Если вы не задаете Streamsто plsregress использует поток по умолчанию.

Примечание

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

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Алгоритмы

plsregress использует алгоритм SIMPLS [1]. Функция сначала сосредотачивает X и Y путем вычитания столбца означает получать переменные прогноза и переменные отклика в центре X0 и Y0, соответственно. Однако функция не перемасштабирует столбцы. Чтобы выполнить регрессию PLEASE со стандартизированными переменными, использовать 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] Де Йонг, Sijmen. “SIMPLS: Альтернативный Подход к Частичной Регрессии Наименьших квадратов”. Хемометрики и Интеллектуальные Лабораторные Системы 18, № 3 (март 1993): 251–63. https://doi.org/10.1016/0169-7439 (93) 85002-X.

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

[3] Чон, Il-Gyo, и июнь Хи-Hyuck. “Эффективность Некоторых Методов Выбора переменной, Когда Мультиколлинеарность Присутствует”. Хемометрики и Интеллектуальные Лабораторные Системы 78, № 1-2 (июль 2005) 103–12. https://doi.org/10.1016/j.chemolab.2004.12.011.

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

Введенный в R2008a
Для просмотра документации необходимо авторизоваться на сайте