主要内容

预测

预测广义线性回归模型的响应

描述

例子

ypred=预测(mdlXnew返回广义线性回归模型的预测响应值mdl在这一点上Xnew

ypred开办预测,预测mdlXnew还返回响应的置信区间Xnew

例子

ypred开办预测,预测mdlXnew名称,值使用一个或多个名称-值对参数指定其他选项。例如,可以指定置信区间的置信级别。

例子

全部折叠

建立一个广义线性回归模型,并预测其对新数据的响应。

使用带有两个基础预测器的泊松随机数生成样本数据X (: 1)而且X (:, 2)

rng (“默认”%用于重现性Rndvars = randn(100,2);X = [2 + rndvars(:,1),rndvars(:,2)];mu = exp(1 + X*[1;2]);Y = poissrnd(mu);

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

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

为预测创建数据点。

[Xtest1,Xtest2] = meshgrid(-1:.5:3,-2:.5:2);Xnew = [Xtest1(:),Xtest2(:)];

在数据点上预测响应。

ypred = predict(mdl,Xnew);

绘制预测图。

冲浪(Xtest1 Xtest2,重塑(ypred 9 9))

图中包含一个axes对象。axis对象包含一个类型为surface的对象。

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

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

火车模型

使用带有两个基础预测器的泊松随机数生成样本数据X (: 1)而且X (:, 2)

rng (“默认”%用于重现性Rndvars = randn(100,2);X = [2 + rndvars(:,1),rndvars(:,2)];mu = exp(1 + X*[1;2]);Y = poissrnd(mu);

创建一个广义线性回归模型。指定响应的泊松分布。

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

保存模型

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

saveLearnerForCoder (mdl“GLMMdl”);

定义入口点函数

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

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

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

  • 返回预测和置信区间边界。

函数[yhat,ci] = mypredictGLM(x,varargin)% # codegen使用GLM模型预测响应% MYPREDICTGLM预测n × 1矩阵中n个观察值的响应% vector x使用存储在mat文件GLMMdl.mat中的GLM模型,%,然后返回n × 1向量yhat中的预测结果。的置信区间边界n × 2向量ci中的%预测。CompactMdl = loadLearnerForCoder(“GLMMdl”);narginchk(正);[yhat,ci] = predict(CompactMdl,x,varargin{:});结束

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

生成代码

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

为预测创造分数。

[Xtest1,Xtest2] = meshgrid(-1:.5:3,-2:.5:2);Xnew = [Xtest1(:),Xtest2(:)];

生成代码并指定在预测上返回90%的同时置信区间。

codegenmypredictGLMarg游戏{Xnew, coder.Constant(α),0.1,coder.Constant(同步),真正的}
代码生成成功。

codegen生成MEX函数mypredictGLM_mex使用一个平台相关的扩展。

如果在编译时不知道观察的数量,还可以使用coder.typeof(MATLAB编码器).详情请参见为代码生成指定可变大小的参数而且指定入口点函数输入的属性(MATLAB编码器)

验证生成的代码

比较预测和置信区间预测而且mypredictGLM_mex.中指定名称-值对参数的顺序与arg游戏参数的调用codegen

[yhat1,ci1] = predict(mdl,Xnew,“α”, 0.1,“同时”,真正的);[yhat2,ci2] = mypredictGLM_mex(Xnew,“α”, 0.1,“同时”,真正的);

的返回值。mypredictGLM_mex的值可能包含舍入差异预测.在这种情况下,比较允许小偏差的值。

查找(abs(yhat1-yhat2) > 1e-6)
Ans = 0x1空双列向量
Find (abs(ci1-ci2) > 1e-6)
Ans = 0x1空双列向量

比较确认返回值在公差范围内相等1 e-6

输入参数

全部折叠

广义线性回归模型,具体为GeneralizedLinearModel使用fitglmstepwiseglm,或CompactGeneralizedLinearModel使用紧凑的

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

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

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

数据类型:||表格

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:[ypred,yci] = predict(Mdl,Xnew,'Alpha',0.01,'Simultaneous',true)返回置信区间开办99%置信水平,同时计算所有预测值。

置信区间的显著性水平,指定为逗号分隔的对,由“α”和一个范围为[0,1]的数值。的置信水平开办等于100 (1 -α) %α是置信区间不包含真值的概率。

例子:“阿尔法”,0.01

数据类型:|

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

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

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

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

数据类型:|

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

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

fμ=偏移量+Xb

在哪里f是连杆函数,μ平均响应,和Xb是预测因子的线性组合吗X.的抵消预测器有系数1

数据类型:|

标志来计算同时发生的置信界限,指定为逗号分隔的对,由“同时”或真或假。

  • 真正的- - - - - -预测中所有预测值对应的响应值曲线的置信界限Xnew,使用Scheffe方法。上界和下界之间的范围包含由100(1 - α)%置信度的真实响应值组成的曲线。

  • - - - - - -预测中每个观测点的响应值的置信边界Xnew.在特定预测值处的响应值的置信区间包含具有100(1 - α)%置信的真实响应值。

同时边界比单独边界更宽,因为要求整个响应值曲线在边界内比要求单个预测值的响应值在边界内更严格。

例子:“同步”,真的

输出参数

全部折叠

的预测响应值Xnew,作为数字向量返回。

对于二项模型,输出值的意义ypred的值“BinomialSize”名称-值对参数。

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

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

方法指定偏移量值“抵消”名称-值对参数。否则,预测使用0作为偏移值。

响应的置信区间,作为两列矩阵返回,每行提供一个区间。置信区间的含义取决于名值对参数的设置“α”而且“同时”

选择功能

  • 函数宏指令返回相同的预测预测.的函数宏指令函数不支持“抵消”而且“BinomialSize”名称-值对参数。函数宏指令使用0作为偏移值,输出值在ypred是预测概率。的函数宏指令函数可以为新的预测器输入值接受多个输入参数,每个预测器变量有一个输入,这在从表或数据集数组创建的模型中更容易使用。请注意函数宏指令函数不给出其预测的置信区间。

  • 随机返回带有附加噪声的预测。

扩展功能

版本历史

在R2012a中介绍

Baidu
map