主要内容

线性回归

准备数据

开始拟合回归,把你的数据成一种拟合函数。数组中所有回归技术开始输入数据X在一个单独的向量和响应数据y、表中输入数据或数据集的数组资源描述和响应数据列资源描述。输入数据的每一行代表一个观察。每一列代表一个预测指标(变量)。

对于一个表或数据集的数组资源描述,表明响应变量“ResponseVar”名称-值对:

mdl = fitlm(资源描述,“ResponseVar”,“血压”);

默认的响应变量是最后一列。

您可以使用数字分类预测因子。分类预测是将值从一组固定的可能性。

  • 为一个数值数组X,表明分类预测使用“分类”名称-值对。例如,表明预测23的六个分类:

    mdl = fitlm (X, y,“分类”[2、3]);%或等价mdl = fitlm (X, y,“分类”、逻辑([0 1 1 0 0 0]));
  • 对于一个表或数据集的数组资源描述拟合函数假设这些数据类型分类:

    • 逻辑向量

    • 分类向量

    • 字符数组

    • 字符串数组

    如果你想表示一个数值预测分类,使用“分类”名称-值对。

代表失踪的数字数据。为其他数据类型表示丢失的数据,看看失踪组值

数据数组的输入和响应数据

从一个Excel数据集创建一个数组®电子表格:

ds =数据集(“XLSFile”,“hospital.xls”,“ReadObsNames”,真正的);

从工作区中创建一个数据数组变量:

负载carsmallds =数据集(MPG、重量);ds。年=分类(Model_Year);

表的输入和响应数据

从一个Excel电子表格创建一个表:

台= readtable (“hospital.xls”,“ReadRowNames”,真正的);

从工作区中创建一个表变量:

负载carsmall台=表(MPG、重量);资源描述。年=分类(Model_Year);

数字矩阵输入数据,为响应数值向量

例如,从工作空间变量来创建数值数组:

负载carsmallX =[重量马力圆柱体Model_Year];y = MPG;

从Excel电子表格来创建数值数组:

[X, Xnames] = xlsread (“hospital.xls”);y = X (:, 4);%响应y是收缩压X (:, 4) = [];%去除X y矩阵

注意,非数字条目,如,不要出现X

选择一个合适的方法

有三种方法来适应数据模型:

最小二乘匹配

使用fitlm构建模型的最小二乘匹配数据。这种方法是最好的,当你合理确定模型的形式,和主要需要找到其参数。这个方法也很有用,当你想探究一些模型。方法需要手动检查数据丢弃异常值,尽管有帮助(见技术检查质量和调整拟合模型)。

健壮的配合

使用fitlmRobustOpts名称-值对创建一个模型,小受异常值影响。健壮的配件可以节省您的麻烦手动丢弃离群值。然而,一步不使用健壮的拟合。这意味着当您使用健壮的配件,你不能逐步寻找一个好的模型。

逐步适应

使用stepwiselm找到一个模型,符合参数模型。stepwiselm从一个模型,如一个常数,并添加或减去一次一个,每次选择一个最优的术语在一个贪婪的时尚,直到它不能进一步改善。使用分段拟合来找到一个好的模型,这是一个只有相关条款。

结果依赖于初始模型。通常情况下,从一个常数模型会导致一个小模型。从更多的方面可能会导致一个更复杂的模型,但它有较低的均方误差。看到比较大型和小型分段模型

你不能使用健壮的选择以及逐步拟合。所以逐步适应后,检查你的离群值(见模型检查质量和调整拟合模型)。

选择一个模型或模型的范围

有几种方法指定一个线性回归模型。不论你找到最方便使用。

fitlm,该模型规范你给适合的模型。如果你不给一个模型规范,默认“线性”

stepwiselm,你给的模型规范是起始模型,试图改善逐步的过程。如果你不给一个模型规范,默认的模型开始“不变”,默认的上边界模型“互动”。改变上部边界模型使用名称-值对。

请注意

还有其他的方式选择模型,如使用套索,lassoglm,sequentialfs,或plsregress

简短的名字

