文档

glmval

广义线性模型值

语法

yhat = glmval(b,X,链接
[yhat,dylo,dyhi] = glmval(b,X,链接统计数据)
[…= glmval(…param1,val1,param2,val2,……)

描述

yhat = glmval(b,X,链接计算带链函数的广义线性模型的预测值链接和预测X.的不同列中应出现不同的预测变量Xb是一个矢量的系数估计返回glmfit函数。链接对象的值可以是字符向量、字符串标量或自定义链接函数“链接”中的名称-值对参数glmfit函数。

请注意

默认情况下,glmval将第一列1添加到X,对应模型中的常数项。不输入一列的1s直接进X.的默认行为glmval使用“不变”下面的参数。

[yhat,dylo,dyhi] = glmval(b,X,链接统计数据)同时计算预测值的95%置信区间。当统计数据的结构输出。glmfit函数指定,dylo而且dyhi也会返回。dylo而且dyhi定义的置信下限yhat-dylo的上置信界yhat + dyhi.置信界限是非同时的,适用于拟合曲线,而不是新的观测值。

[…= glmval(…param1,val1,param2,val2,……)指定可选参数名称/值对来控制预测值。可接受参数为:

参数 价值

“信心”-置信范围的置信水平

一个0到1之间的标量

“大小”-二项模型的尺寸参数(N)

一个标量,或者说X的每一行都有一个值的向量

“抵消”-用作额外的预测变量,但系数值固定为1.0

一个向量

“不变”
  • “上”-在模型中包含一个常数项。常数项的系数是的第一个元素b

  • “关闭”-省略常数项

“同时”-计算同步置信区间(真正的),或计算非同时置信区间(默认值 真正的

例子

全部折叠

输入示例数据。

X = [2100 2300 2500 2700 2900 3100 ....3300 3500 3700 3900 4100 4300]';N = [48 42 31 34 31 21 23 23 21 16 17 21]';Y = [1 2 0 3 8 8 14 17 19 15 17 21]';

每一个y值是在相应的试验次数中成功的次数n,x包含预测变量值。

拟合probit回归模型yx

B = glmfit(x,[y n],“二”,“链接”,“probit”);

计算估计的成功数,并将观察到的百分比和估计的百分比与实际的百分比进行对比x值。

Yfit = glmval(b,x,“probit”,“大小”n);情节(x, y / n,“o”, x, yfit. / n,“- - -”,“线宽”, 2)

输入示例数据。

X = [2100 2300 2500 2700 2900 3100 ....3300 3500 3700 3900 4100 4300]';N = [48 42 31 34 31 21 23 23 21 16 17 21]';Y = [1 2 0 3 8 8 14 17 19 15 17 21]';

每一个y值为在相应的试验次数中成功的次数n,x包含预测变量值。

现在定义三个使用@创建的函数句柄,它们定义了一个probit链接函数的链接、链接的导数和反向链接,并将它们存储在一个单元格数组中。

Link = @(mu) norminv(mu);Derlink = @(mu) 1 ./ normpdf(norminv(mu));Invlink = @(resp) normcdf(resp);F = {link, derlink, invlink};

拟合广义线性模型yx使用您定义的链接函数。

B = glmfit(x,[y n],“二”,“链接”F);

计算估计的成功数量,并绘制观察到的和估计的成功率与实际的百分比x值。

yfit = glmval(b,x,F,“大小”n);情节(x, y / n,“o”, x, yfit. / n,“- - -”,“线宽”, 2)

训练一个广义线性模型,然后从一个函数生成代码,该函数根据模型对新的观察结果进行分类。本例基于使用自定义链接函数的例子。

输入示例数据。

X = [2100 2300 2500 2700 2900 3100 ....3300 3500 3700 3900 4100 4300]';N = [48 42 31 34 31 21 23 23 21 16 17 21]';Y = [1 2 0 3 8 8 14 17 19 15 17 21]';

假设反法向pdf是这个问题的一个合适的链接函数。

定义一个名为myInvNorm.m接受的值为并返回标准正常cdf的逆的相应值。

函数in = myInvNorm(mu)% # codegen用于代码生成的标准标准cdf的逆myInvNorm是一个GLM链接函数,它接受数字向量mu和的对应值的数值向量%标准正常cdf的倒数。In = norminv(mu);结束

定义另一个函数myDInvNorm.m接受的值为并返回连杆函数的导数的相应值。

函数myDInvNorm(mu)% # codegen代码的标准标准cdf的逆的导数%的一代% myDInvNorm对应GLM链接函数的导数% myInvNorm。myDInvNorm接受数字向量mu,并返回din,%,它是逆的相应导数的数值向量标准正常cdf的%。Din = 1./normpdf(norminv(mu));结束

定义另一个函数myInvInvNorm.m接受的值为并返回link函数的逆函数的对应值。

函数iin = myInvInvNorm(mu)% # codegen用于代码生成的标准标准cdfmyInvInvNorm是GLM链接函数myInvNorm的逆函数。% myInvInvNorm接受数字向量mu,并返回iin,即a%标准法线cdf对应值的数值向量。Iin = normcdf(mu);结束

创建一个指定每个链接函数的结构数组。具体来说,结构数组包含名为“链接”,“衍生品”,“逆”.对应的值是函数的名称。

链接= struct(“链接”,“myInvNorm”,“衍生品”,“myDInvNorm”,...“逆”,“myInvInvNorm”
派生函数:'myInvNorm'逆函数:'myInvInvNorm'

适合GLMyx使用link函数链接.此外,返回统计信息的结构数组。

[b,~,stats] = glmfit(x,[y n],“二”,“链接”,链接);

b是回归系数的2 × 1向量。

在当前工作文件夹中,定义名为classifyGLM.m:

  • 中对应的列接受测量值x,回归系数,其维数对应b,链接函数,GLM统计的结构,以及任何有效的glmval名-值对参数

  • 返回预测和置信区间误差范围

函数[yhat,lo,hi] = classifyGLM(b,x,link,varargin)% # codegen使用GLM模型对测量进行分类% CLASSIFYGLM对n × 1向量x中的n个观测值进行分类回归系数为b的GLM模型,link函数为link,%,然后返回yhat中预测值的n × 1向量。CLASSIFYGLM还返回使用% GLM统计结构统计信息中的附加信息。narginchk(3正);如果(isstruct(varargin{1})) stats = varargin{1};[yhat,lo,hi] = glmval(b,x,link,stats,varargin{2:end});其他的Yhat = glmval(b,x,link,varargin{:});结束结束

生成一个MEX函数classifyGLM.m.因为C语言使用静态类型,codegen必须在编译时确定MATLAB®文件中所有变量的属性。为确保MEX功能可以使用相同的输入,请使用arg游戏参数按给定顺序指定以下参数:

  • 回归系数b作为编译时常数

  • 样本的观察x

  • 链接函数作为编译时常数

  • 生成的GLM统计数据作为编译时常数

  • 的名字“信心”作为编译时常数

  • 置信水平0.9

要将参数指定为编译时常量,请使用编码器。常数

codegen配置:墨西哥人classifyGLMarg游戏{coder.Constant (b), x, coder.Constant(链接),coder.Constant(统计),coder.Constant(信心),0.9}

codegen生成MEX文件classifyGLM_mex.mexw64在当前文件夹中。文件扩展名取决于您的平台。

比较预测glmval而且classifyGLM_mex.属性中指定名称-值对参数的顺序与arg游戏的调用中的参数codegen

[yhat1,melo1,mehi1] = glmval(b,x,link,stats,“信心”, 0.9);[yhat2,melo2,mehi2] = classifyGLM_mex(b,x,link,stats,“信心”, 0.9);Comp1 = (yhat1 - yhat2)'*(yhat1 - yhat2);Agree1 = comp1 < eps comp2 = (melo1 - melo2)'*(melo1 - melo2);Agree2 = comp2 < eps comp3 = (mehi1 - mehi2)'*(mehi1 - mehi2);Agree3 = comp3 < eps
Agree1 = logical 1 agree2 = logical 1 agree3 = logical 1

生成的MEX函数产生的结果与预测

参考文献

[1]多布森,a.j.广义线性模型导论。纽约:查普曼和霍尔,1990年。

[2]麦cullagh P.和J. A. Nelder。广义线性模型。纽约:查普曼和霍尔,1990年。

[3] Collett, D.二进制数据建模。纽约:查普曼和霍尔,2002年。

扩展功能

R2006a之前介绍

这个话题有用吗?