主要内容

随机

广义线性回归模型的随机噪声响应模拟

描述

例子

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

例子

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

例子

全部折叠

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

使用泊松随机数和一个基本预测值生成样本数据X

rng(“默认”%为了再现性X=兰特(20,1);mu=exp(1+2*X);y=泊松比(μ);

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

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

为预测创建数据点。

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

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

Xnew ysim =随机(mdl);

绘制模拟值和原始值。

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

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

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

此示例简要说明了用于在命令行中预测线性回归模型的代码生成工作流。有关更多详细信息,请参阅机器学习模型在命令行预测的代码生成.您也可以使用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%MYRANDOMGLM使用GLM模型模拟响应% MYRANDOMGLM模拟n × 1的n个观察的响应%使用存储在MAT文件GLMMdl.MAT中的GLM模型的向量x,以及%然后返回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=myrandomglmex(x,“BinomialSize”n);

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

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

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象表示观察到的响应,模拟的响应。

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

输入参数

全部折叠

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

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

  • 如果Xnew是表还是数据集数组,它必须包含与预测器名称的属性mdl

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

数据类型:|双重的|表格

名称-值参数

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

例子: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是试验成功的预测数字。

选择功能

对于没有随机噪声的预测,使用预测节日

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

  • 节日接受多个输入参数,每个预测器变量有一个输入,这更容易用于从表或数据集数组创建的模型。的节日函数不支持名称-值对参数金宝app“抵消”“BinomialSize”这个函数uses 0 as the offset value, and the output values are predicted probabilities.

扩展功能

介绍了R2012a