主要内容

stepwisefit

适合使用逐步回归线性回归模型

描述

例子

b= stepwisefit (X,y)返回一个向量b逐步回归的系数估计响应向量y在预测变量的矩阵Xstepwisefit始于一个初始常数模型,需要向前或向后的步骤添加或删除变量,直到满足停止准则。

例子

b= stepwisefit (X,y,名称,值)使用一个或多个指定附加选项名称-值对参数。例如,您可以指定一个非常数的初始模型,或最大数量的步骤stepwisefit可以采取。

例子

(b,se,pval)= stepwisefit (___)返回系数的估计b,标准错误se,ppval使用任何输入参数组合在以前的语法。

例子

(b,se,pval,finalmodel,统计数据)= stepwisefit (___)还返回一个变量的规范最终的回归模型finalmodel,统计统计数据最后的模型。

例子

(b,se,pval,finalmodel,统计数据,nextstep,历史)= stepwisefit (___)还返回推荐的下一个步骤nextstep和信息历史采取的所有步骤。

例子

全部折叠

执行一个基本的逐步回归,得到的系数估计。

加载哈尔德数据集。

负载哈尔德%检查变量加载到工作区中
名称大小字节类属性描述22 x58 2552字符哈尔德13 x5 520双热13 x1 104双成分13 x4 416双

这个数据集包含的观察各种混合物的热演化在水泥硬化四水泥原料。响应变量是。矩阵成分包含四个列的预测。

运行stepwisefit开始只有一个常数项的模型和使用默认出入境公差为0.05和0.10,分别。

