LinearModel.fit

(不推荐)创建线性回归模型

LinearModel.fit不推荐。使用fitlm代替。

语法

mdl = LinearModel.fit(台)
mdl = LinearModel.fit (X, y)
mdl = LinearModel.fit (___modelspec)
mdl = LinearModel.fit (___、名称、值)
mdl = LinearModel.fit (___、modelspec名称,值)

描述

mdl= LinearModel.fit (资源描述)创建表或数据集数组的线性模型资源描述

mdl= LinearModel.fit (X,Y)创建响应的线性模型Y数据矩阵X

mdl= LinearModel.fit (___,modelspec)创建由指定类型的线性模型modelspec,使用任何前面的语法。

mdl= LinearModel.fit (___,名称、值)mdl= LinearModel.fit (___,modelspec,名称、值)创建带有由一个或多个指定的附加选项的线性模型名称、值对参数。例如,您可以指定拟合中包含哪些预测变量或包含观察权值。

输入参数

全部展开

输入数据,包括预测器和响应变量,指定为表或数据集数组。预测变量可以是数字、逻辑、类别、字符或字符串。响应变量必须是数字或逻辑的。

  • 默认情况下,LinearModel.fit将最后一个变量作为响应变量,其余变量作为预测变量。

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

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

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

表中的变量名不一定是有效的MATLAB®标识符。但是,如果名称无效,则在适合或调整模型时不能使用公式;例如:

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

  • 属性时,不能使用公式指定要添加或删除的术语附加条款函数或removeTerms函数,分别。

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

您可以验证变量名资源描述通过使用isvarname函数。下面的代码返回逻辑的1.(真正的),以获取每个具有有效变量名的变量。

cellfun (@isvarname tbl.Properties.VariableNames)
如果变量名在资源描述是无效的,则使用matlab.lang.makeValidName函数。
tbl.Properties.VariableNames=matlab.lang.makeValidName(tbl.Properties.VariableNames);

预测变量,指定为N——- - - - - -P矩阵,N观察的次数是多少P为预测变量的数量。每一列的X表示一个变量,每一行表示一个观察。

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

数据类型:|

响应变量,指定为N1的向量,N为观察次数。中的每个条目Y是对应行的响应X

数据类型:||必然的

模型规范,指定为下列之一。

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

    价值 模型类型
    “不变” 模型只包含一个常数(截距)项。
    “线性” 模型包含每个预测值的截距和线性项。
    “互动” 模型包含每个预测器的截距,线性项,以及对不同预测器的所有乘积(没有平方项)。下载188bet金宝搏
    “purequadratic” 模型包含截距项、线性项和平方项。
    “二次” 模型包含每个预测器的截距项、线性项和平方项,以及对不同预测器的所有乘积。下载188bet金宝搏
    “聚ijk' 模型是一个多项式,所有项都达到次第一个预测因子是程度J在第二个预测中,等等。通过使用数字0到9指定每个预测器的最大程度。模型中包含交互项,但每个交互项的程度不超过指定程度的最大值。例如,“poly13”有一个截距x1.,x2.,x2.2.,x2.3.,x1.*x2.,x1.*x2.2.条款,x1.x2.分别是第一和第二预测因素。
  • T————(P+ 1)矩阵,即计算矩阵,指定要包含在模型中的术语,其中T是多少项和P为预测变量的个数,加1为响应变量。

  • 表示一个变量的字符向量或字符串标量公式在形式上

    “Y ~条款”,

    在哪里条款指定使用威尔金森符号

例子:“二次”

例子:'y ~ X1 + X2^2 + X1:X2'

名称-值对的观点

指定可选的逗号分隔的字符对名称、值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

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

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

例如,您可以使用以下任意一个示例指定6个观察结果中的2个和3个为分类。

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

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

数据类型:||必然的|字符串|细胞

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

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

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

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

数据类型:||必然的

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

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

例子:“拦截”,假的

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

中的名称应包含字符串值或字符向量资源描述,或使用“VarNames”名称-值对参数。

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

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

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

例子:“预测变量”,逻辑([0 1 1 0 0 0])

数据类型:||必然的|字符串|细胞

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

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

例子:“ResponseVar”、“收益”

例子:“ResponseVar”,[4]

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

数据类型:||必然的|字符|字符串

