文档帮助中心文档
对广义线性回归模型在随机噪声下的响应进行模拟
Xnew ysim =随机(mdl)
ysim =随机(mdl Xnew、名称、值)
例子
ysim=随机(mdl,Xnew)模拟对预测器数据的响应Xnew采用广义线性回归模型mdl,添加随机噪声。
ysim=随机(mdl,Xnew)
ysim
mdl
Xnew
ysim=随机(mdl,Xnew,名称,值)使用一个或多个名称-值对参数指定其他选项。例如,您可以指定二项分布的试验次数或用于拟合的偏移值。
ysim=随机(mdl,Xnew,名称,值)
名称,值
全部折叠
建立广义线性回归模型,模拟随机噪声对新数据的响应。
使用带有一个潜在预测器的泊松随机数生成样本数据X.
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 -”)传说(“数据”,“噪声模拟响应”,“预测响应”,…“位置”,“最佳”)
这个示例使用:
拟合一个广义线性回归模型,然后使用保存模型saveLearnerForCoder.定义一个入口点函数,通过使用loadLearnerForCoder并调用预测拟合模型的函数。然后使用codegen(MATLAB编码器)生成C/ c++代码。请注意,生成C/ c++代码需要MATLAB®Coder™。
saveLearnerForCoder
loadLearnerForCoder
预测
codegen
这个例子简要地解释了在命令行中预测线性回归模型的代码生成工作流。有关详细信息,请参见机器学习模型在命令行预测的代码生成.您也可以使用MATLAB Coder应用程序生成代码基于MATLAB编码器的机器学习模型预测代码生成.
火车模型
生成预测器的样本数据x和响应y使用以下发行版:
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.
GLMMdl.mat
saveLearnerForCoder (mdl“GLMMdl”);
定义入口点函数
在当前文件夹中,定义一个名为myrandomGLM.m它的作用如下:
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
生成代码
使用生成入口点函数的代码codegen(MATLAB编码器).因为C和c++都是静态类型语言,所以必须在编译时确定入口点函数中所有变量的属性。要指定数据类型和准确的输入数组大小,请传递一个MATLAB®表达式,该表达式表示具有特定数据类型和数组大小的值集。使用编码器。常数(MATLAB编码器)用于名称-值对参数的名称。
编码器。常数
指定预测器数据x和二项参数n.
n
codegen配置:墨西哥人myrandomGLMarg游戏{x, coder.Constant(“BinomialSize”),coder.Constant (n)}
代码生成成功。
codegen生成MEX函数myrandomGLM_mex与平台相关的扩展。
myrandomGLM_mex
如果在编译时观察值的数量未知,还可以使用coder.typeof(MATLAB编码器).有关详细信息,请参见为代码生成指定可变大小参数和指定入口点函数输入的属性(MATLAB编码器).
coder.typeof
验证生成的代码
使用MEX函数模拟响应。指定预测器数据x和二项参数n.
ysim = myrandomGLM_mex (x,“BinomialSize”n);
将模拟值与数据绘制在同一张图中。
图绘制(x, y,“波”, x, ysim的r *)传说(观察到的反应的,“模拟反应”)包含(“x”) ylabel (“y”)
观察到的响应和模拟的响应似乎具有类似的分布。
GeneralizedLinearModel
CompactGeneralizedLinearModel
广义线性回归模型,指定为GeneralizedLinearModel对象创建使用fitglm或stepwiseglm,或者一个CompactGeneralizedLinearModel对象创建使用紧凑的.
fitglm
stepwiseglm
紧凑的
新的预测器输入值,指定为表、数据集数组或矩阵。每一行的Xnew对应一个观察值,每一列对应一个变量。
如果Xnew是表还是数据集数组,它必须包含与PredictorNames的属性mdl.
PredictorNames
如果Xnew是一个矩阵,它必须有相同数量的变量(列)在相同的顺序,作为预测器输入用于创建mdl.请注意,Xnew还必须包含在拟合模型中未用作预测因子的任何预测因子变量。此外,创建时使用的所有变量mdl必须是数值。要将数值预测器视为分类预测器,请使用“CategoricalVars”创建时的名称-值对参数mdl.
“CategoricalVars”
数据类型:单|双|表格
单
双
表格
指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家.
的名字
价值
Name1, Value1,…,的家
ysim =随机(Mdl、Xnew BinomialSize, 50)
“BinomialSize”
二项分布的试验次数,指定为由逗号分隔的对组成“BinomialSize”和响应长度相同的标量或向量。随机将标量输入展开为与响应大小相同的常量数组。标量输入意味着所有的观察结果有相同的试验次数。
随机
中输出值的含义ysim取决于价值“BinomialSize”.
如果“BinomialSize”是1(默认值),那么输出中的每个值ysim就是成功的概率。
如果“BinomialSize”不是1,那么输出中的每个值ysim是试验成功的预测数字。
数据类型:单|双
“抵消”
0(大小(Xnew,1))
中每一行的偏移值Xnew,指定为逗号分隔的对,由“抵消”和响应长度相同的标量或向量。随机将标量输入展开为与响应大小相同的常量数组。
注意,此参数的默认值是一个零向量,即使您指定“抵消”当拟合模型时的名称-值对参数。如果您指定“抵消”为了进行拟合,该软件将偏移量作为一个系数值固定为1的附加预测因子。换句话说,拟合公式为
f(μ)=抵消+X*b,
=抵消+X*b
在哪里f为链接函数,μ平均值是多少X*b是预测因子的线性组合吗X.的抵消预测了系数1.
抵消
1
模拟的响应值,作为数字向量返回。模拟值是在Xnew受随机噪声扰动,其分布由拟合模型给出。中的值ysim是独立的,取决于预测因子。对于二项式和泊松拟合,随机生成ysim与指定的分布和不调整任何估计离散。
对于没有随机噪声的预测,使用预测或函数宏指令.
函数宏指令
预测接受一个包含所有预测变量的输入参数,并给出其预测的置信区间。
函数宏指令接受多个输入参数,每个预测器变量有一个输入,这更容易用于从表或数据集数组创建的模型。的函数宏指令函数不支持名称-值对参数万博1manbetx“抵消”和“BinomialSize”.该函数使用0作为偏移值,输出值是预测的概率。
使用注意事项及限制:
使用saveLearnerForCoder,loadLearnerForCoder,codegen(MATLAB编码器)生成的代码随机函数。通过使用保存一个训练过的模型saveLearnerForCoder.定义一个入口点函数,通过使用loadLearnerForCoder并调用随机函数。然后使用codegen为入口点函数生成代码。
随机可以返回一个不同的数字序列比MATLAB®如果下列任何一项为真:
输出是非标量的。
输入参数对该分布无效。
这个表格包含关于的参数的注释随机.表中未包含的参数完全支持。万博1manbetx
有关模型对象的使用说明和限制,请参见代码生成的CompactGeneralizedLinearModel对象。
Xnew必须是单精度或双精度矩阵,或包含数字变量、分类变量或两者的表。
中的行数或观察值Xnew可以是一个可变的大小,但是Xnew必须是固定的。
如果你想指定Xnew作为一个表,那么你的模型必须使用一个表训练,你必须确保你的入口点函数的预测:
接受数据为数组
根据数据输入参数创建表,并指定表中的变量名
把桌子传递给预测
有关此表格工作流的示例,请参见生成代码对表中的数据进行分类.有关在代码生成中使用表的更多信息,请参见表的代码生成(MATLAB编码器)和代码生成的表限制(MATLAB编码器).
名称-值对参数中的名称必须是编译时常量。例如,使用“BinomialSize”生成的代码中的名称-值对参数,包括{coder.Constant(“BinomialSize”),0}在arg游戏的价值codegen(MATLAB编码器).
{coder.Constant(“BinomialSize”),0}
arg游戏
有关更多信息,请参见代码生成简介.
该功能完全支持GPU阵列。万博1manbetx有关更多信息,请参见在GPU上运行MATLAB函数(并行计算工具箱).
这个函数支持带有GPU阵列输万博1manbetx入参数的模型对象。
CompactGeneralizedLinearModel|函数宏指令|GeneralizedLinearModel|预测
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系