предсказать

Предскажите ответ обобщенной модели линейной регрессии

Синтаксис

ypred = predict(mdl,Xnew)
[ypred,yci] = predict(mdl,Xnew)
[ypred,yci] = predict(mdl,Xnew,Name,Value)

Описание

ypred = predict(mdl,Xnew) возвращается предсказанный ответ mdl обобщил модель линейной регрессии к точкам в Xnew.

[ypred,yci] = predict(mdl,Xnew) возвращает доверительные интервалы для истинных средних ответов.

[ypred,yci] = predict(mdl,Xnew,Name,Value) предсказывает ответы с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

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

mdl

Обобщенная линейная модель, заданная как полный объект GeneralizedLinearModel, созданный с помощью fitglm или stepwiseglm или уплотненного объекта CompactGeneralizedLinearModel, созданного с помощью compact.

Xnew

Точки, в которых mdl предсказывает ответы.

  • Если Xnew является таблицей или массивом набора данных, он должен содержать имена предиктора в mdl.

  • Если Xnew является числовой матрицей, он должен иметь то же количество переменных (столбцы), как использовался, чтобы создать mdl. Кроме того, все переменные, используемые в создании mdl, должны быть числовыми.

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

'Alpha'

Положительная скалярная величина от 0 до 1. Доверительный уровень yci равняется 100 (1 – alpha) %.

Значение по умолчанию: 0.05, означая 95%-й доверительный интервал.

'BinomialSize'

Значение биномиального параметра n для каждой строки в данных тренировки. BinomialSize может быть вектором та же длина как Xnew или скаляр, который применяется к каждой строке. 1 значения по умолчанию производит значения ypred, которые являются предсказанными пропорциями. Используйте BinomialSize, только если mdl является подходящим к биномиальному распределению.

Значение по умолчанию: 1

'Offset'

Значение смещения для каждой строки в Xnew. Offset может быть вектором та же длина как Xnew или скаляр, который применяется к каждой строке. Смещение используется в качестве дополнительного предиктора с содействующим значением, зафиксированным в 1. Другими словами, если b является подходящим вектором коэффициентов, и link является функцией ссылки,

link(ypred) = Offset + Xnew * b.

Значение по умолчанию: zeros(size(Xnew,1))

'Simultaneous'

Логическое значение, задающее, являются ли доверительные границы для всех значений предиктора одновременно (true) или содержат для каждого отдельного значения предиктора (false). Одновременные границы более широки, чем отдельные границы, потому что это является более строгим, чтобы потребовать что целая кривая быть в границах, чем потребовать что кривая в одном значении предиктора быть в границах.

Для получения дополнительной информации смотрите polyconf.

По умолчанию: false

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

ypred

Вектор предсказанных средних значений в Xnew.

yci

Доверительные интервалы, матрица 2D столбца с каждой строкой, обеспечивающей один интервал. Значение доверительного интервала зависит от настроек пар "имя-значение".

Примеры

развернуть все

Создайте обобщенную линейную модель и предскажите ее ответ на новые данные.

Сгенерируйте искусственные данные для модели с помощью случайных чисел Пуассона с двумя базовыми предикторами X(1) и X(2).

rng('default') % For reproducibility
rndvars = randn(100,2);
X = [2+rndvars(:,1),rndvars(:,2)];
mu = exp(1 + X*[1;2]);
y = poissrnd(mu);

Создайте обобщенную модель линейной регрессии данных Пуассона.

mdl = fitglm(X,y,'y ~ x1 + x2','distr','poisson');

Точки формирования данных для прогноза.

[Xtest1 Xtest2] = meshgrid(-1:.5:3,-2:.5:2);
Xnew = [Xtest1(:),Xtest2(:)];

Предскажите ответы в новых точках.

ypred = predict(mdl,Xnew);

Постройте прогнозы.

surf(Xtest1,Xtest2,reshape(ypred,9,9))