的名字 模型类型
“不变” 模型只包含一个常数(拦截)。
“线性” 模型包含一个为每个预测拦截和线性的条件。
“互动” 模型包含一个拦截,线性条件,所有的产品对不同的预测(无平方项)。下载188bet金宝搏
“purequadratic” 模型包含一个拦截,线性项,平方项。
“二次” 模型包含一个拦截,线性项,互动,平方项。
“聚ijk 模型是一个多项式与学位的所有条款在第一个预测,学位j在第二个预测等。使用数字0通过9。例如,“poly2111”常数加上所有线性和产品条款,也包含与预测1的平方。

例如,指定一个交互模型使用fitlm矩阵预测:

mdl = fitlm (X, y,“互动”);

指定一个模型使用stepwiselm数据集和一个表或数组资源描述预测,假设你想从一个常数线性模型上界。假设变量的响应资源描述在第三列。

mdl2 = stepwiselm(资源描述,“不变”,“上”,“线性”,“ResponseVar”3);

计算矩阵

一个条件矩阵T是一个t————(p+ 1)矩阵指定术语在一个模型中,在那里t术语的数量,p预测变量的数量,+ 1占响应变量。的价值T (i, j)是变量的指数吗j在术语

例如,假设一个输入包括三个预测变量x1,x2,x3和响应变量y的顺序x1,x2,x3,y。每一行的T代表一个术语:

  • [0 0 0 0]——常数项或拦截

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

  • (1 0 1 0)- - - - - -x1 * x3

  • (2 0 0 0)- - - - - -x1 ^ 2

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

0的每一项代表了响应变量。一般来说,一个列向量的零矩阵代表反应变量的位置。如果你有预测和响应变量在一个矩阵列向量,然后你必须包括0为响应变量在每一行的最后一列。

公式

规范是一个特征向量模型的公式或字符串标量的形式

y~条款,

  • y是响应的名字。

  • 条款包含

    • 变量名

    • +包括下一个变量

    • - - - - - -排除下一个变量

    • :定义一个互动,一个产品的条件

    • *定义一个互动和所有低阶项

    • ^提高预测能力,完全一样*重复,所以^包括低阶项

    • ()组条件

提示

公式包括一个常数(拦截)默认项。排除一个常数项的模型,包括1的公式。

例子:

“y ~ x1 + x2 + x3”是一个有三线性模型与拦截。
“y ~ x1 + x2 + x3 - 1”是一个有三线性模型没有拦截。
“y ~ x1 + x2 + x3 + x2 ^ 2》是一个有三模型拦截和x2 ^ 2术语。
“y ~ x1 + x2 ^ 2 + x3的与前面的示例相同,因为x2 ^ 2包括一个x2术语。
y ~ x1 + x2 + x3 + x1, x2”包括一个x1 * x2术语。
“y ~ x1 * x2 + x3”与前面的示例相同,因为x1 * x2 = x1 + x2 + x1, x2
y ~ x1 * x2 * x3 - x1, x2, x3的有相互作用x1,x2,x3,除了三方互动。
“y ~ x1 * (x2 + x3 + x4) '所有线性项,加的产品下载188bet金宝搏x1与每个其他的变量。

例如,指定一个交互模型使用fitlm矩阵预测:

mdl = fitlm (X, y,y ~ x1 * x2 * x3 - x1, x2, x3的);

指定一个模型使用stepwiselm数据集和一个表或数组资源描述预测,假设你想从一个常数线性模型上界。假设变量的响应资源描述被命名为“y”,预测变量命名x1的,“x2”,“x3”

mdl2 = stepwiselm(资源描述,“y ~ 1”,“上”,“y ~ x1 + x2 + x3”);

合适的模型数据

最常见的可选参数拟合:

  • 稳健回归的fitlm,设置“RobustOpts”名称-值对“上”

  • 指定一个适当的上限模型stepwiselm,如设置“上”“线性”

  • 显示分类使用的变量“CategoricalVars”名称-值对。提供一个向量与列数字,等(1 - 6)指定预测16是绝对的。另外,给一个逻辑向量长度相同的数据列,用1条目表明变量分类。如果有七个因素,并预测16分类,指定逻辑([1,0,0,0,0,1,0])

  • 对于一个表或数据数组,指定响应变量使用“ResponseVar”名称-值对。缺省值是数组中最后一列。

例如,