指示器的稳健拟合类型要使用,指定为逗号分隔对组成“RobustOpts”其中一个值。

  • “关闭”-没有稳健的拟合。LinearModel.fit使用普通最小二乘。

  • “开”-使用“bisquare”带有默认调优常数的权重函数。

  • 字符向量或字符串标量-下表中鲁棒拟合权函数的名称。LinearModel.fit使用表中指定的相应默认调优常数。

  • 构造两个字段RobustWgtFun调优

    • 这个RobustWgtFun字段包含下表中健壮拟合权函数的名称或自定义权函数的函数句柄。

    • 这个调优字段包含一个调优常数。如果不设置调优领域,LinearModel.fit使用相应的默认调优常数。

    权函数 描述 默认调谐常数
    “安德鲁” W = (abs(r) 1.339
    “bisquare” W = (abs(r)<1) .* (1 - r.^2).^2(也称为biweight) 4.685
    “柯西” W = 1 ./ (1 + r.²) 2.385
    “公平” W = 1 ./ (1 + abs(r)) 1.400
    “休伯” W = 1 ./ max(1, abs(r)) 1.345
    “物流” W = tanh(r) / r 1.205
    “ols” 普通最小二乘(无加权函数) 没有一个
    “犯错误” W = 1 * (abs(r)<1)) 2.795
    “welsch” w = exp (- (r ^ 2)) 2.985
    函数句柄 接受向量的自定义权重函数R,并返回一个大小相同的权重向量R 1.
    • 内置权重函数的默认调优常数给出的系数估计值在统计上大约是普通最小二乘估计值的95%,前提是响应是一个没有异常值的正态分布。降低调谐常数会增加分配给大残差的下重量;增加调优常数可以减少分配给大剩余量的下重量。

    • 的值R在权重函数中

      r =渣油/(调* *√(1小时)),

      在哪里渣油为上一个迭代的残差向量,调优为调谐常数,H杠杆值的向量是否符合最小二乘,和s给出的误差项的标准差估计是

      s =疯狂/ 0.6745

      疯了是残差绝对值的中位数。常数0.6745使正态分布的估计无偏。如果XP列时,软件排除最小的列P计算中位数时的绝对偏差。

对健壮的拟合,LinearModel.fit利用m估计建立估计方程,并用迭代重加权最小二乘方法求解。

例子:“RobustOpts”和“andrews”

用逗号分隔的变量对指定的变量名,由“VarNames”以及字符向量的字符串数组或单元格数组,其中包括的列的名称X首先是响应变量的名称Y最后一次。

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

变量名不必是有效的MATLAB标识符。但是,如果名称无效,则在适合或调整模型时不能使用公式;例如:

  • 属性时,不能使用公式指定要添加或删除的术语附加条款函数或removeTerms函数,分别。

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

在指定VarNames, VarNames,可以验证变量名varNames通过使用isvarname函数。下面的代码返回逻辑的1.(真正的),以获取每个具有有效变量名的变量。

cellfun (@isvarname varNames)
如果变量名在varNames是无效的,则使用matlab.lang.makeValidName函数。
varNames = matlab.lang.makeValidName (varNames);

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

数据类型:字符串|细胞

观察权值,指定为逗号分隔的对,由“重量”和一个N非负标量值的-by-1向量,其中N为观察次数。

数据类型:|

输出参数

全部展开

表示对数据响应的最小二乘拟合的线性模型,返回为LinearModel对象。

如果“RobustOpts”名称-值对不正确[]“ols”,模型不是最小二乘拟合,而是采用稳健拟合函数。

有关线性模型对象的属性和方法,请参阅LinearModel类页面。

例子

全部展开

使用矩阵输入数据集拟合线性回归模型。

加载carsmall数据集,一个矩阵输入数据集。

负载carsmallX =(重量、马力、加速度);

通过使用拟合线性回归模型fitlm

mdl=fitlm(X,MPG)
mdl=线性回归模型:y~1+x1+x2+x3估计系数:估计当前pValue uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(截距)47.977 3.8785 12.37 4.8957e-21 x1-0.0065416 0.0011274-5.8023 9.8742e-08 x2-0.042943 0.024313-1.7663 0.08078 x3-0.011583 0.19333-0.059913 0.95236观察次数:93,误差自由度:89均方根误差:4 R平方:0.752,调整后的R平方:0.744 F统计与常数模型:90,p值=7.38e-27

模型显示包括模型公式、估计系数和模型汇总统计。

显示中的模型公式,Y ~ 1 + x1 + x2 + x3,对应于 Y = β 0 + β 1. X 1. + β 2. X 2. + β 3. X 3. + ϵ

模型显示还显示存储在中的估计系数信息系数财产。显示系数财产。

mdl.系数
ans =4×4表e- x x x x x x x x x x x x x x x x x

这个系数属性包括以下列:

  • 估计-模型中每个相应项的系数估计。例如,常数项的估计(拦截)是47.977。

  • SE-系数的标准误差。

  • tStatT-每个系数的统计量,以测试对应系数为零的零假设,相对于它不为零的替代,给定模型中的其他预测器。请注意,tStat=估计值/SE.例如,T-截距的统计值为47.977/3.8785=12.37。

  • pValueP价值的T-对应系数是否等于零的假设检验的统计量。例如,P价值的T统计的x2大于0.05,因此相对于模型中其他项,该项在5%显著水平下不显著。