b = stepwisefit(成分、热)
最初的列包括:步骤1,添加列4 p = 0.000576232步骤2,添加列1,p = 1.10528 e-06最后列包括:1 4{多项式系数的}{Std.Err。'}{“地位”}{“P”} {[1.4400]} {[0.1384]} {”“} {[1.1053 e-06]}{[0.4161]}{[0.1856]}{‘出来’}{[0.0517]}{[-0.4100]}{[0.1992]}{‘出来’}{[0.0697]}{[-0.6140]}{[0.0486]}{”“}{[1.8149 e-07]}
b =4×11.4400 0.4161 -0.4100 -0.6140

stepwisefit显示器显示列14都包含在最终的模型。输出b包括所有列的估计,即使是那些不会出现在最终的模型。stepwisefit计算列的估计2(或3)通过拟合模型组成的最终模型加上一列2(或3)。

加载carsmall数据集,其中包含各种汽车测量。

负载carsmall
名字大小字节类属性加速100 x1 800双气缸100 x1 800双位移100 x1 800双马力100 x1 800双100 MPG x1 800双生产厂100 * 13 2600字符模型100 x33 6600字符Model_Year 100 x1 800双起源100 x7 1400字符体重100 x1 800双

进行逐步回归和四个连续变量和响应变量英里/加仑

X =(加速度气缸位移马力);y = MPG;b4_default = stepwisefit (X, y)%与默认参数逐步回归
最初的列包括:步骤1,添加列2,p = 1.59001 e-25步骤2,添加列4 p = 0.00364266步骤3,添加列1,p = 0.0161414最后一列包括:1 2 4{多项式系数的}{Std.Err。'}{“地位”}{“P”} {[-0.4517]} {[0.1842]} {”“} {[0.0161]} {[-2.6407]} {[0.4823]} {”“} {[4.0003 e-07]}{[0.0148]}{[0.0157]}{‘出来’}{[0.3472]}{[-0.0772]}{[0.0204]}{”“}{[2.6922 e-04]}
b4_default =4×1-0.4517 -2.6407 0.0148 -0.0772

这个词位移从来没有进入模型。确定它是高度相关的,其他三个方面通过计算相关矩阵。

corrcoef (X,“行”,“完成”)从计算%排除与缺失值的行
ans =4×41.0000 -0.6438 -0.6968 -0.6968 -0.6438 1.0000 0.9517 0.8622 -0.6968 0.9517 1.0000 0.9134 -0.6968 0.8622 0.9134 1.0000

相关矩阵对应的第三行位移。这个术语与其他三个方面高度相关,特别是气缸(0.95),马力(0.91)。

重新定义输入矩阵X包括重量。指定一个初始模型包含的条款位移马力通过使用“InModel”名称-值对的论点。

X =(气缸位移加速度功率重量);inmodel =(假假真真正假);b5_inmodel = stepwisefit (X, y,“InModel”inmodel)
最初的列包括:3 4步骤1,添加列5 p = 1.06457 e-06步骤2,添加列2,p = 0.00410234最后一列包括:2 3 4 5{多项式系数的}{Std.Err。'}{“地位”}{“P”}{[-0.0912]}{[0.2032]}{‘出来’}{[0.6548]}{[-2.3223]}{[0.7879]}{”“}{[0.0041]}{[0.0252]}{[0.0145]}{”“}{[0.0862]}{[-0.0449]}{[0.0231]}{”“}{[0.0555]}{[-0.0050]}{[0.0012]}{”“}{[1.0851 e-04]}
b5_inmodel =5×1-0.0912 -2.3223 0.0252 -0.0449 -0.0050

最终的模型由术语2 - 5。然而,位移马力估计有 p 值大于0.05在最后的模型。您可以调整逐步算法使用的行为更为保守“PRemove”名称-值对的论点。例如,设置“PRemove”0.05(而不是默认的0.1)在一个较小的最后结果模型只有两项,每一个都有 p 值小于0.05

b5_inmodel_premove = stepwisefit (X, y,“InModel”inmodel,“PRemove”,0.05)
最初的列包括:3 4步骤1,添加列5 p = 1.06457 e-06步骤2,添加列2,p = 0.00410234步骤3,第三列,p = 0.0862131步骤4,删除列4 p = 0.239239最后一列包括:2 5{多项式系数的}{Std.Err。'}{“地位”}{“P”}{[-0.0115]}{[0.1656]}{‘出来’}{[0.9449]}{[-1.6037]}{[0.5146]}{”“}{[0.0025]}{[0.0101]}{[0.0124]}{‘出来’}{[0.4186]}{[-0.0234]}{[0.0198]}{‘出来’}{[0.2392]}{[-0.0055]}{[0.0011]}{”“}{[3.9038 e-06]}
b5_inmodel_premove =5×1-0.0115 -1.6037 0.0101 -0.0234 -0.0055

每一列(计算中心和规模z分数)之前使用的配件“规模”名称-值对的论点。不改变缩放模型选择,系数估计的迹象,或者他们 p 值。然而,缩放比例系数估计。

b5_inmodel_premove_scale = stepwisefit (X, y,“InModel”inmodel,“PRemove”,0.05,“规模”,“上”)
最初的列包括:3 4步骤1,添加列5 p = 1.06457 e-06步骤2,添加列2,p = 0.00410234步骤3,第三列,p = 0.0862131步骤4,删除列4 p = 0.239239最后一列包括:2 5{多项式系数的}{Std.Err。'}{“地位”}{“P”}{[-0.0370]}{[0.5339]}{‘出来’}{[0.9449]}{[-2.8136]}{[0.9028]}{”“}{[0.0025]}{[1.1155]}{[1.3726]}{‘出来’}{[0.4186]}{[-1.0617]}{[0.8961]}{‘出来’}{[0.2392]}{[-4.4406]}{[0.9028]}{”“}{[3.9038 e-06]}
b5_inmodel_premove_scale =5×1-0.0370 -2.8136 1.1155 -1.0617 -4.4406

通常,你估计规模比较测量的术语在不同的尺度,如马力重量。在这种情况下,增加马力由一个标准偏差导致的预期下降1英里/加仑,而增加重量由一个标准偏差导致的预期下降4.4英里/加仑

加载进口- 85数据集。该数据集包含特征的汽车进口在1985年。所有列名称的列表,请参阅变量描述在工作区或类型描述在命令行中。

负载进口- 85
名称大小字节类属性描述9 x79 1422字符X 205 x26 42640双

选择一个子集的连续变量使用逐步回归,组成的预测变量发动机的大小,,中风,压缩比,马力,peak-rpm,city-mpg,highway-mpg,和响应变量价格

varnames = [“引擎”,“生”,“中风”,“压缩比”,“马力”,“peak-rpm”,“city-mpg”,“highway-mpg”,“价格”];%变量名中使用逐步回归dataTbl = array2table (X(:,八16),“VariableNames”,varnames);用变量名%创建数据表Xstepw = dataTbl {: {发动机的大小的,“生”,“中风”,的压缩比,“马力”,“peak-rpm”,“city-mpg”,“highway-mpg”}};%的输入矩阵ystepw = dataTbl {: {“价格”}};%响应向量

运行stepwisefit的变量价格其他八个变量,首先用默认常数初始模型,然后用一个初始模型包括highway-mpg。省略步骤信息的显示。

[betahat_def, se_def pval_def、finalmodel_def stats_def] = stepwisefit (Xstepw ystepw,“显示”,“关闭”);inmodel =(假假假假假假假真);[betahat_in, se_in pval_in、finalmodel_in stats_in] = stepwisefit (Xstepw ystepw,“InModel”inmodel,“显示”,“关闭”);

检查返回的最终模型stepwisefit

finalmodel_def
finalmodel_def =1×8逻辑阵列1 0 1 1 0 1 1 0
finalmodel_in
finalmodel_in =1×8逻辑阵列1 0 1 1 0 1 0 1

默认的模型滴highway-mpg(项8从模型和包括)city-mpg(项7)。比较的根均方误差(rmse)这两个最终的模型。

stats_def.rmse
ans = 3.3033 e + 03
stats_in.rmse
ans = 3.3324 e + 03

产生的模型默认参数RMSE略低。注意,全面规范的最终模型由术语估计+拦截的估计。

betahat_def%术语估计
betahat_def =8×1103×0.1559 -0.2242 -2.8578 0.3904 0.0222 0.0024 -0.2414 0.0793
stats_def.intercept%拦截估计
ans = -7.3506 e + 03

检索的默认运行的历史stepwisefit和推荐的下一个步骤。省略步骤信息的显示。

[~,~,~,~,~,nextstep_def, history_def] = stepwisefit (Xstepw ystepw,“显示”,“关闭”);nextstep_def
nextstep_def = 0

没有进一步措施建议(nextstep_def0)。

history_def。(“在”)
ans =7×8逻辑阵列1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 0

该算法执行共有七个步骤。输出显示发动机的大小(项1步中添加)1,马力(项5步中添加)2,等等。

输入参数

全部折叠

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

stepwisefit总是包含一个模型中的常数项。因此,不包括1 s的一列X

数据类型:|

响应变量指定为一个n1数字或逻辑向量,n是观测的数量。中的每个条目y的响应相应的行吗X

数据类型:||逻辑

请注意

stepwisefit对待值在Xy失踪而忽略所有行包含这些值。

名称-值参数

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

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“囚禁”,0.10,“PRemove”, 0.15,“麦克斯特”,8指示stepwisefit使用出入境的公差0.100.15分别和最多8步骤。

初始模型,指定为逗号分隔组成的“InModel”和一个逻辑向量指定条款包括在最初的模型。默认是不包括的条款。

例子:“InModel”,真假假真

数据类型:逻辑

对条款添加到模型中,指定为逗号分隔组成的“囚禁”和积极的标量指定最大值p值的一个术语。缺省值是0.05。

例子:“囚禁”,0.10

数据类型:|

对消除从模型,指定为逗号分隔组成的“PRemove”和积极的标量指定最小值p价值的术语被删除。默认值是最大的被关闭的0.10

请注意

PRemove是不允许小于被关闭的因为这将导致stepwisefit进入一个无限循环,其中一个变量是多次添加到模型,从模型中删除。

例子:“PRemove”, 0.15

数据类型:|

指标显示步骤信息,指定为逗号分隔组成的“显示”“上”“关闭”

  • “上”在命令窗口中显示每一步的信息(默认)。

  • “关闭”省略了。

例子:“显示”,“关闭”

最大数量的步骤,指定为逗号分隔组成的“麦克斯特”和一个正整数(默认)。允许该算法运行,直到没有一个一步改善模型。

例子:“麦克斯特”,12

数据类型:

他们保持初始状态,指定为逗号分隔组成的“保持”和一个逻辑向量。的值真正的指定在任期(或)的初始模型部队这个词留在(或)最终的模型。的值任期不强迫这个词留在(或)最终的模型。默认是指定没有术语来保持他们的初始状态。

例子:“保持”,真的真的假的假的

数据类型:逻辑

归心指示器和扩展术语中,指定为逗号分隔组成的“规模”“关闭”“上”

  • “关闭”没有中心和规模(默认)。

  • “上”中心和鳞片的每一列X(计算z拟合之前分数)。

例子:“规模”,“上”

输出参数

全部折叠

估计系数,作为数值向量返回相应的条款X。的stepwisefit函数值的计算b如下:

  • 如果一个项是包含在最终的模型,然后相应的价值b是一种由贪婪导致的估计拟合最终的模型。

  • 如果一个项是排除在最终的模型,然后相应的价值b是一种由贪婪导致的估计拟合最终模型加上这一项。

请注意

获得一个完整规范的安装模式,你也需要估计拦截除了b。估计拦截作为字段输出参数提供统计数据。更多细节见stepwisefit拟合模型

标准错误,作为数字返回向量对应的估计b

p值,作为数值向量返回测试结果是否的元素b0

最终的模型,作为一个逻辑向量长度等于返回的列数X,表明哪些术语是在最后的模型。

额外的统计数据,作为结构与以下字段返回。所有统计数据与最终模型除特殊说明外。

描述

特征向量“stepwisefit”

教育部

自由度为错误

df0

自由度的回归

SStotal

总平方和的反应

SSresid

残差的平方和

函数

F统计测试最终的模型与不模型(平均)

pval

p价值的F统计

rmse

根均方误差

xr

残差的条款不能最终模型,计算减去每一项预测反应的最终模型

残差为响应在最后使用预测模型

B

最终模型中的系数项,每一项的值没有在模型中设置的值将通过这一项添加到模型中

SE

标准误差系数估计

TSTAT

t系数估计的统计数据

PVAL

p系数值估计

拦截

估计拦截

wasnan

行包含的数据

建议下一步,作为一个非负整数返回等于下一项的索引添加或删除从模型,或0如果没有进一步的措施建议。

步骤信息,作为结构与以下字段返回。

描述
B

回归系数矩阵,每一列是一个步骤,每一行是一个系数向量

rmse

根均方误差模型在每一步

df0

自由度的回归在每一步

逻辑数组表明该预测模型中的每一步,每一行是一个步骤,每一列是一个预测

更多关于

全部折叠

stepwisefit拟合模型

最后一个stepwisefit拟合模型

y ^ = 统计数据 .intercept + X ( :,finalmodel ) * b ( finalmodel )

在这里,

  • y ^ 预测平均响应。

  • stats.intercept是估计的拦截。

  • X(finalmodel:)是输入矩阵方面的最终模型。

  • b (finalmodel)是向量系数估计的最终模型。

算法

逐步回归是一个方法用于添加和删除条款条款从多重线性模型基于统计学意义。这种方法从一个初始模型,然后开始需要连续的步骤修改模型,添加或删除。在每一步,p价值的F测试模型与统计计算,没有潜在的术语。如果一个术语不是目前模型中,零假设是这个词有一个零系数如果添加到模型中。如果有足够的证据拒绝零假设,这个词添加到模型中。相反,如果一个词目前模型中,零假设是,这个词有一个零系数。如果没有足够的证据拒绝零假设,从模型中删除。该方法所得如下:

  1. 初始模型。

  2. 如果在模型中没有任何条款p公差值不到一个条目,添加最小的一家p值,重复这个步骤。例如,假设初始模型是默认常数模型和宽容是默认的条目0.05。算法首先符合模型组成的常数加上另一个术语和最小的识别项p值,例如术语4。如果这个词4p值小于0.05,然后术语4添加到模型中。接下来,执行一个搜索算法在所有模型组成的常数,术语4和另一个术语。如果一个学期没有在模型中有一个p值小于0.05用最小的,术语p值被添加到模型和重复的过程。当不存在任何进一步的条款,可以添加到模型中,该算法步骤3。

  3. 如果在模型中任何条款p值大于退出宽容,去掉最大的p值到步骤2;否则,结束。

在算法的每一步,stepwisefit使用最小二乘法估计模型系数。添加一个学期后模型在早期阶段,该算法可能随后下降这一项如果不再有用的结合其他条款后来添加的。方法终止时没有一个一步改善模型。然而,最后的模型并不能保证最优,这意味着有最适合的数据。不同的初始模型或一个不同的序列的步骤可能会导致一个更好的选择。从这个意义上讲,分段模型的局部最优,但不一定是全局最优。

选择功能

  • 您可以创建一个模型使用fitlm,然后手动调整模型使用一步,addTerms,removeTerms

  • 使用stepwiselm如果你有一个表中的数据,你有连续和分类预测,或你想指定模型公式可以包括高阶和交互。

  • 使用stepwiseglm创建阶梯式广义线性模型(例如,如果你有一个二进制响应变量和想要适应一个分类模型)。

引用

[1]德雷伯,诺曼·R。和哈里·史密斯。应用回归分析。新泽西州霍博肯:Wiley-Interscience, 1998年。307 - 312页。

版本历史

之前介绍过的R2006a