mdl = fitlm (X, y,“线性”,“RobustOpts”,“上”,“CategoricalVars”3);mdl2 = stepwiselm(资源描述,“不变”,“ResponseVar”,“英里”,“上”,“二次”);

检查质量和调整拟合模型

拟合模型后,检查结果,并做出相应的调整。

模型显示

一个线性回归模型展示了几个诊断当你进入其名称或输入disp (mdl)。这显示了一些基本的信息检查是否充分拟合模型表示数据。

例如,符合线性模型的数据由两个五预测不存在,没有拦截的术语:

X = randn (100 5);y = X * [1; 0; 3, 0, 1] + randn (100 1);mdl = fitlm (X, y)
mdl =线性回归模型:y ~ 1 + x1 + x2 + x3 + x4 + x5估计系数:估计SE tStat pValue _____说__________ x1(拦截)0.038164 0.099458 0.38372 0.70205 0.92794 0.087307 10.628 8.5494 e-18 x2 -0.075593 1.1117 2.8965 - 0.099879 0.10044 -0.75264 0.45355 x3 29 e-48 x4 0.045311 -0.99708 0.11799 -8.4504 3.593 0.10832 0.41831 0.67667 x5 e-13观测数量:100年,错误自由度:94根均方误差:0.972平方:0.93,调整平方:0.926 f统计量与常数模型:248年,假定值= 1.5 e-52

注意:

  • 显示包含中每个系数的估算值估计列。这些值相当接近真实值[0,1,0;3,0,1]

  • 有一个系数估计的标准误差列。

  • 的报道pValue(来自t统计数据(tStat)正常错误)预测的假设下1,3,5是极其微小的。这三个用来创建响应数据的预测y

  • pValue(拦截),x2x4比0.01更大。这三个因素并不是用于创建响应数据y

  • 显示包含 R 2 调整后 R 2 ,F统计数据。

方差分析

检查安装的质量模型,咨询一个方差分析表。例如,使用方差分析与五个线性模型预测:

台=方差分析(mdl)
台=6×5表SumSq DF MeanSq F pValue _________ __ _________ _____ x1 106.62 - 1 106.62 112.96 8.5494 e-18 x2 0.53464 - 1 1 793.74 840.98 1.1117 793.74 0.53464 0.56646 0.45355 x3 e-48 x4 0.16515 - 1 1 67.398 71.41 3.593 67.398 0.16515 0.17498 0.67667 x5 e-13错误88.719 94 0.94382

这张桌子给比模型显示不同的结果。表清楚地显示的效果x2x4并不重要。根据你的目标,考虑删除x2x4从模型。

诊断的情节

诊断图帮助你识别异常值,看看其他问题在你的模型或健康。例如,加载carsmall数据和模型英里/加仑的函数气缸(分类),重量:

负载carsmall台=表(重量,英里/加仑,缸);资源描述。气缸=分类(tbl.Cylinders);mdl = fitlm(资源描述,“MPG ~气缸*重量+重量^ 2》);

利用数据和模型的阴谋。

plotDiagnostics (mdl)

图包含一个坐标轴对象。坐标轴对象与标题案件情节的杠杆,包含行号,ylabel利用包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表杠杆,参考线。

有一些与高杠杆点。但这情节没有透露是否高效点是离群值。

找点有大量库克的距离。

plotDiagnostics (mdl“cookd”)

图包含一个坐标轴对象。标题顺序图的坐标轴对象库克的距离,包含行号,ylabel库克的距离包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表库克的距离,参考线。

有一个点与大型库克的距离。从模型中识别和删除它。你可以用光标点击异常和识别数据,或确定编程:

[~,larg] = max (mdl.Diagnostics.CooksDistance);mdl2 = fitlm(资源描述,“MPG ~气缸*重量+重量^ 2》,“排除”,larg);

残差为训练数据-模型质量

有一些残留的情节来帮助你发现错误,或数据异常值,或相关性模型。最简单的残余情节是默认的直方图情节,展示了残差的范围和频率,和概率图,显示了残差的分布比较与匹配正态分布方差。

检验残差:

plotResiduals (mdl)

图包含一个坐标轴对象。残差的坐标轴对象与标题直方图,包含残差,ylabel概率密度包含一个补丁类型的对象。

上述观察12都是潜在的离群值。

plotResiduals (mdl“概率”)