模型汇总统计如下:

  • 数量的观察-没有任何的行数值。例如,数量的观察是93,因为英里/加仑数据向量有6个价值和马力数据向量有一个值,其中行数X英里/加仑是100。

  • 误差自由度NP,在那里N是观察的次数,和P为模型中系数的个数,包括截距。例如,这个模型有四个预测因子,所以误差自由度是93 - 4 = 89。

  • 均方根误差-均方误差的平方根,估计误差分布的标准差。

  • 平方调整后的平方-确定系数和调整后的确定系数。例如平方值表明,该模型解释了响应变量中大约75%的可变性英里/加仑

  • f统计量与常数模型-测试统计F-对回归模型的检验,检验模型是否明显优于仅包含常数项的退化模型。

  • 假定值P价值的F-测试模型。例如,模型是有意义的P7.3816 e-27的价值。

你可以在模型属性(NumObservations,DFE,RMSE,Rsquared),并使用方差分析函数。

方差分析(mdl“摘要”)
ans =3×5表SumSq DF MeanSq F pValue ________ ______ ______ __________ Total 6004.8 92 65.269 Model 4516 3 1505.3 89.987 7.3816e-27 Residual 1488.8 89 16.728

拟合一个包含分类预测器的线性回归模型。对分类预测器的类别重新排序,以控制模型中的参考级别。然后,用方差分析检验分类变量的显著性。

分类预测器模型

加载carsmall数据集并建立线性回归模型英里/加仑作为…的函数Model_Year.处理数值向量Model_Year作为一个分类变量,确定预测器使用“CategoricalVars”名称-值对参数。

负载carsmallmdl = fitlm (Model_Year MPG,“CategoricalVars”,1,“VarNames”, {“Model_Year”,“MPG”})
mdl =线性回归模型:MPG ~ 1 + Model_Year Estimated Coefficients: Estimate SE tStat pValue ________ ______ ______ __________ (Intercept) 17.69 1.0328 17.127 3.2371e-30 Model_Year_76 3.8839 1.4059 2.7625 0.0069402 Model_Year_82 14.02 1.4369 9.7571 8.2164e-16观测数:94,误差自由度:91均方根误差:5.56 R-squared: 0.531, Adjusted R-squared: 0.521 F-statistic vs. constant model: 51.6, p-value = 1.07e-15

显示中的模型公式,MPG ~ 1 + Model_Year,对应于

英里/加仑 = β 0 + β 1. Ι 一年 = 76 + β 2. Ι 一年 = 82 + ϵ ,

在哪里 Ι 一年 = 76 Ι 一年 = 82 值为1的指示器变量是否为Model_Year分别是76和82。这个Model_Year变量包含三个不同的值,可以使用独特的函数。

独特的(Model_Year)
ans=3×170 76 82

fitlm选择中最小的值Model_Year作为参考水平(“70”),并创建两个指示器变量 Ι 一年 = 76 Ι 一年 = 82 .该模型只包含两个指标变量,因为如果模型包含三个指标变量(每个水平一个)和一个截距项,设计矩阵就会变得秩不足。

全指标变量模型

您可以解释mdl作为一个模型,它有三个指标变量,没有截距项:

Y = β 0 Ι x 1. = 70 + ( β 0 + β 1. ) Ι x 1. = 76 + ( β 0 + β 2. ) Ι x 2. = 82 + ϵ

或者,您可以通过手工创建指标变量并指定模型公式来创建一个包含三个指标变量且没有截距项的模型。

temp_Year = dummyvar(分类(Model_Year));Model_Year_70 = temp_Year (: 1);Model_Year_76 = temp_Year (:, 2);Model_Year_82 = temp_Year (: 3);台=表(Model_Year_70 Model_Year_76、Model_Year_82 MPG);mdl = fitlm(资源描述,'MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 - 1')
mdl =线性回归模型:MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 Estimated Coefficients: Estimate SE tStat pValue ________ _______ ______ __________ Model_Year_70 17.69 1.0328 17.127 3.2371e-30 Model_Year_76 21.574 0.95387 22.617 4.0156e-39 Model_Year_82 31.71 0.99896 31.743 5.2234e-51观测值:94、误差自由度:91均方根误差:5.56

在模型中选择参考级别

您可以通过修改类别变量中的类别顺序来选择引用级别。首先,创建一个分类变量一年

年=分类(Model_Year);

属性检查类别的顺序类别函数。

