主要内容

用广义线性模型拟合数据

此示例显示如何使用和评估广义的线性模型使用glmfit.glmval.。普通线性回归可用于适合具有正常分布错误的数据的直线,或在其参数中线性的任何功能。这是最常用的回归模型;但是,它并不总是一个现实的。广义线性模型以两种方式延长线性模型。首先,通过引入链接功能,放松参数中的线性度的假设。其次,可以建模正常的错误分布

广义线性模型

回归模型在一个或多个预测变量(通常表示x1,x2等)方面定义响应变量的分布(通常为y)。最常用的回归模型,普通线性回归,模拟y作为正常随机变量,其平均值是预测器的线性函数,B0 + B1 * x1 + ......,其方差是恒定的。在单个预测器X的最简单情况下,模型可以表示为与每个点的高斯分布的直线。

mu = @(x)-1.9 + .23 * x;x = 5:.1:15;yhat = mu(x);dy = -3.5:.1:3.5;sz =尺寸(dy);k =(长度(dy)+1)/ 2;x1 = 7 *那些(sz);Y1 = mu(x1)+ dy;z1 = normpdf(y1,mu(x1),1);x2 = 10 * x2(sz); y2 = mu(x2)+dy; z2 = normpdf(y2,mu(x2),1); x3 = 13*ones(sz); y3 = mu(x3)+dy; z3 = normpdf(y3,mu(x3),1); plot3(x,yhat,zeros(size(x)),'B-'......X1,Y1,Z1,'r-',X1([k K]),Y1([k]),[0 Z1(k)],'r:'......X2,Y2,Z2,'r-',x2([k k]),y2([k]),[0 z2(k)],'r:'......X3,Y3,Z3,'r-',x3([k k]),y3([k k]),[0 z3(k)],'r:');zlim([01]);Xlabel('X');ylabel('是');Zlabel('概率密度');网格;查看([ -  45 45]);

在广义的线性模型中,响应的平均值被建模为预测器的线性函数的单调非线性变换,G(B0 + B1 * X1 + ...)。转换G的倒数称为“链路”功能。示例包括Logit(Sigmoid)链路和日志链路。此外,Y可能具有非正态分布,例如二项式或泊松。例如,具有日志链路和单个预测器X的泊松回归可以表示为具有关于每个点的泊松分布的指数曲线。

mu = @(x)exp(-1.9 + .23 * x);x = 5:.1:15;yhat = mu(x);x1 = 7 *那些(1,5);Y1 = 0:4;z1 = poisspdf(y1,mu(x1));x2 = 10 *那些(1,7);Y2 = 0:6;z2 = poisspdf(y2,mu(x2));x3 = 13 *那些(1,9); y3 = 0:8; z3 = poisspdf(y3,mu(x3)); plot3(x,yhat,zeros(size(x)),'B-'......[x1;X1],[Y1;Y1],[Z1;零(尺寸(y1))],'r-',x1,y1,z1,'r。'......[x2;X2],[Y2;Y2],[Z2;零(尺寸(y2))],'r-',x2,y2,z2,'r。'......[x3;x3],[Y3;Y3],[Z3;零(尺寸(y3))],'r-',x3,y3,z3,'r。');zlim([01]);Xlabel('X');ylabel('是');Zlabel('可能性');网格;查看([ -  45 45]);

拟合逻辑回归

此示例涉及实验,以帮助建模各种重量的汽车的比例,该速度失效了里程测试。数据包括重量的观察,经过测试的汽车数量,并且数字失败。

%一组汽车重量重量= [2100 2300 2500 2700 2900 3100 3300 3500 3700 3900 4100 4300]'%在每种重量上测试的汽车数量测试= [48 42 31 31 31 23 23 21 16 17 21]';%在每次重量中未能测试的汽车数量失败= [1 2 0 3 8 8 14 17 19 15 17 21]'每次重量都失败的汽车比例比例=失败./测试;情节(体重,比例,')Xlabel('重量');ylabel('部分');

该图是由于重量的函数而失效的汽车比例的曲线图。假设故障计数来自二项式分布,这是合理的,其中概率参数p随着重量增加而增加。但是p如何取决于重量?

我们可以尝试向这些数据拟合直线。