图包含一个坐标轴对象。坐标轴对象与标题残差正态概率图,包含剩余工资,ylabel概率包含2线类型的对象。一个或多个行显示的值只使用标记

两个潜在的离群值出现在这个阴谋。否则,连续概率情节似乎是合理的,这意味着一个合理的适合正态分布剩余工资。

你可以确定两个离群值和删除它们从数据:

outl =找到(mdl.Residuals。生> 12)
outl =2×190 97

删除离群值,使用排除名称-值对:

mdl3 = fitlm(资源描述,“MPG ~气缸*重量+重量^ 2》,“排除”,outl);

检查mdl2的残差图:

plotResiduals (mdl3)

图包含一个坐标轴对象。残差的坐标轴对象与标题直方图,包含残差,ylabel概率密度包含一个补丁类型的对象。

新的残差图看起来非常对称的,不明显的问题。然而,可能会有一些残差序列相关。创建一个新的情节,看看这样的效应存在。

plotResiduals (mdl3“落后”)

图包含一个坐标轴对象。坐标轴对象和标题块残差残差与滞后,包含残余(t - 1), ylabel残余(t)包含3线类型的对象。一个或多个行显示的值只使用标记

散点图显示更多的十字架在右上角和左下角象限比其他两个象限,表明积极的残差序列相关。

另一个潜在的问题是,当对大量观测残差很大。看看当前模式这个问题。

plotResiduals (mdl3“安装”)

图包含一个坐标轴对象。坐标轴对象和标题块残差与拟合值,包含了价值观,ylabel残差包含2线类型的对象。一个或多个行显示的值只使用标记

有一些倾向于更大的拟合值有较大的剩余工资。也许,模型误差与测量值成正比。

情节理解预测效果

这个例子展示了如何理解每个预测效果的一个回归模型使用各种可用的情节。

检查一片的情节反应。这将显示每个单独预测的影响。

plotSlice (mdl)

图预测片情节包含2轴uimenu类型的对象和其他对象,uicontrol。坐标轴对象1包含5线类型的对象。坐标轴对象2包含5线类型的对象。

你可以拖拽个人预测值,虚线为代表的蓝色竖线。你也可以选择同步和异时置信界限),虚线为代表的红色曲线。

使用一个阴谋显示另一个视图的影响因素对响应的影响。

plotEffects (mdl)

图包含一个坐标轴对象。坐标轴对象包含主要影响包含4线类型的对象。一个或多个行显示的值只使用标记

这图显示变化重量从2500年到4732年降低英里/加仑约30(上面的蓝色圆的位置)。它还表明,改变气缸的数量从8到4了英里/加仑约10(较低的蓝色圆圈)。水平蓝线表示这些预测的置信区间。预测来自平均在一个预测,另一个是改变。在这样的情况下,这两个因素相关,解释结果时要小心。

而不是观看的效果平均预测其他改变,检查联合交互的交互图。

plotInteraction (mdl“重量”,“气缸”)

图包含一个坐标轴对象。坐标轴对象与标题交互的重量和圆柱体,包含12线类型的对象包含的影响。一个或多个行显示的值只使用标记

改变一个因素的交互图显示,效果与其他固定举行。在这种情况下,情节丰富得多。它表明,例如,降低气缸的数量在一个相对较轻的车(重量= 1795)导致里程的增加,但降低气缸的数量在一个相对重型汽车(重量= 4732)导致减少里程。

进行更详细的观察的交互,看一个互动情节与预测。这情节是一个预测固定而不同,和情节的影响曲线。看各种固定数量的钢瓶的交互。

plotInteraction (mdl“气缸”,“重量”,“预测”)

图包含一个坐标轴对象。圆柱体的轴与标题交互对象和体重,包含重量,ylabel调整MPG包含4线类型的对象。这些对象代表缸,4,6,8。

现在看看各种固定的交互水平的重量。

plotInteraction (mdl“重量”,“气缸”,“预测”)

图包含一个坐标轴对象。坐标轴对象与标题交互的重量和圆柱体,包含气缸,ylabel调整MPG包含4线类型的对象。这些对象代表体重,1795,3263.5,4732。

情节理解方面的影响

这个例子展示了如何理解的影响回归模型中的每个词使用各种可用的情节。

