Моделирование откликов со случайным шумом для обобщенной модели линейной регрессии
указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение. Например, можно указать количество испытаний для биномиального распределения или значение смещения, используемое для фитинга.ysim = random(mdl,Xnew,Name,Value)
Создайте обобщенную модель линейной регрессии и смоделируйте ее реакцию случайным шумом на новые данные.
Создание данных выборки с использованием случайных чисел Пуассона с одним основным предиктором X.
rng('default') % For reproducibility X = rand(20,1); mu = exp(1 + 2*X); y = poissrnd(mu);
Создайте обобщенную модель линейной регрессии данных Пуассона.
mdl = fitglm(X,y,'y ~ x1','Distribution','poisson');
Создание точек данных для прогнозирования.
Xnew = (0:.05:1)';
Моделирование ответов со случайным шумом в точках данных.
ysim = random(mdl,Xnew);
Постройте график смоделированных и исходных значений.
plot(X,y,'rx',Xnew,ysim,'bo',Xnew,feval(mdl,Xnew),'g-') legend('Data','Simulated Response with Noise','Predicted Response', ... 'Location','best')

В этом примере используются:
Поместите обобщенную модель линейной регрессии, а затем сохраните модель с помощью saveLearnerForCoder. Определение функции точки входа, которая загружает модель с помощью loadLearnerForCoder и вызывает predict функция подогнанной модели. Затем использовать codegen (Кодер MATLAB) для генерации кода C/C + +. Следует отметить, что для создания кода C/C + + требуется Coder™ MATLAB ®.
В этом примере кратко описывается рабочий процесс создания кода для прогнозирования моделей линейной регрессии в командной строке. Дополнительные сведения см. в разделе Создание кода для прогнозирования модели машинного обучения в командной строке. Можно также создать код с помощью приложения MATLAB Coder. Дополнительные сведения см. в разделе Создание кода для прогнозирования модели машинного обучения с помощью приложения MATLAB Coder App.
Модель поезда
Создание выборочных данных предиктора x и реагирование y со следующими распределениями:
).
1 = -2.
exp (1 + xβ)).
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.
saveLearnerForCoder(mdl,'GLMMdl');Определение функции точки входа
В текущей папке определите функцию точки входа с именем myrandomGLM.m это делает следующее:
Примите новые входные параметры предиктора и допустимые аргументы пары имя-значение.
Загрузить подогнанную обобщенную модель линейной регрессии в GLMMdl.mat с помощью loadLearnerForCoder.
Моделирование ответов из загруженной модели GLM.
function y = myrandomGLM(x,varargin) %#codegen %MYRANDOMGLM Simulate responses 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
Добавить %#codegen директива компилятора (или прагматика) для функции начального уровня после сигнатуры функции, указывающая, что предполагается создать код для алгоритма MATLAB. Добавление этой директивы дает команду анализатору кода MATLAB помочь в диагностике и устранении нарушений, которые могут привести к ошибкам при создании кода.
Создать код
Создание кода для функции точки входа с помощью codegen (Кодер MATLAB). Поскольку C и C++ являются статически типизированными языками, необходимо определить свойства всех переменных в функции точки входа во время компиляции. Чтобы указать тип данных и точный размер входного массива, передайте выражение MATLAB ®, представляющее набор значений с определенным типом данных и размером массива. Использоватьcoder.Constant (Кодер MATLAB) для имен аргументов пары имя-значение.
Укажите данные предиктора x и биномиальный параметр n.
codegen -config:mex myrandomGLM -args {x,coder.Constant('BinomialSize'),coder.Constant(n)}
Code generation successful.
codegen генерирует функцию MEX myrandomGLM_mex с расширением, зависящим от платформы.
Если количество наблюдений неизвестно во время компиляции, можно также указать входные данные как переменные размеры, используя coder.typeof (Кодер MATLAB). Дополнительные сведения см. в разделах Определение аргументов переменного размера для генерации кода и Определение свойств входов функции точки входа (кодер MATLAB).
Проверить созданный код
Моделирование ответов с помощью функции MEX. Укажите данные предиктора x и биномиальный параметр n.
ysim = myrandomGLM_mex(x,'BinomialSize',n);Постройте график смоделированных значений и данных на одном рисунке.
figure plot(x,y,'bo',x,ysim,'r*') legend('Observed responses','Simulated responses') xlabel('x') ylabel('y')

