主要内容

stepwiseglm

通过逐步回归建立广义线性回归模型

描述

mdl= stepwiseglm (资源描述创建表或数据集数组的广义线性模型资源描述从常数模型开始,使用逐步回归添加或删除预测因子。stepwiseglm使用的最后一个变量资源描述作为响应变量。stepwiseglm采用正向和向后逐步回归确定最终模型。的值,该函数在每一步中搜索要将模型添加到模型或从模型中删除的术语“标准”论点。

例子

mdl= stepwiseglm (Xy创建响应的广义线性模型y到一个数据矩阵X

mdl= stepwiseglm (___modelspec指定起始模型modelspec使用前面语法中的任何输入参数组合。

例子

mdl= stepwiseglm (___modelspec名称,值使用一个或多个名称-值对参数指定其他选项。例如,您可以指定分类变量,在模型中使用的最小或最大的术语集,要采取的最大步骤数,或者标准stepwiseglm用于添加或删除术语。

例子

全部折叠

仅使用20个预测器中的3个创建响应数据,并使用逐步算法创建一个广义线性模型,以查看它是否使用了正确的预测器。

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

rng (“默认”%的再现性20 X = randn (100);mu = exp(X(:,[5 10 15])*[.4;.2;。3) + 1);y = poissrnd(μ);

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

mdl = stepwiseglm (X, y,...“不变”“上”“线性”“分布”“泊松”
1.添加x5, Deviance = 134.439, Chi2Stat = 52.24814, PValue = 4.891229e-132 .添加x15, Deviance = 106.285, Chi2Stat = 28.15393, PValue = 1.1204e-07添加x10, Deviance = 95.0207, Chi2Stat = 11.2644, PValue = 0.000790094
mdl =广义线性回归模型:log(y) ~ 1 + x5 + x10 + x15分布=泊松估计系数:估计SE tStat pValue ________ ________ ______ __________ (Intercept) 1.0115 0.064275 15.737 8.4217e-56 x5 0.39508 0.066665 5.9263 3.0977e-09 x10 0.18863 0.05534 3.4085 0.0006532 x15 0.29295 0.053269 5.4995 3.8089e-08 100个观测值,96个误差自由度色散:1 Chi^2统计量对常数模型:91.7,p-value = 9.61e-20

初始模型是常数模型。stepwiseglm默认以模型的偏差为标准。它首次添加x5进入模型,作为 p -value为检验统计量deviance(两个模型的偏差之差),小于默认阈值0.05。然后,它增加了连接因为考虑到x5在模型里,什么时候连接添加, p -value对卡方检验小于0.05。然后补充说x10因为考虑到x5而且连接都在模型里,什么时候x10添加, p -value的卡方检验统计值再次小于0.05。

输入参数

全部折叠

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

  • 默认情况下,stepwiseglm取最后一个变量为响应变量,其余变量为预测变量。

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

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

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

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

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

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

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

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

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

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

数据类型:|

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

  • 如果“分布”不是“二”,然后y必须是一个n1的向量,n是观察数。中的每个条目y对应行的响应是X.数据类型必须为single或double。

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

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

起始模型stepwiseglm,指定为以下其中之一:

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

    价值 模型类型
    “不变” 模型只包含一个常数(截距)项。
    “线性” 模型包含每个预测器的截距和线性项。
    “互动” 模型包含一个截距,每个预测器的线性项,以及对不同预测器的所有乘积(没有平方项)。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.因此,模型中的项的顺序可以与指定公式中的项的顺序不同。

如果你想指定模型中最小或最大的一组术语stepwiselm适合,使用较低的而且名称-值对参数。

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

名称-值参数

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

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

例子:另类投资会议”、“标准”、“‘分配’,‘泊松’,‘上’,‘互动’以赤池信息准则为准则,以泊松分布为响应变量的分布,以所有可能交互作用的模型为最大模型考虑拟合。

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

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

作为替代方案BinomialSize,您可以将响应指定为一个两列矩阵,其中计数在第1列和BinomialSize在第2列。

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

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

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

  • 如果数据在矩阵中X,则为默认值“CategoricalVars”是一个空矩阵[].也就是说,没有变量是绝对的,除非您将其指定为绝对的。

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

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

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

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

条件添加或删除术语,指定为逗号分隔的对,由“标准”其中一个价值观是:

  • “异常”- - - - - -p价值的F-test或卡方检验,对由于增加或删除该项而导致的偏差变化进行检验。的F-test测试单个模型,卡方检验比较两个不同的模型。

  • 上交所的- - - - - -p价值的F-test由于添加或删除该项而导致的误差平方和的变化。

  • “另类投资会议”-赤池信息准则(AIC)值的更改。

  • “bic”-贝叶斯信息准则(BIC)值的变化。

  • “rsquared”的值增加R2

  • “adjrsquared”-调整值的增加R2

例子:“标准”、“bic”

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

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

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

例子:“DispersionFlag”,真的

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

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

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

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

例如,您可以使用以下任何一个示例排除6个观察结果中的2和3。

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

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

数据类型:||逻辑

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

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

例子:“拦截”,假的

描述不能从模型中删除的术语的模型规范,指定为逗号分隔的对,由“低”其中一个选项是modelspec命名模型。

例子:“低”,“线性”

要执行的最大步骤数,指定为逗号分隔的对,由“NSteps”一个正整数。

例子:“NSteps”,5

数据类型:|

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

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

fμ=抵消+X*b

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

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

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

阈值为准则添加一个术语,指定为逗号分隔的对组成“囚禁”和一个标量值,如表中所示。

标准 默认值 决定
“异常” 0.05 如果p价值的F-statistic或卡方statistic小于被关闭的p),将术语添加到模型中。
上交所的 0.05 如果p价值的F-statistic小于被关闭的,将术语添加到模型中。
“另类投资会议” 0 如果模型AIC的变化小于被关闭的,将术语添加到模型中。
“BIC” 0 如果模型的BIC变化小于被关闭的,将术语添加到模型中。
“Rsquared” 0.1 如果模型的r平方值的增加大于被关闭的,将术语添加到模型中。
“AdjRsquared” 0 如果模型调整后的r平方值的增加大于被关闭的,将术语添加到模型中。

有关更多信息,请参见标准名称-值对的论点。

例子:“囚禁”,0.075

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

中的名称中应该包含字符串值或字符向量资源描述方法指定的名称“VarNames”名称-值对的论点。

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

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

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

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

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

阈值的准则删除一个术语,指定为逗号分隔的对组成“PRemove”和一个标量值,如表中所示。

标准 默认值 决定
“异常” 0.10 如果p价值的F-statistic或卡方statistic大于PRemovep-value to remove),从模型中删除该术语。
上交所的 0.10 如果p价值的F-statistic大于PRemove,从模型中删除该项。
“另类投资会议” 0.01 如果模型AIC的变化大于PRemove,从模型中删除该项。
“BIC” 0.01 如果模型的BIC变化大于PRemove,从模型中删除该项。
“Rsquared” 0.05 如果模型的r平方值的增加小于PRemove,从模型中删除该项。
“AdjRsquared” -0.05 如果模型调整后的r平方值的增加小于PRemove,从模型中删除该项。

在每一步,stepwiseglm函数还检查一个术语与当前模型中的其他术语是否冗余(线性相关)。当一个项与当前模型中的其他项线性相关时,则stepwiseglm函数删除冗余项,而不管标准值如何。

有关更多信息,请参见标准名称-值对的论点。

例子:“PRemove”,0.05

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

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

例子:“ResponseVar”、“收益”

例子:“ResponseVar”,[4]

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

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

描述拟合中最大的术语集的模型规范,指定为逗号分隔的对,由“上”其中一个选项是modelspec命名模型。

例子:“上”、“二次”

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

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

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

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

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

数据类型:字符串|细胞

控件的信息显示,指定为逗号分隔的对,由“详细”其中一个价值观是:

  • 0—抑制所有显示。

  • 1-显示每一步的操作。

  • 2-显示评估过程和每一步所采取的行动。

例子:“详细”,2

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

数据类型:|

输出参数

全部折叠

广义线性回归模型,具体为GeneralizedLinearModel对象创建使用fitglmstepwiseglm

更多关于

全部折叠

计算矩阵

一个条件矩阵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

  • [10 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

有关更多细节,请参见威尔金森符号

正则配分函数

一般线性模型的默认链接函数是规范的链接功能

分布 Canonical Link函数名 链接功能 意味着(逆)函数
“正常” “身份” fμ) =μ μXb
“二” 分对数的 fμ) =日志(μ/ (1 -μ)) μ= exp (Xb) / (1 + exp(Xb))
“泊松” “日志” fμ) =日志(μ μ= exp (Xb
“伽马” -1 fμ) = 1 /μ μ= 1 / (Xb
逆高斯分布的 -2 fμ) = 1 /μ2 μ= (Xb1/2

提示

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

  • 对于其他方法,如devianceTest的属性GeneralizedLinearModel对象,看到GeneralizedLinearModel

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

算法

  • 逐步回归是一种系统的方法,根据在解释响应变量方面的统计显著性,从线性或广义线性模型中添加或删除项。该方法从一个指定为using的初始模型开始modelspec,然后比较增量大模型和增量小模型的解释能力。

    stepwiseglm函数使用正向和向后逐步回归来确定最终模型。的值搜索要添加到模型或从模型中删除的术语“标准”名称-值对的论点。

    的默认值。“标准”对于线性回归模型是上交所的.在这种情况下,stepwiselm而且一步LinearModel使用p价值的F-statistic在每个步骤中测试包含或不包含潜在项的模型。如果一个项目前不在模型中,零假设是,如果添加到模型中,该项的系数将为零。如果有足够的证据拒绝零假设,函数将该项添加到模型中。相反,如果一个项当前在模型中,零假设是该项的系数为零。如果没有足够的证据拒绝零假设,函数将从模型中删除该项。

    逐步回归采取这些步骤时“标准”上交所的

    1. 拟合初始模型。

    2. 检查一组不在模型中的可用术语。如果任何条款有p-值小于入口公差(也就是说,如果添加到模型中的项的系数不可能为零),则添加最小的项p-value并重复此步骤;否则,请执行步骤3。

    3. 如果模型中任何可用的术语有p-大于出口公差的值(即不能拒绝系数为零的假设),去掉最大的项p-value返回步骤2;否则,请结束该进程。

    在任何阶段,如果模型不包含作为高阶项子集的所有低阶项,则函数将不会添加高阶项。例如,函数不会尝试添加术语X1, X2 ^ 2除非两X1而且X2 ^ 2已经在模型中了。同样,该函数也不会删除模型中保留的高阶项的子集中的低阶项。例如,函数将不会尝试删除X1X2 ^ 2如果X1, X2 ^ 2保留在模型中。

    的默认值。“标准”对于广义线性模型是“异常”stepwiseglm而且一步GeneralizedLinearModel在添加或删除术语时遵循类似的过程。

    方法可以指定其他条件“标准”名称-值对的论点。例如,您可以指定Akaike信息准则、Bayesian信息准则、r -平方或调整后的r -平方的值的变化作为增加或删除项的准则。

    根据初始模型中包含的术语,以及函数添加和删除术语的顺序,该函数可能从相同的潜在术语集构建不同的模型。当没有单一步骤改进模型时,函数终止。然而,不同的初始模型或不同的步骤顺序并不能保证更好的匹配。从这个意义上说,逐步模型是局部最优的,但可能不是全局最优的。

  • stepwiseglm将分类预测器处理如下:

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

    • stepwiseglm对待一组l- 1指标变量作为单个变量。如果您想将指标变量视为不同的预测变量,请使用dummyvar.然后,在拟合模型时,使用除对应于类别变量的参考级别的指示变量之外的指示变量。对于绝对预测器X,如果指定的所有列dummyvar (X)以截距项作为预测因子,则设计矩阵秩不足。

    • 连续预测器和直言预测器之间的相互作用项l级别由元素的产品组成l- 1带有连续预测器的指标变量。

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

    • 不能为直言预测器指定高阶项,因为指标的平方等于它本身。

    因此,如果stepwiseglm添加或删除一个分类预测器,该函数实际上是在一个步骤中添加或删除一组指标变量。类似地,如果stepwiseglm添加或删除带有类别预测器的交互项,该函数实际上添加或删除包含类别预测器的交互项组。

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

选择

参考文献

[1] Collett D。二进制数据建模.纽约:查普曼&霍尔出版社,2002年。

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

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

版本历史

介绍了R2013b