创建一个额外的变量的阴谋体重^ 2添加变量。

plotAdded (mdl“体重^ 2”)

图包含一个坐标轴对象。坐标轴对象添加了标题变量情节对于体重^ 2,包含调整重量^ 2,ylabel调整MPG包含3线类型的对象。一个或多个行显示的值只使用这些对象标记表示调整数据,适合:y = -5.62168 e-06 * x, 95% conf.界限。

这图显示了结果的拟合体重^ 2英里/加仑以外的其他条款体重^ 2。使用的原因plotAdded是了解额外的改进模型中得到通过添加体重^ 2。一条线系数适合这些点的系数体重^ 2在完整的模型。的体重^ 2预测是在边缘的意义(pValue< 0.05)可以看到系数表中显示。你也可以看到,在情节。信心边界看起来不可能包含一条水平线(常数y),所以zero-slope模型不一致的数据。

创建一个额外的变量模型作为一个整体的阴谋。

plotAdded (mdl)

图包含一个坐标轴对象。坐标轴对象添加了标题变量情节对于整个模型,包含调整整体模型,ylabel调整MPG包含3线类型的对象。一个或多个行显示的值只使用这些对象标记表示调整数据,适合:y = 85.8376 * x, 95% conf.界限。

整个模型是非常重要的,因此不要接近包含一条水平线。直线的斜率的斜率是一个适合预测投射到他们的最佳方向,换句话说,常态的系数向量。

变化模型

有两种方法可以改变一个模型:

如果您创建了一个模型stepwiselm,然后一步只能有一个效果如果你给不同的上或下模型。一步不适合一个模型使用时工作吗RobustOpts

例如,从一个线性模型的里程carbig数据:

负载carbig台=表(加速度、位移、马力、体重、MPG);mdl = fitlm(资源描述,“线性”,“ResponseVar”,“英里”)
mdl =线性回归模型:MPG ~ 1 + +位移加速度+能力+重量估计系数:估计SE tStat pValue __________ __________ ________ __________(拦截)45.251 2.456 18.424 7.0721 -0.023148 e-55加速度位移0.1256 -0.1843 0.85388 -0.0060009 0.0067093 -0.89441 0.37166马力-0.043608重量0.016573 -2.6312 0.008849 -0.0052805 0.00081085 -6.5123 2.3025平台以及数量的观察:392年,错误自由度:387根均方误差:4.25平方:0.707,调整平方:0.704 f统计量与常数模型:233年,假定值= 9.63 e - 102

努力改进模型使用步骤10步骤:

mdl1 =步骤(mdl,“NSteps”,10)
1。添加位移:马力,e-19 FStat = 87.4802, pValue = 7.05273
mdl1 =线性回归模型:MPG ~ 1 + +重量+位移加速度*马力估计系数:估计SE tStat pValue __________ __________和__________(拦截)e - 69 1.8593 61.285 2.8052 21.847 -0.34401 0.11862 -2.9 0.0039445位移加速度e15汽油马力9.5014 -0.081198 0.010071 -8.0623 -0.24313 0.026068 -9.3265 8.6556 e-19重量-0.0014367 0.00084041 -1.7095 0.088166位移:马力9.3531 - 7.0527 0.00054236 - 5.7987 e-05 e-19观测数量:392年,错误自由度:386根均方误差:3.84平方:0.761,调整平方:0.758 f统计量与常数模型:246年,假定值= 1.32 e - 117

一步停止后只有一个变化。

为了简化模型,删除加速度重量mdl1:

mdl2 = removeTerms (mdl1,“加速+重量”)
mdl2 =线性回归模型:MPG ~ *马力估计系数:1 +位移估计SE tStat pValue __________ ___________和___________(拦截)53.051 1.526 34.765 3.0201 e - 121位移e-39马力-0.23434 0.019593 -11.96 4.3203 -0.098046 0.0066817 -14.674 2.8024即使位移:马力0.00058278 - 5.193 11.222 - 1.6816 e-05 e-25观测数量:392年,错误自由度:388根均方误差:3.94平方:0.747,调整平方:0.745 f统计量与常数模型:381年,假定值= 3 e - 115

mdl2只使用位移马力,有那么好的一个适合的数据mdl1调整后的平方指标。