Наблюдаемые и смоделированные ответы, по-видимому, распределены аналогичным образом.
mdl - Обобщенная модель линейной регрессииGeneralizedLinearModel объект | CompactGeneralizedLinearModel объектОбобщенная модель линейной регрессии, заданная как GeneralizedLinearModel объект, созданный с помощью fitglm или stepwiseglm, или CompactGeneralizedLinearModel объект, созданный с помощью compact.
Xnew - Новые входные значения предиктораНовые входные значения предиктора, указанные как таблица, массив наборов данных или матрица. Каждая строка Xnew соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Если Xnew является таблицей или массивом наборов данных, он должен содержать предикторы, имеющие те же имена предикторов, что и в PredictorNames имущество mdl.
Если Xnew является матрицей, она должна иметь то же количество переменных (столбцов) в том же порядке, что и входные данные предиктора, используемые для создания mdl. Обратите внимание, что Xnew также должны содержать любые переменные предиктора, которые не используются в качестве предикторов в подогнанной модели. Кроме того, все переменные, используемые при создании mdl должен быть числовым. Чтобы рассматривать численные предикторы как категоричные, определите предикторы, используя 'CategoricalVars' аргумент пары имя-значение при создании mdl.
Типы данных: single | double | table
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
ysim = random(Mdl,Xnew,'BinomialSize',50) возвращает числа успешных, возмущенных случайным шумом, используя количество испытаний, указанное 'BinomialSize'.'BinomialSize' - Количество испытаний для биномиального распределенияКоличество испытаний для биномиального распределения, указанного как пара, разделенная запятыми, состоящая из 'BinomialSize' и скаляр или вектор той же длины, что и отклик. random расширяет скалярный ввод в постоянный массив того же размера, что и отклик. Скалярный ввод означает, что все наблюдения имеют одинаковое количество испытаний.
Значение выходных значений в ysim зависит от значения 'BinomialSize'.
Если 'BinomialSize' равно 1 (по умолчанию), затем каждое значение в выходных данных ysim - вероятность успеха.
Если 'BinomialSize' не равно 1, то каждое значение в выходных данных ysim - прогнозируемое число успехов в испытаниях.
Типы данных: single | double
'Offset' - Значение смещенияzeros(size(Xnew,1)) (по умолчанию) | скаляр | векторЗначение смещения для каждой строки в Xnew, указанная как пара, разделенная запятыми, состоящая из 'Offset' и скаляр или вектор с той же длиной, что и отклик. random расширяет скалярный ввод в постоянный массив того же размера, что и отклик.
Обратите внимание, что значение по умолчанию этого аргумента является вектором нулей, даже если указан 'Offset' аргумент пары имя-значение при подгонке модели. При указании 'Offset' для подгонки программное обеспечение обрабатывает смещение как дополнительный предиктор со значением коэффициента, фиксированным на 1. Другими словами, формула для подгонки
f (λ) = Offset + X*b,
где f - функция связи, λ - средний отклик, а X * b - линейная комбинация предикторов X. Offset предиктор имеет коэффициент 1.
Типы данных: single | double
ysim - Смоделированные значения ответаСмоделированные значения отклика, возвращаемые в виде числового вектора. Смоделированные значения являются прогнозируемыми значениями отклика при Xnew возмущен случайным шумом с распределением, заданным подогнанной моделью. Значения в ysim независимы, зависят от предикторов. Для биномиального и Пуассона подходит, random производит ysim с указанным распределением и без корректировки для любой расчетной дисперсии.
Если 'BinomialSize' равно 1 (по умолчанию), затем каждое значение в выходных данных ysim - вероятность успеха.
Если 'BinomialSize' не равно 1, то каждое значение в выходных данных ysim - прогнозируемое число успехов в испытаниях.
Для прогнозов без случайного шума используйте predict или feval.
predict принимает один входной аргумент, содержащий все переменные предиктора, и дает доверительные интервалы в своих прогнозах.
feval принимает несколько входных аргументов с одним входом для каждой переменной предиктора, что проще в использовании с моделью, созданной из таблицы или массива набора данных. feval функция не поддерживает аргументы пары имя-значение 'Offset' и 'BinomialSize'. Функция использует 0 в качестве значения смещения, а выходные значения являются прогнозируемыми вероятностями.
Примечания и ограничения по использованию:
Использовать saveLearnerForCoder, loadLearnerForCoder, и codegen (Кодер MATLAB) для создания кода для random функция. Сохранение обучаемой модели с помощью saveLearnerForCoder. Определение функции точки входа, которая загружает сохраненную модель с помощью loadLearnerForCoder и вызывает random функция. Затем использовать codegen для создания кода для функции точки входа.
random может возвращать другую последовательность чисел, чем MATLAB ®, если верно одно из следующих значений:
Выход нескалярный.
Входной параметр недопустим для распределения.
Эта таблица содержит примечания о аргументах random. Аргументы, не включенные в эту таблицу, полностью поддерживаются.
| Аргумент | Примечания и ограничения |
|---|---|
mdl | Примечания по использованию и ограничения объекта модели см. в разделе
Создание кода |
Xnew |
|
| Аргументы пары имя-значение |
Имена в аргументах пары имя-значение должны быть константами времени компиляции. Например, для использования |
Дополнительные сведения см. в разделе Введение в создание кода.
Эта функция полностью поддерживает массивы графических процессоров. Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Эта функция поддерживает объекты модели, оснащенные входными аргументами графического процессора.
CompactGeneralizedLinearModel | feval | GeneralizedLinearModel | predict
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.