文档

glmval

广义线性模型值

句法

yhat = glmval(b,x,link
[yhat,dylo,dyhi] = glmval(b,X,link,统计)
[...] = glmval(...,,,参数1,,,,val1,,,,参数2,,,,val2,...))

描述

yhat = glmval(b,x,link计算具有链接函数的广义线性模型的预测值link和预测因子X。不同的预测变量应出现在不同的列中Xbis a vector of coefficient estimates as returned by theglmfit功能。link可以是任何字符向量或自定义定义的链接函数,用作作为值的值'关联'名称值对参数in theglmfit功能。

    笔记:默认情况下,glmval将1列的第一列添加到X,对应于模型中的恒定项。请勿将1列直接输入到X。您可以更改glmvalusing the'持续的'参数,下面。

[yhat,dylo,dyhi] = glmval(b,X,link,统计)还为预测值计算95%的置信界。当。。。的时候统计结构输出glmfit指定功能,dyloDyhi也返回。dyloDyhi定义较低的信心界yhat-dylo,以及高度信心的界限YHAT+DYHI。Confidence bounds are nonsimultaneous, and apply to the fitted curve, not to a new observation.

[...] = glmval(...,,,参数1,,,,val1,,,,参数2,,,,val2,...))指定可选参数名称/值对以控制预测值。可接受的参数是:

范围 价值

'信心'- 信心范围的信心水平

0和1之间的标量

'尺寸'— the size parameter (N) for a binomial model

标量或x的每行一个值一个值的向量

'抵消'— used as an additional predictor variable, but with a coefficient value fixed at 1.0

向量

'持续的'
  • '在'- 在模型中包括一个恒定的术语。恒定项的系数是b

  • '离开'— Omit the constant term

'同时'— Compute simultaneous confidence intervals (真的),或计算非同时置信区间(默认错误的 真的或者错误的

例子

全部收缩

输入示例数据。

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, 和Xcontains the predictor variable values.

适合概率回归模型yX

b = glmfit(x,[y n],“二项式”,,,,'关联',,,,“概率”);

计算估计的成功数量,并绘制观察到的百分比和估计百分比的成功百分比X值。

yfit = glmval(b,x,“概率”,,,,'尺寸',,,,n);plot(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, 和Xcontains the predictor variable values.

不w define three function handles, created using @, that define the link, the derivative of the link, and the inverse link for a probit link function, and store them in a cell array.

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);plot(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,接受的值$ x \ beta $并返回标准正常CDF逆的相应值。

功能in = myInvnorm(MU)%#codegen%myInvNorm Inverse of standard normal cdf for code generation%myInvnorm是一个接受数字向量MU的GLM链接函数,并且%返回,这是数字向量的相应值标准正常CDF的倒数%。in = norminv(mu);结尾

声明另一个名为mydinvnorm.m,接受的值$ x \ beta $并返回链接函数导数的相应值。

功能din = myDInvNorm(mu)%#codegen代码标准正常CDF的倒数的MyDinvnorm衍生物%一代%mydinvnorm对应于GLM链接函数的导数%myInvnorm。mydinvnorm接受数字向量MU,并返回DIN,%是数字矢量的相应值标准正常CDF的倒数%。din = 1./normpdf(norminv(mu));结尾

声明另一个名为myinvinvnorm.m,接受的值$ x \ beta $并返回链接函数逆的相应值。

功能iin = myinvinvnorm(MU)%#codegen%myInvinVnorm标准代码生成的常规CDF%myInvinVnorm是GLM链路函数myinvnorm的倒数。%myInvinVnorm接受数字向量MU,并返回IIN,这是一个%数字矢量的标准正常CDF的相应值。iin = normcdf(mu);结尾

创建一个指定每个链接功能的结构数组。具体而言,结构数组包含名称的字段'关联',,,,'衍生物', 和'Inverse',相关值是函数的名称。

链接= struct('关联',,,,'myinvnorm',,,,'衍生物',,,,'mydinvnorm',,,,...'Inverse',,,,'myinvinvnorm'
link = struct与字段:链接:'myInvnorm'导数:'mydinvnorm'倒数:'myinvinvnorm'

适合GLMyX使用链接功能link。另外,返回统计的结构阵列。

[b,〜,统计] = glmfit(x,[y n],,“二项式”,,,,'关联',关联);

b是回归系数的2 x-1矢量。

在您当前的工作文件夹中声明一个函数分类。m那:

  • 接受与X,回归系数与b,链接函数,GLM统计的结构以及任何glmval名称值对参数

  • 返回误差的预测和置信区间边缘。

功能[yhat,lo,hi] = classifyglm(b,x,link,varargin)%#codegen% CLASSIFYGLM测量使用GLM模型进行分类%分类GLM使用N-1向量X中的N观测值进行分类%using the GLM model with regression coefficients b and link function%链接,然后返回YHAT中预测值的N-1向量。%classifyglm还返回使用的错误余量%GLM统计结构统计数据中的其他信息。Narginchk(3,Inf);如果(isstruct(varargin{1})) stats = varargin{1}; [yhat,lo,hi] = glmval(b,x,link,stats,varargin{2:end});别的yhat = glmval(b,x,link,varargin{:});结尾结尾

分类。m。因为C使用静态键入,所以代码根必须在编译时确定MATLAB®文件中所有变量的属性。为了确保MEX函数可以使用相同的输入,请使用-args参数,按以下顺序指定以下所有内容:

  • The regression coefficientsb作为编译时间常数

  • 样本中的观察X

  • 链接funciton作为编译时常数

  • 由此产生的GLM统计数据作为编译时续

  • 名字'Confidence'作为编译时间常数

  • 置信度0.9

要指定参数为编译时间常数,请使用Coder.constant

代码根-Config:Mex分类-args{coder.constant(b),x,coder.constant(link),coder.constant(stats),coder.constant('profester'),0.9}

MEX文件classifyglm_mex.mexw64生成您当前的工作目录。文件扩展名取决于您的平台。

比较使用的预测glmvalclassifyglm_mex。指定名称值对以与-args呼吁中的论点代码根

[yhat1,melo1,mehi1] = glmval(b,x,link,stats,'Confidence',0.9);[YHAT2,MELO2,MEHI2] = classifyglm_mex(b,x,link,stats,'Confidence',0.9);comp1 = yhat1 == yhat2;colle1 = sum(comp1)== numel(yhat1)comp2 = melo1 == melo2;colle2 = sum(comp2)== numel(yhat1)comp3 = mehi1 == mehi2;class3 = sum(comp3)== numel(yhat1)
协议1 =逻辑1同意2 =逻辑1 clase3 =逻辑1

生成的MEX文件产生与预测

References

[1] Dobson,A。J.广义线性模型简介。纽约:查普曼与霍尔,1990年。

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

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

扩展功能

在R2006a之前引入

这个话题有帮助吗?