random

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

Синтаксис

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 mustBeNumeric.

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

Задайте дополнительные разделенные запятой пары Name,Value аргументы. 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.

saveLearnerForCoder(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 = loadLearnerForCoder('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