预测或模拟反应新数据

一个LinearModel对象提供了三个函数来预测或模拟应对新数据:预测,函数宏指令,随机

预测

使用预测函数来预测和获得置信区间预测。

加载carbig数据和创建一个默认的响应的线性模型英里/加仑加速度,位移,马力,重量预测因子。

负载carbigX =(加速度、位移、马力、重量);mdl = fitlm (X, MPG);

创建一个三横列数组中最小的预测,意思是,和最大的价值。X包含了一些值,所以指定“omitnan”选择的意思是函数。的最小值马克斯功能省略默认值的计算。

Xnew = [min (X);意味着(X,“omitnan”)、马克斯(X)];

找到响应的预测模型和置信区间预测。

[NewMPG, NewMPGCI] =预测(mdl Xnew)
NewMPG =3×134.1345 23.4078 4.7751
NewMPGCI =3×231.6115 36.6575 22.9859 23.8298 0.6134 8.9367

信心平均响应绑定是窄比最小或最大响应。

函数宏指令

使用函数宏指令函数来预测反应。当你从一个表或创建一个模型数据数组,函数宏指令经常是更方便不是吗预测预测反应。当你有新的预测数据,您可以通过它函数宏指令不创建一个表或矩阵。然而,函数宏指令不提供信心。

加载carbig数据集和创建一个默认的响应的线性模型英里/加仑的预测因素加速度,位移,马力,重量

负载carbig台=表(加速度、位移、马力、体重、MPG);mdl = fitlm(资源描述,“线性”,“ResponseVar”,“英里”);

预测模型响应的平均值预测。

NewMPG =函数宏指令(mdl,意味着(加速度,“omitnan”),意味着(位移,“omitnan”),意味着(马力,“omitnan”),意思是(重量,“omitnan”))
NewMPG = 23.4078

随机

使用随机函数来模拟反应。的随机功能模拟新随机响应值,等于平均预测+相同方差的随机干扰训练数据。

加载carbig数据和创建一个默认的响应的线性模型英里/加仑加速度,位移,马力,重量预测因子。

负载carbigX =(加速度、位移、马力、重量);mdl = fitlm (X, MPG);

创建一个三横列数组中最小的预测,意思是,和最大的价值。

Xnew = [min (X);意味着(X,“omitnan”)、马克斯(X)];

生成新的预测模型包括一些随机性的反应。

rng (“默认”)%的再现性Xnew NewMPG =随机(mdl)
NewMPG =3×136.4178 31.1958 -4.8176

因为负面的价值英里/加仑似乎并不明智,试着预测两次。

Xnew NewMPG =随机(mdl)
NewMPG =3×137.7959 24.7615 -0.7783
Xnew NewMPG =随机(mdl)
NewMPG =3×132.2931 24.8628 19.9715

显然,预测第三排(最大)Xnew是不可靠的。

共享拟合模型

假设您有一个线性回归模型,如mdl从下面的命令。

负载carbig台=表(加速度、位移、马力、体重、MPG);mdl = fitlm(资源描述,“线性”,“ResponseVar”,“英里”);

与他人分享模型,您可以:

  • 提供模型的显示。

mdl
mdl =线性回归模型:MPG ~ 1 + +位移加速度+能力+重量估计系数:估计SE tStat pValue __________ __________ ________ __________(拦截)45.251 2.456 18.424 7.0721 -0.023148 e-55加速度位移0.1256 -0.1843 0.85388 -0.0060009 0.0067093 -0.89441 0.37166马力-0.043608重量0.016573 -2.6312 0.008849 -0.0052805 0.00081085 -6.5123 2.3025平台以及数量的观察:392年,错误自由度:387根均方误差:4.25平方:0.707,调整平方:0.704 f统计量与常数模型:233年,假定值= 9.63 e - 102
  • 提供模型定义和系数。

mdl.Formula
ans = MPG ~ 1 + +位移加速度+能力+重量
mdl.CoefficientNames
ans =1 x5单元格{(拦截)的}{“加速度”}{“位移”}{“马力”}{“重量”}
mdl.Coefficients.Estimate
ans =5×145.2511 -0.0231 -0.0060 -0.0436 -0.0053

另请参阅

|||||||

相关的话题