主要内容

fitglm

建立广义线性回归模型

描述

例子

mdl= fitglm (资源描述返回适合表或数据集数组中的变量的广义线性模型资源描述.默认情况下,fitglm将最后一个变量作为响应变量。

例子

mdl= fitglm (Xy返回响应的广义线性模型y,拟合为数据矩阵X

例子

mdl= fitglm (___modelspec返回指定类型的广义线性模型modelspec

例子

mdl= fitglm (___名称,值返回一个广义线性模型,其中包含一个或多个指定的附加选项名称,值对参数。

例如,您可以指定哪些变量是分类变量、响应变量的分布以及要使用的链接函数。

例子

全部折叠

使用双向交互模型,建立吸烟概率随年龄、体重和性别变化的logistic二项模型。

加载医院数据集的数组。

负载医院医院;

使用允许年龄、体重和性别变量之间双向交互的公式指定模型。吸烟者是响应变量。

modelspec =“吸烟者~年龄*体重*性别-年龄:体重:性别”

拟合逻辑二项式模型。

MDL = fitglm(dsa,modelspec,“分布”“二”
mdl =广义线性回归模型:logit(吸烟者)~ 1 +性别*年龄+性别*体重+年龄*体重分布=二项估计系数:估计SE tStat pValue ___________ _________ ________ _______(截距)-6.0492 19.749 -0.3063 0.75938性别男性-2.2859 12.424 -0.18399 0.85402年龄0.11691 0.50977 0.22934 0.81861体重0.031109 0.15208 0.20455 0.83792性别男性:年龄0.020734 0.20681 0.10025 0.92014性别男性:体重0.01216 0.053168 0.22871 0.8191年龄:体重-0.00071959 0.0038964 -0.18468 0.85348 100个观测值,93个误差自由度离散度:1 Chi^2统计与常数模型:5.07,p值= 0.535

所有的p值(在pValue)都很大。这意味着没有一个系数是显著的。大 p -value用于模型检验,0.535,表明该模型可能与常数模型在统计上没有差异。

创建带有20个预测因子的样本数据,并仅使用其中3个预测因子和一个常数进行泊松响应。

rng (“默认”再现率%X = randn(100,7);mu = exp(X(:,[1 3 6])*[.4;.2;。3] + 1);Y = poissrnd(mu);

用泊松分布拟合广义线性模型。

mdl = fitglm(X,y,“线性”“分布”“泊松”
mdl =广义线性回归模型:log(y) ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7分布=泊松估计系数:估计SE tStat pValue _________ ________ ________ __________(拦截)0.88723 0.070969 12.502 7.3149e-36 x1 0.44413 0.052337 8.4858 2.1416e-17 x2 0.0083388 0.056527 0.14752 0.88272 x3 0.21518 0.063416 3.3932 0.00069087 x4 -0.058386 0.065503 -0.89135 0.37274 x5 -0.060824 0.073441 -0.8282 0.40756 x6 0.34267 0.056778 6.0352 1.5878e-09 x7 0.04316 0.06146 0.70225 0.48252 100个观测值,92个误差自由度离散度:1 Chi^2统计与常数模型:119,p值= 1.55e-22

p-值2.14e-17, 0.00069,和1.58e-09表示变量的系数x1x3,x6都有统计学意义。

输入参数

全部折叠

输入数据,包括预测器和响应变量,指定为表或数据集数组。预测变量和响应变量可以是数字、逻辑、分类、字符或字符串。只有在以下情况下,响应变量才可以具有数字以外的数据类型“分布”“二”

  • 默认情况下,fitglm将最后一个变量作为响应变量,其他变量作为预测变量。

  • 要将另一列设置为响应变量,请使用ResponseVar名称-值对参数。

  • 要使用列的子集作为预测器,请使用PredictorVars名称-值对参数。

  • 要定义模型规范,请设置modelspec参数使用公式或术语矩阵。公式或术语矩阵指定使用哪些列作为预测变量或响应变量。

表中的变量名不必是有效的MATLAB®标识符,但名称不能包含前导或尾随空格。如果名称无效,则在拟合或调整模型时不能使用公式;例如:

  • 你不能指定modelspec使用公式。

  • 属性时,不能使用公式指定要添加或删除的项addTerms函数或removeTerms函数,分别。

  • 属性时,不能使用公式指定模型的下界和上界一步stepwiseglm函数的名称-值对参数“低”而且“上”,分别。

中的变量名可以验证资源描述通过使用isvarname函数。变量名无效,则可以使用matlab.lang.makeValidName函数。

预测变量,指定为n——- - - - - -p矩阵,n观察的次数和p是预测变量的数量。的每一列X表示一个变量,每一行表示一个观察结果。

默认情况下,模型中有一个常数项,除非您显式地删除它,所以不要包含1的列X

数据类型:|

响应变量,指定为向量或矩阵。

  • 如果“分布”不是“二”,然后y一定是n-by-1向量,其中n是观测的数量。每一项y对应的行是否为响应X.数据类型必须为single或double。

  • 如果“分布”“二”,然后y可以是n-by-1向量或n-by-2矩阵,计数在列1和BinomialSize在第二列。

数据类型:||逻辑|分类

模型规范,指定为这些值之一。

  • 命名模型的字符向量或字符串标量。

    价值 模型类型
    “不变” 模型只包含一个常数(截距)项。
    “线性” 模型包含每个预测器的截距和线性项。
    “互动” 模型包含一个截距,每个预测器的线性项,以及不同预测器对的所有乘积(没有平方项)。s manbetx 845
    “purequadratic” 模型包含每个预测器的截距项和线性项和平方项。
    “二次” 模型包含每个预测因子的截距项、线性项和平方项,以及不同预测因子对的所有乘积。s manbetx 845
    “聚ijk 模型是一个所有项都到次的多项式第一个预测因子是程度j在第二个预测器中,以此类推。通过使用数字0到9来指定每个预测器的最大程度。该模型包含交互项,但每个交互项的程度不超过指定程度的最大值。例如,“poly13”有一个拦截x1x2x22x23.x1*x2,x1*x22条款,x1而且x2分别是第一和第二预测因子。
  • 一个t————(p+ 1)矩阵,或者a计算矩阵,指定模型中的术语,其中t和的个数是多少p是预测变量的数量,+1表示响应变量。当预测器的数量很大并且您希望以编程方式生成术语时,术语矩阵非常方便。

  • 字符向量或字符串标量公式在表格中

    “y ~项”

    在哪里条款威尔金森符号.公式中的变量名必须为资源描述或指定的变量名Varnames.此外,变量名必须是有效的MATLAB标识符。

    该软件利用拟合模型中术语的顺序来确定拟合模型中术语的顺序资源描述X.因此,模型中的项的顺序可以不同于指定公式中的项的顺序。

例子:“二次”

名称-值参数

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

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“分布”、“正常”,“链接”、“概率单位”,“排除”,[23日59]指定响应的分布为正态分布,并指示fitglm使用probit链接函数,并从拟合中排除第23和第59观测值。

二项分布的试验次数,即样本量,由逗号分隔的对组成“BinomialSize”变量名资源描述,一个数字标量,或与响应长度相同的数字向量。这就是参数n对于拟合的二项分布。BinomialSize仅当分布参数是“二”

如果BinomialSize是一个标量值,这意味着所有的观察都有相同的试验次数。

作为替代方案BinomialSize,可以将响应指定为两列矩阵,计数在第1列和BinomialSize在第二列。

数据类型:||字符|字符串

系数估计值的初始值,指定为数值向量。默认值是从输入数据中得到的初始拟合值。

数据类型:|

类别变量列表,指定为逗号分隔的对,由“CategoricalVars”或包含表或数据集数组中的类别变量名的字符向量的字符串数组或单元格数组资源描述,或逻辑或数字索引向量,指示哪些列是分类的。

  • 如果数据在表或数据集数组中资源描述,那么,默认情况下,fitglm将字符向量的所有分类值、逻辑值、字符数组、字符串数组和单元格数组视为分类变量。

  • 如果数据是矩阵X,则为默认值“CategoricalVars”是一个空矩阵[].也就是说,除非将变量指定为分类变量,否则没有变量是分类变量。

例如,您可以使用以下任意一种方法将六个变量中的第二个和第三个变量指定为分类变量:

例子:“CategoricalVars”,[2,3]

例子:'CategoricalVars',logical([0 1 1 0 0 0 0])

数据类型:||逻辑|字符串|细胞

计算色散参数的指示器“二”而且“泊松”分布,指定为逗号分隔的对,由“DispersionFlag”下面是其中之一。

真正的 在计算标准误差时估计色散参数。估计的离散度参数值是Pearson残差的平方和除以误差自由度(DFE)。
违约。计算标准误差时,使用理论值1。

拟合函数总是估计其他分布的离散度。

例子:“DispersionFlag”,真的

响应变量的分布,指定为由逗号分隔的对组成“分布”下面是其中之一。

“正常” 正态分布
“二” 二项分布
“泊松” 泊松分布
“伽马” 伽马分布
逆高斯分布的 逆高斯分布

例子:“分布”、“伽马”

从拟合中排除的观测值,指定为由逗号分隔的对组成的“排除”以及一个逻辑或数值索引向量,指示哪些观测值应从拟合中排除。

例如,你可以用下面的例子排除观察结果2和3。

例子:“排除”,[2,3]

例子:'Exclude',logical([0 1 1 0 0 0 0])

数据类型:||逻辑

拟合中常数项(截距)的指示器,指定为逗号分隔的对,由“拦截”,要么真正的包括:包括或从模型中去掉常数项。

使用“拦截”仅当使用字符向量或字符串标量而不是公式或矩阵指定模型时。

例子:“拦截”,假的

优化选项,指定为结构。这个参数决定了迭代算法的控制参数fitglm用途。

创建“选项”通过使用函数来赋值statset或者创建一个包含本表中描述的字段和值的结构数组。

字段名 价值 默认值
显示

算法显示的信息量

  • “关闭”—不显示任何信息

  • “最后一次”—显示最终输出

“关闭”
麦克斯特

允许的最大迭代数,指定为正整数

One hundred.
TolX

参数的终止容差,指定为正标量

1 e-6

你也可以进入statset ('fitglm”)在命令窗口中查看字段的名称和默认值fitglm接受“选项”名称-值参数。

例子:“选项”,statset(“显示”、“最后”,麦克斯特,1000)指定显示迭代算法结果的最终信息,并将允许的最大迭代次数更改为1000。

数据类型:结构体

匹配中的偏移量变量,指定为逗号分隔的对,由“抵消”变量名资源描述或者一个与响应长度相同的数字向量。

fitglm使用抵消作为一个系数值固定为1的附加预测器。换句话说,拟合公式是

fμ=偏移量+X*b

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

例如,考虑一个泊松回归模型。假设由于理论上的原因,计数的数量与预测器成比例一个.通过使用日志链接功能和指定日志(一)作为偏移量,您可以强制模型满足这个理论约束。

数据类型:||字符|字符串

拟合中使用的预测变量,指定为逗号分隔的对,由“PredictorVars”以及表或数据集数组中变量名的字符向量的字符串数组或单元格数组资源描述,或逻辑或数字索引向量,指示哪些列是预测变量。

字符串值或字符向量应该在资源描述属性指定的名称“VarNames”名称-值对参数。

默认为所有变量X,或所有变量在资源描述除了ResponseVar

例如,您可以使用以下示例之一指定第二个和第三个变量作为预测变量。

例子:“PredictorVars”,[2,3]

例子:'PredictorVars',logical([0 1 1 0 0 0 0])

数据类型:||逻辑|字符串|细胞

要在拟合中使用的响应变量,指定为逗号分隔的对,由“ResponseVar”以及在表或数据集数组中包含变量名的字符向量或字符串标量资源描述,或逻辑或数字索引向量,指示哪一列是响应变量。你通常需要使用“ResponseVar”在拟合表或数据集数组时资源描述

例如,您可以指定第四个变量收益率,作为六个变量中的响应,可以采用以下方法之一。

例子:“ResponseVar”、“收益”

例子:“ResponseVar”,[4]

例子:'ResponseVar',logical([0 0 0 0 1 0 0])

数据类型:||逻辑|字符|字符串

变量名,指定为逗号分隔的对,由“VarNames”和包含列名的字符向量的字符串数组或单元格数组X首先是响应变量的名称y最后的

“VarNames”不适用于表或数据集数组中的变量,因为这些变量已经有名称。

变量名不必是有效的matlabidentifier,但名称不能包含前导或尾随空格。如果名称无效,则在拟合或调整模型时不能使用公式;例如:

  • 属性时,不能使用公式指定要添加或删除的项addTerms函数或removeTerms函数,分别。

  • 属性时,不能使用公式指定模型的下界和上界一步stepwiseglm函数的名称-值对参数“低”而且“上”,分别。

在指定VarNames, VarNames中,您可以验证变量名varNames通过使用isvarname函数。变量名无效,则可以使用matlab.lang.makeValidName函数。

例子:VarNames,{“马力”,“加速”,“Model_Year”,“英里”}

数据类型:字符串|细胞

观察权重,由逗号分隔的对组成“重量”和一个n非负标量值的-by-1向量,其中n是观测的数量。

数据类型:|

输出参数

全部折叠

广义线性回归模型,指定为GeneralizedLinearModel使用fitglmstepwiseglm

更多关于

全部折叠

计算矩阵

A项矩阵T是一个t————(p+ 1)在模型中指定项的矩阵,其中t是项的个数,p是预测变量的数量,+1表示响应变量。的价值T (i, j)变量的指数是多少j在术语

例如,假设一个输入包含三个预测变量x1x2,x3以及响应变量y按顺序x1x2x3,y.每行T表示一项:

  • [0 0 0 0]-常数项或截距

  • [0 1 0 0]- - - - - -x2;同样,X1 ^0 * x2^1 * x3^0

  • [1 0 10 0]- - - - - -x1 * x3

  • [2 0 0 0]- - - - - -x1 ^ 2

  • [0 1 2 0]- - - - - -x2 * (x3 ^ 2)

0在每一项的末尾表示响应变量。通常,项矩阵中的零列向量表示响应变量的位置。如果你在一个矩阵和列向量中有预测变量和响应变量,那么你必须包含0对于每一行的最后一列中的响应变量。

公式

模型规范的公式是该形式的字符向量或字符串标量y条款

  • y响应名称。

  • 条款用威尔金森符号表示模型中的预测项。

要表示预测变量和响应变量,请使用表输入的变量名资源描述或使用指定的变量名VarNames.的默认值VarNames{x1, x2,…,‘xn’,‘y’}

例如:

  • 'y ~ x1 + x2 + x3'指定带有截距的三变量线性模型。

  • 'y ~ x1 + x2 + x3 - 1'指定一个无截距的三变量线性模型。注意,公式默认包含一个常数(截距)项。要从模型中排除常数项,必须包含1在公式中。

公式中包含一个常数项,除非你明确地使用1

威尔金森符号

威尔金森符号描述模型中出现的项。符号与模型中出现的项有关,而不是那些项的乘数(系数)。

威尔金森记谱法使用这些符号:

  • +意味着包含下一个变量。

  • - - - - - -意味着不包括下一个变量。

  • 定义一个交互,它是术语的产物。

  • *定义交互和所有低阶项。

  • 将预测器提升到幂,就像*重复,所以也包括低阶项。

  • ()组条件。

这个表显示了威尔金森符号的典型例子。

威尔金森符号 标准符号术语
1 常数(截距)项
x1 ^ k,在那里k是正整数 x1x12、……x1k
X1 + x2 x1x2
x1 * x2 x1x2x1 * x2
x1, x2 x1 * x2只有
x2 不包括x2
X1 *x2 + x3 x1x2x3x1 * x2
X1 + x2 + x3 + X1 = x2 x1x2x3x1 * x2
X1 *x2*x3 - X1:x2:x3 x1x2x3x1 * x2x1 * x3x2 * x3
X1 *(x2 + x3) x1x2x3x1 * x2x1 * x3

详情请参见威尔金森符号

正则Link函数

广义线性模型的默认链接函数是正则链函数

分布 正则链路函数名称 链接功能 均值(逆)函数
“正常” “身份” fμ) =μ μXb
“二” 分对数的 fμ) = log(μ/ (1 -μ)) μ= exp (Xb/ (1 + exp(Xb))
“泊松” “日志” fμ) = log(μ μ= exp (Xb
“伽马” -1 fμ) = 1/μ μ= 1 / (Xb
逆高斯分布的 -2 fμ) = 1/μ2 μ= (Xb1/2

提示

  • 广义线性模型mdl是标准线性模型,除非您使用分布名称-值对。

  • 对于以下方法plotResidualsdevianceTest的属性GeneralizedLinearModel对象,看到GeneralizedLinearModel

  • 在训练模型之后,您可以生成预测新数据响应的C/ c++代码。生成C/ c++代码需要MATLAB编码器™.详细信息请参见代码生成简介

算法

  • fitglm对分类预测器的处理如下:

    • 一个带有分类预测器的模型l级别(类别)包括l- 1指标变量。该模型使用第一个类别作为参考级别,因此它不包括参考级别的指示器变量。如果分类预测器的数据类型为分类,则可使用类别并通过使用重新排序类别reordercats自定义引用级别。有关创建指标变量的详细信息,请参见自动创建虚拟变量

    • fitglm治疗一组l- 1指标变量作为单一变量。如果要将指标变量视为不同的预测变量,请使用dummyvar.然后在拟合模型时使用指示变量,除了与分类变量的参考级别对应的指示变量。对于分类预测器X,如果指定的所有列dummyvar (X)用截距项作为预测因子,则设计矩阵具有秩亏性。

    • 连续预测器与分类预测器之间的交互项l类的元素乘积组成l- 1带有连续预测器的指标变量。

    • 两个直言预测符之间的相互作用项l而且级别由l- 1) * (- 1)指标变量包括两个分类预测水平的所有可能组合。

    • 你不能为分类预测器指定高阶项,因为一个指标的平方等于它本身。

  • fitglm认为(空字符向量),""(空字符串),< >失踪,<定义>资源描述X,Y丢失的值。fitglm不使用在拟合中缺少值的观测值。的ObservationInfo拟合模型的性质表明是否fitglm在拟合中使用每个观察结果。

选择功能

参考文献

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

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

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

扩展功能

版本历史

在R2013b中引入