Создайте доверительные интервалы на прогнозах.

[ypred yci] = predict(mdl,Xnew);

Обучите обобщенную линейную модель, и затем сгенерируйте код от функции, которая классифицирует новые наблюдения на основе модели. Этот пример основан на Обобщенном Линейном Образцовом примере Прогнозов.

Сгенерируйте искусственные данные.

rng('default') % For reproducibility
rndvars = randn(100,2);
X = [2+rndvars(:,1),rndvars(:,2)];
mu = exp(1 + X*[1;2]);
y = poissrnd(mu);

Создайте обобщенную модель линейной регрессии. Укажите, что распределением ответа является Пуассон.

mdl = fitglm(X,y,'y ~ x1 + x2','Distribution','poisson');

Точки формирования данных для прогноза.

[Xtest1 Xtest2] = meshgrid(-1:.5:3,-2:.5:2);
Xnew = [Xtest1(:),Xtest2(:)];

Сохраните подходящую обобщенную линейную модель в файл GLMMdl.mat.

saveCompactModel(mdl,'GLMMdl');

Задайте функцию в своей рабочей папке под названием mypredictGLM.m что:

  • Принимает измерения со столбцами, соответствующими тем в Xnew и допустимых аргументах пары "имя-значение"

  • Загружает приспособленную обобщенную линейную модель в GLMMdl.mat

  • Возвращает границы доверительного интервала и прогнозы

function [yhat,ci] = mypredictGLM(x,varargin) %#codegen
%MYPREDICTGLM Predict response using GLM model 
%   MYPREDICTGLM predicts responses for the n observations in the n-by-1
%   vector x using using the GLM model stored in the MAT-file GLMMdl.mat,
%   and then returns the predictions in the n-by-1 vector yhat.
%   MYPREDICTGLM also returns confidence interval bounds for the
%   predictions in the n-by-2 vector ci.
CompactMdl = loadCompactModel('GLMMdl');
narginchk(1,Inf);
[yhat,ci] = predict(CompactMdl,x,varargin{:});
end

Сгенерируйте MEX-функцию от mypredictGLM.m. Задайте возвращающиеся 90%-е одновременные доверительные интервалы на прогнозах. Поскольку C использует статический контроль типов, codegen должен определить свойства всех переменных в файлах MATLAB® во время компиляции. Чтобы определять аргументы как константы времени компиляции, используйте coder.Constant.

codegen -config:mex mypredictGLM -args {Xnew,coder.Constant('Alpha'),0.1,coder.Constant('Simultaneous'),true}

Файл MEX mypredictGLM_mex.mexw64 генерирует к вашей рабочей директории. Расширение файла зависит от вашей платформы системы.

Сравните прогнозы при помощи predict и mypredictGLM_mex. Задайте аргументы пары "имя-значение" в том же порядке как в аргументе -args в вызове codegen.

[yhat1,ci1] = predict(mdl,Xnew,'Alpha',0.1,'Simultaneous',true);
[yhat2,ci2] = mypredictGLM_mex(Xnew,'Alpha',0.1,'Simultaneous',true);

comp1 = (yhat1 - yhat2)'*(yhat1 - yhat2);
comp2 = diag((ci1 - ci2)'*(ci1 - ci2));
agree1 = comp1 < eps
agree2 = comp2 < eps
agree1 =

  logical

   1


agree2 =

  2x1 logical array

   1
   1

Сгенерированный файл MEX производит те же прогнозы как predict.

Советы

  • Для прогнозов с добавленным шумом используйте random.

  • Для синтаксиса, который может быть легче использовать с моделями, созданными из массивов набора данных, попробуйте feval.

Альтернативы

feval возвращает те же прогнозы, но использует отдельные входные массивы для каждого предиктора вместо одного входного массива, содержащего все предикторы.

random возвращает прогнозы с добавленным шумом.

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

Представленный в R2012a

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