主要内容

随机

对广义线性回归模型在随机噪声下的响应进行模拟

描述

例子

ysim=随机(mdlXnew模拟对预测器数据的响应Xnew采用广义线性回归模型mdl,添加随机噪声。

例子

ysim=随机(mdlXnew名称,值使用一个或多个名称-值对参数指定其他选项。例如,您可以指定二项分布的试验次数或用于拟合的偏移值。

例子

全部折叠

建立广义线性回归模型,模拟随机噪声对新数据的响应。

使用带有一个潜在预测器的泊松随机数生成样本数据X

rng (“默认”%的再现性1 X =兰特(20日);mu = exp(1 + 2*X);y = poissrnd(μ);

建立Poisson数据的广义线性回归模型。

mdl = fitglm (X, y,“y ~ x1”“分布”“泊松”);

为预测创建数据点。

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

在数据点模拟随机噪声的响应。

Xnew ysim =随机(mdl);

绘制模拟值和原始值。

情节(X, y,“处方”Xnew ysim,“波”Xnew、Xnew函数宏指令(mdl),“g -”)传说(“数据”“噪声模拟响应”“预测响应”“位置”“最佳”

图中包含一个坐标轴。轴线包含3个线型对象。这些对象代表数据、带有噪声的模拟响应、预测响应。

拟合一个广义线性回归模型,然后使用保存模型saveLearnerForCoder.定义一个入口点函数,通过使用loadLearnerForCoder并调用预测拟合模型的函数。然后使用codegen(MATLAB编码器)生成C/ c++代码。请注意,生成C/ c++代码需要MATLAB®Coder™。

这个例子简要地解释了在命令行中预测线性回归模型的代码生成工作流。有关详细信息,请参见机器学习模型在命令行预测的代码生成.您也可以使用MATLAB Coder应用程序生成代码基于MATLAB编码器的机器学习模型预测代码生成

火车模型

生成预测器的样本数据x和响应y使用以下发行版:

  • x N 1 0 5 2

  • β 0 1 β - 2

  • y B n o 一个 l 1 0 e x p 1 + x β 1 + e x p 1 + x β

rng (“默认”%的再现性X = 1 + randn(100,1)*0.5;β= 2;P = exp(1 + x*beta)/(1 + exp(1 + x*beta));%逆分对数n = 10;y = binornd (n, p, 100, (1);

建立二项数据的广义线性回归模型。指定二项样本容量为10。

mdl = fitglm (x, y,“y ~ x1”“分布”“二”“BinomialSize”n);

保存模型

将拟合的广义线性回归模型保存到文件中GLMMdl.mat通过使用saveLearnerForCoder

saveLearnerForCoder (mdl“GLMMdl”);

定义入口点函数

在当前文件夹中,定义一个名为myrandomGLM.m它的作用如下:

  • 接受新的预测器输入和有效的名称-值对参数。

  • 加载拟合的广义线性回归模型GLMMdl.mat通过使用loadLearnerForCoder

  • 模拟加载的GLM模型的响应。

函数y = myrandomGLM (x,变长度输入宗量)% # codegen使用GLM模型模拟响应% MYRANDOMGLM模拟n × 1的n个观察的响应%向量x使用存储在mat文件GLMMdl中的GLM模型。垫,%然后返回n × 1向量y中的模拟结果。CompactMdl = loadLearnerForCoder (“GLMMdl”);narginchk(正);x, y =随机(CompactMdl变长度输入宗量{:});结束

添加% # codegen编译器指令(或pragma)到函数签名后的入口点函数,以指示您打算为MATLAB算法生成代码。添加此指令将指示MATLAB代码分析器帮助您诊断和修复在代码生成期间可能导致错误的违规。

生成代码

使用生成入口点函数的代码codegen(MATLAB编码器).因为C和c++都是静态类型语言,所以必须在编译时确定入口点函数中所有变量的属性。要指定数据类型和准确的输入数组大小,请传递一个MATLAB®表达式,该表达式表示具有特定数据类型和数组大小的值集。使用编码器。常数(MATLAB编码器)用于名称-值对参数的名称。

指定预测器数据x和二项参数n

codegen配置:墨西哥人myrandomGLMarg游戏{x, coder.Constant(“BinomialSize”),coder.Constant (n)}
代码生成成功。

codegen生成MEX函数myrandomGLM_mex与平台相关的扩展。

如果在编译时观察值的数量未知,还可以使用coder.typeof(MATLAB编码器).有关详细信息,请参见为代码生成指定可变大小参数指定入口点函数输入的属性(MATLAB编码器)

验证生成的代码

使用MEX函数模拟响应。指定预测器数据x和二项参数n

ysim = myrandomGLM_mex (x,“BinomialSize”n);

将模拟值与数据绘制在同一张图中。

图绘制(x, y,“波”, x, ysim的r *)传说(观察到的反应的“模拟反应”)包含(“x”) ylabel (“y”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象表示观察到的响应,模拟的响应。

观察到的响应和模拟的响应似乎具有类似的分布。

输入参数

全部折叠

广义线性回归模型,指定为GeneralizedLinearModel对象创建使用fitglmstepwiseglm,或者一个CompactGeneralizedLinearModel对象创建使用紧凑的

新的预测器输入值,指定为表、数据集数组或矩阵。每一行的Xnew对应一个观察值,每一列对应一个变量。

  • 如果Xnew是表还是数据集数组,它必须包含与PredictorNames的属性mdl

  • 如果Xnew是一个矩阵,它必须有相同数量的变量(列)在相同的顺序,作为预测器输入用于创建mdl.请注意,Xnew还必须包含在拟合模型中未用作预测因子的任何预测因子变量。此外,创建时使用的所有变量mdl必须是数值。要将数值预测器视为分类预测器,请使用“CategoricalVars”创建时的名称-值对参数mdl

数据类型:||表格

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:ysim =随机(Mdl、Xnew BinomialSize, 50)使用指定的试验次数返回被随机噪声干扰的成功次数“BinomialSize”

二项分布的试验次数,指定为由逗号分隔的对组成“BinomialSize”和响应长度相同的标量或向量。随机将标量输入展开为与响应大小相同的常量数组。标量输入意味着所有的观察结果有相同的试验次数。

中输出值的含义ysim取决于价值“BinomialSize”

  • 如果“BinomialSize”是1(默认值),那么输出中的每个值ysim就是成功的概率。

  • 如果“BinomialSize”不是1,那么输出中的每个值ysim是试验成功的预测数字。

数据类型:|

中每一行的偏移值Xnew,指定为逗号分隔的对,由“抵消”和响应长度相同的标量或向量。随机将标量输入展开为与响应大小相同的常量数组。

注意,此参数的默认值是一个零向量,即使您指定“抵消”当拟合模型时的名称-值对参数。如果您指定“抵消”为了进行拟合,该软件将偏移量作为一个系数值固定为1的附加预测因子。换句话说,拟合公式为

fμ=抵消+Xb

在哪里f为链接函数,μ平均值是多少Xb是预测因子的线性组合吗X.的抵消预测了系数1

数据类型:|

输出参数

全部折叠

模拟的响应值,作为数字向量返回。模拟值是在Xnew受随机噪声扰动,其分布由拟合模型给出。中的值ysim是独立的,取决于预测因子。对于二项式和泊松拟合,随机生成ysim与指定的分布和不调整任何估计离散。

  • 如果“BinomialSize”是1(默认值),那么输出中的每个值ysim就是成功的概率。

  • 如果“BinomialSize”不是1,那么输出中的每个值ysim是试验成功的预测数字。

选择功能

对于没有随机噪声的预测,使用预测函数宏指令

  • 预测接受一个包含所有预测变量的输入参数,并给出其预测的置信区间。

  • 函数宏指令接受多个输入参数,每个预测器变量有一个输入,这更容易用于从表或数据集数组创建的模型。的函数宏指令函数不支持名称-值对参数万博1manbetx“抵消”“BinomialSize”.该函数使用0作为偏移值,输出值是预测的概率。

扩展功能

介绍了R2012a