LineAlcoef = Polyfit(重量,比例,1);Linearfit = Polyval(Linearcoef,重量);情节(体重,比例,',重量,linearfit,'r-',[2000 4500],[0 0],'k:',[2000 4500],[1],'k:')Xlabel('重量');ylabel('部分');

这种线性拟合有两个问题:

1)线预测比0且大于1的比例。

2)比例通常不分布,因为它们必须有界。这违反了拟合简单的线性回归模型所需的假设之一。

使用高阶多项式可能看起来有助于帮助。

[立方体,统计数据,CTR] = Polyfit(重量,比例,3);Cubicfit = Polyval(Cubiccoef,重量,[],CTR);情节(体重,比例,',重量,cubicfit,'r-',[2000 4500],[0 0],'k:',[2000 4500],[1],'k:')Xlabel('重量');ylabel('部分');

但是,这种合适仍然存在类似的问题。该图表明,随着重量超过4000,拟合比例开始减少;实际上它会变得较大的重量值。当然,仍然违反了正常分布的假设。

相反,更好的方法是使用glmfit.适合Logistic回归模型。Logistic回归是广义线性模型的特殊情况,并且对于这些数据的线性回归更适合,有两个原因。首先,它使用适合于二项式分布的拟合方法。其次,逻辑链路将预测的比例限制为范围[0,1]。

对于Logistic回归,我们指定了预测矩阵,以及包含一个列的矩阵,其中包含失败计数,并且包含所测试的数量的一列。我们还指定了二项式分布和Logit链接。

[logitcoef,dev] = glmfit(重量,[测试失败],'二重子''logit');Logitfit = Glmval(LogitCoef,重量,'logit');情节(体重,比例,'BS',重量,logitfit,'r-');Xlabel('重量');ylabel('部分');

正如该图所示,拟合比例渐近为零,一个重量变小或大。

模型诊断

glmfit.功能提供了许多输出,用于检查拟合并测试模型。例如,我们可以比较两个模型的偏差值,以确定平方项是否会显着提高拟合。

[LogitCoEF2,DEV2] = GLMFIT([重量重量。^ 2],[测试失败],'二重子''logit');PVAL = 1  -  CHI2CDF(DEV-DEV2,1)
pval = 0.4019

大的p值表示,对于这些数据,二次术语不会显着提高拟合。两个配合的曲线表明,适合的差异很小。

logitfit2 = glmval(LogitCoef2,[重量重量^ 2],'logit');情节(体重,比例,'BS',重量,logitfit,'r-',重量,logitfit2,'G-');传奇('数据''线性术语''线性和二次术语''地点''西北');

为了检查合适的善良,我们还可以看看Pearson残差的概率图。这些是归一化的,使得当模型是合理的适合数据时,它们具有大致标准的正态分布。(没有这种标准化,残差会有不同的差异。)

[LogItCoef,Dev,STATS] = GLMFIT(重量,[测试),'二重子''logit');normplot(stats.residp);

剩余地块与正常分布显示了一个很好的一致性。

评估模型预测

一旦我们对模型感到满意,我们就可以使用它来进行预测,包括计算置信度限制。在这里,我们预测了预期的汽车数量,超过100个测试,这将在四个重量中的每一个中失效。

重量= 2500:500:4000;[失败,dlo,dhi] = glmval(logitcoef,treachred,'logit',统计数据,.95,100);errorbar(负重,失败,dlo,dhi,':');

二项式模型的链接功能

对于五个分布中的每一个glmfit.金宝app支持,有一个规范(默认)链接功能。对于二项式分布,规范链接是Logit。然而,还有三种其他链接对于二项式模型是明智的。所有四个都在间隔中保持平均响应[0,1]。

eta = -5:.1:5;绘图(ETA,1 ./(1 + EXP(-ETA)),' - ',eta,normcdf(eta),' - '......ETA,1  -  EXP(-Exp(ETA)),' - ',ETA,EXP(-Exp(eta)),' - ');Xlabel('预测器的线性函数');ylabel('预测意味着反应');传奇('logit''概率''互补日志''log-log''地点''东方');

例如,我们可以将符合概率链接与Logit链路进行比较。

probitcoef = glmfit(重量,[测试),'二重子''概率');probitfit = glmval(probitcoef,重量,'概率');情节(体重,比例,'BS',重量,logitfit,'r-',重量,probitfit,'G-');传奇('数据''Logit Model''概率模型''地点''西北');

数据往往很难区分这四个链接功能,并且通常在理论场上进行选择。