类别(年)
ans=3 x1单元阵列””{70}{76}{82 '}

如果你使用一年作为预测变量fitlm选择第一个类别“70”作为参考水平。重新排序一年通过使用reordercats函数。

Year_reordered = reordercats(一年,{“76”,“70”,“82”});类别(Year_reordered)
ans=3 x1单元阵列””{76}{70}{82 '}

第一类重新排序的年份“76”.创建的线性回归模型英里/加仑作为…的函数重新排序的年份

mdl2 = fitlm (Year_reordered MPG,“VarNames”, {“Model_Year”,“MPG”})
mdl2 =线性回归模型:MPG ~ 1 + Model_Year Estimated Coefficients: Estimate SE tStat pValue ________ _______ _______ __________ (Intercept) 21.574 0.95387 22.617 4.0156e-39 Model_Year_70 -3.8839 1.4059 -2.7625 0.0069402 Model_Year_82 10.136 1.3812 7.3385 8.7634e-11观测数:94,误差自由度:F-statistic vs. constant model: 51.6, p-value = 1.07e-15

mdl2使用“76”作为参考水平,包括两个指标变量 Ι 一年 = 70 Ι 一年 = 82

评估分类预测

模型显示mdl2包括一个P-每一项的值,以检验对应的系数是否等于零。每一个P-value检查每个指示器变量。检查分类变量Model_Year作为一组指标变量,使用方差分析.使用“组件”(默认)选项返回组件方差分析表,其中包括模型中除常数项外的每个变量的方差分析统计数据。

方差分析(mdl2“组件”)
ans =2×5表SumSq DF MeanSq F pValue ________ ______ _____ __________ Model_Year 3190.1 2 1595.1 51.56 1.0694e-15错误2815.2 91 30.936

成分方差分析表包括P价值的Model_Year变量,该变量小于P-指标变量的值。

用线性回归模型拟合样本数据。指定响应和预测变量,并在模型中只包含成对的交互项。

加载示例数据。

负载医院

对数据拟合一个具有交互项的线性模型。指定体重作为反应变量,性别、年龄和吸烟状态作为预测变量。此外,明确性别和吸烟状况是分类变量。

mdl = fitlm(医院,“互动”,“ResponseVar”,“重量”,...“预测变量”, {“性”,“年龄”,“抽烟”},...“CategoricalVar”, {“性”,“抽烟”})
mdl=线性回归模型:体重~1+性别*年龄+性别*吸烟者+年龄*吸烟者估计系数:估计总价值uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(截距)118.7 7.0718 16.785 6.821e-30性别男性68.336 9.7153 7.0339 3.3386e-10年龄0.31068 0.18531 1.6765 0.096991吸烟者1 3.0425 10.446 0.29127 0.77149性别男性:年龄-0.49094 0.24764-1.9825 0.050377性别男性:吸烟者0.9509 3 0.8031 0.25000.80312年龄:吸烟者1-0.070.75-2620.73100观察次数:,误差自由度:93均方根误差:8.75 R平方:0.898,调整R平方:0.892 F-统计与常数模型:137,p值=6.91e-44

在5%的显著性水平上,患者的体重似乎并不因年龄、吸烟状况或这些因素与患者性别的相互作用而有显著差异。

加载哈尔德数据集,测量水泥成分对其硬化热的影响。

负载哈尔德

这个数据集包括变量成分.矩阵成分含有水泥中四种化学物质的百分比。向量包含每个水泥样品在180天后的热硬化值。

对数据拟合一个稳健的线性回归模型。

mdl = fitlm(成分、热、“RobustOpts”,“开”)
mdl=线性回归模型(稳健拟合):y~1+x1+x2+x3+x4估计系数:估计当前值(截距)60.09 75.818 0.79256 0.4509 x1 1.5753 0.80585 1.9548 0.086346 x2 0.5322 0.78315 0.67957 0.51596 x3 0.13346 0.8166 0.16343 0.87424 x4-0.12052 0.7672-0.15709 0.87906观测值数量:13,误差自由度:8均方根误差:2.65 R平方:0.979,调整后的R平方:0.969 F-统计与常数模型:94.6,p值=9.03e-07

有关更多细节,请参阅主题稳健回归-减少离群值影响,将稳健拟合的结果与标准最小二乘拟合的结果进行比较。

更多关于

全部展开

提示

  • 采用稳健的拟合(RobustOpts名称-值对)以自动减少离群值的影响。

  • 不要使用稳健拟合,当你想随后调整模型使用一步

  • 的其他方法或属性LinearModel对象,看到LinearModel

算法

主要的拟合算法是QR分解。对于鲁棒拟合,算法为robustfit

选择

你也可以用fitlm

您可以在一系列可能的模型中使用stepwiselm.但是,不能同时使用稳健回归和逐步回归。