случайный

Моделируйте ответы для обобщенной модели линейной регрессии

Синтаксис

ysim = random(mdl,Xnew)
ysim = random(mdl,Xnew,Name,Value)

Описание

ysim = random(mdl,Xnew) моделирует ответы от обобщенной линейной модели mdl до данных в Xnew.

ysim = random(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.

'BinomialSize'

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

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

'Offset'

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

link(ysim) = Offset + Xnew * b.

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

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

ysim

Вектор моделируемых значений в Xnew.

random генерирует ysim с помощью случайных значений со средним значением, данным подобранной моделью, и с распределением, используемым в mdl. Значения в ysim являются независимым условным выражением на предикторах. Для бинома и подгонок Пуассона, random генерирует ysim с заданным распределением без корректировки к любой предполагаемой дисперсии.

Примеры

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

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

Сгенерируйте искусственные данные для модели, случайных чисел Пуассона с базовыми предикторами X.

rng('default') % reproducible
X = rand(20,1);
mu = exp(1 + 2*X);
y = poissrnd(mu);

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

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

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

Xnew = (0:.05:1)';

Моделируйте ответы в новых точках.

ysim = random(mdl,Xnew);

Постройте моделируемые значения наряду с исходными значениями.

plot(X,y,'rx',Xnew,ysim,'bo',...
    Xnew,feval(mdl,Xnew),'g-')
legend('Data','Simulated','Fitted Mean',... 
    'Location','best')

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

Сгенерируйте искусственные данные в частности:

  • .

  • и.

  • .

rng('default') % For reproducibility
x = 1 + randn(100,1)*0.5;
beta = -2;
p = exp(1 + x*beta)./(1 + exp(1 + x*beta)); % Inverse logit
n = 10;
y = binornd(n,p,100,1);

Создайте обобщенную модель линейной регрессии биномиальных данных. Задайте биномиальный объем выборки 10.

mdl = fitglm(x,y,'y ~ x1','Distribution','Binomial','BinomialSize',n);

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

saveCompactModel(mdl,'GLMMdl');

В вашей текущей папке задайте функцию под названием myrandomGLM.m что:

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

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

  • Моделирует ответы из загруженной модели GLM

function y = myrandomGLM(x,varargin) %#codegen
%MYRANDOMGLM Simulate response using GLM model 
%   MYRANDOMGLM simulates responses for the n observations in the n-by-1
%   vector x using the GLM model stored in the MAT-file GLMMdl.mat, and
%   then returns the simulations in the n-by-1 vector y.
CompactMdl = loadCompactModel('GLMMdl');
narginchk(1,Inf);
y = random(CompactMdl,x,varargin{:});
end


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

codegen -config:mex myrandomGLM -args {x,coder.Constant('BinomialSize'),coder.Constant(n)}

codegen генерирует файл MEX myrandomGLM_mex.mexw64 в вашей текущей папке. Расширение файла зависит от вашей платформы.

Моделируйте ответы с помощью MEX-функции.

ysim = myrandomGLM_mex(x,'BinomialSize',n);

Постройте моделируемые значения и данные в той же фигуре.

figure;
plot(x,y,'bo',x,ysim,'r*');
legend('Observed responses','Simulated responses');
xlabel('x');
ylabel('y');

Наблюдаемые и моделируемые ответы, кажется, так же распределяются.

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

Для прогнозов без случайного шума используйте predict или feval.

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

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