线性回归
准备数据
开始拟合回归,把你的数据成一种拟合函数。数组中所有回归技术开始输入数据X
在一个单独的向量和响应数据y
、表中输入数据或数据集的数组资源描述
和响应数据列资源描述
。输入数据的每一行代表一个观察。每一列代表一个预测指标(变量)。
对于一个表或数据集的数组资源描述
,表明响应变量“ResponseVar”
名称-值对:
mdl = fitlm(资源描述,“ResponseVar”,“血压”);
默认的响应变量是最后一列。
您可以使用数字分类预测因子。分类预测是将值从一组固定的可能性。
为一个数值数组
X
,表明分类预测使用“分类”
名称-值对。例如,表明预测2
和3
的六个分类: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
构建模型的最小二乘匹配数据。这种方法是最好的,当你合理确定模型的形式,和主要需要找到其参数。这个方法也很有用,当你想探究一些模型。方法需要手动检查数据丢弃异常值,尽管有帮助(见技术检查质量和调整拟合模型)。
健壮的配合
使用fitlm
与RobustOpts
名称-值对创建一个模型,小受异常值影响。健壮的配件可以节省您的麻烦手动丢弃离群值。然而,一步
不使用健壮的拟合。这意味着当您使用健壮的配件,你不能逐步寻找一个好的模型。
逐步适应
使用stepwiselm
找到一个模型,符合参数模型。stepwiselm
从一个模型,如一个常数,并添加或减去一次一个,每次选择一个最优的术语在一个贪婪的时尚,直到它不能进一步改善。使用分段拟合来找到一个好的模型,这是一个只有相关条款。
结果依赖于初始模型。通常情况下,从一个常数模型会导致一个小模型。从更多的方面可能会导致一个更复杂的模型,但它有较低的均方误差。看到比较大型和小型分段模型。
你不能使用健壮的选择以及逐步拟合。所以逐步适应后,检查你的离群值(见模型检查质量和调整拟合模型)。
选择一个模型或模型的范围
有几种方法指定一个线性回归模型。不论你找到最方便使用。
为fitlm
,该模型规范你给适合的模型。如果你不给一个模型规范,默认“线性”
。
为stepwiselm
,你给的模型规范是起始模型,试图改善逐步的过程。如果你不给一个模型规范,默认的模型开始“不变”
,默认的上边界模型“互动”
。改变上部边界模型使用上
名称-值对。
请注意
还有其他的方式选择模型,如使用套索
,lassoglm
,sequentialfs
,或plsregress
。
简短的名字
的名字 | 模型类型 |
---|---|
“不变” |
模型只包含一个常数(拦截)。 |
“线性” |
模型包含一个为每个预测拦截和线性的条件。 |
“互动” |
模型包含一个拦截,线性条件,所有的产品对不同的预测(无平方项)。下载188bet金宝搏 |
“purequadratic” |
模型包含一个拦截,线性项,平方项。 |
“二次” |
模型包含一个拦截,线性项,互动,平方项。 |
“聚 |
模型是一个多项式与学位的所有条款我 在第一个预测,学位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)
指定预测1
和6
是绝对的。另外,给一个逻辑向量长度相同的数据列,用1
条目表明变量分类。如果有七个因素,并预测1
和6
分类,指定逻辑([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
为(拦截)
,x2
和x4
比0.01更大。这三个因素并不是用于创建响应数据y
。显示包含 调整后 ,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
这张桌子给比模型显示不同的结果。表清楚地显示的效果x2
和x4
并不重要。根据你的目标,考虑删除x2
和x4
从模型。
诊断的情节
诊断图帮助你识别异常值,看看其他问题在你的模型或健康。例如,加载carsmall
数据和模型英里/加仑
的函数气缸
(分类),重量
:
负载carsmall台=表(重量,英里/加仑,缸);资源描述。气缸=分类(tbl.Cylinders);mdl = fitlm(资源描述,“MPG ~气缸*重量+重量^ 2》);
利用数据和模型的阴谋。
plotDiagnostics (mdl)
有一些与高杠杆点。但这情节没有透露是否高效点是离群值。
找点有大量库克的距离。
plotDiagnostics (mdl“cookd”)
有一个点与大型库克的距离。从模型中识别和删除它。你可以用光标点击异常和识别数据,或确定编程:
[~,larg] = max (mdl.Diagnostics.CooksDistance);mdl2 = fitlm(资源描述,“MPG ~气缸*重量+重量^ 2》,“排除”,larg);
残差为训练数据-模型质量
有一些残留的情节来帮助你发现错误,或数据异常值,或相关性模型。最简单的残余情节是默认的直方图情节,展示了残差的范围和频率,和概率图,显示了残差的分布比较与匹配正态分布方差。
检验残差:
plotResiduals (mdl)
上述观察12都是潜在的离群值。
plotResiduals (mdl“概率”)
两个潜在的离群值出现在这个阴谋。否则,连续概率情节似乎是合理的,这意味着一个合理的适合正态分布剩余工资。
你可以确定两个离群值和删除它们从数据:
outl =找到(mdl.Residuals。生> 12)
outl =2×190 97
删除离群值,使用排除
名称-值对:
mdl3 = fitlm(资源描述,“MPG ~气缸*重量+重量^ 2》,“排除”,outl);
检查mdl2的残差图:
plotResiduals (mdl3)
新的残差图看起来非常对称的,不明显的问题。然而,可能会有一些残差序列相关。创建一个新的情节,看看这样的效应存在。
plotResiduals (mdl3“落后”)
散点图显示更多的十字架在右上角和左下角象限比其他两个象限,表明积极的残差序列相关。
另一个潜在的问题是,当对大量观测残差很大。看看当前模式这个问题。
plotResiduals (mdl3“安装”)
有一些倾向于更大的拟合值有较大的剩余工资。也许,模型误差与测量值成正比。
情节理解预测效果
这个例子展示了如何理解每个预测效果的一个回归模型使用各种可用的情节。
检查一片的情节反应。这将显示每个单独预测的影响。
plotSlice (mdl)
你可以拖拽个人预测值,虚线为代表的蓝色竖线。你也可以选择同步和异时置信界限),虚线为代表的红色曲线。
使用一个阴谋显示另一个视图的影响因素对响应的影响。
plotEffects (mdl)
这图显示变化重量
从2500年到4732年降低英里/加仑
约30(上面的蓝色圆的位置)。它还表明,改变气缸的数量从8到4了英里/加仑
约10(较低的蓝色圆圈)。水平蓝线表示这些预测的置信区间。预测来自平均在一个预测,另一个是改变。在这样的情况下,这两个因素相关,解释结果时要小心。
而不是观看的效果平均预测其他改变,检查联合交互的交互图。
plotInteraction (mdl“重量”,“气缸”)
改变一个因素的交互图显示,效果与其他固定举行。在这种情况下,情节丰富得多。它表明,例如,降低气缸的数量在一个相对较轻的车(重量
= 1795)导致里程的增加,但降低气缸的数量在一个相对重型汽车(重量
= 4732)导致减少里程。
进行更详细的观察的交互,看一个互动情节与预测。这情节是一个预测固定而不同,和情节的影响曲线。看各种固定数量的钢瓶的交互。
plotInteraction (mdl“气缸”,“重量”,“预测”)
现在看看各种固定的交互水平的重量。
plotInteraction (mdl“重量”,“气缸”,“预测”)
情节理解方面的影响
这个例子展示了如何理解的影响回归模型中的每个词使用各种可用的情节。
创建一个额外的变量的阴谋体重^ 2
添加变量。
plotAdded (mdl“体重^ 2”)
这图显示了结果的拟合体重^ 2
和英里/加仑
以外的其他条款体重^ 2
。使用的原因plotAdded
是了解额外的改进模型中得到通过添加体重^ 2
。一条线系数适合这些点的系数体重^ 2
在完整的模型。的体重^ 2
预测是在边缘的意义(pValue
< 0.05)可以看到系数表中显示。你也可以看到,在情节。信心边界看起来不可能包含一条水平线(常数y
),所以zero-slope模型不一致的数据。
创建一个额外的变量模型作为一个整体的阴谋。
plotAdded (mdl)
整个模型是非常重要的,因此不要接近包含一条水平线。直线的斜率的斜率是一个适合预测投射到他们的最佳方向,换句话说,常态的系数向量。
变化模型
有两种方法可以改变一个模型:
一步
——添加或减去一次,一步
选择最重要的词来添加或删除。addTerms
和removeTerms
——添加或删除指定的条款。给条款中描述的任何形式选择一个模型或模型的范围。
如果您创建了一个模型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
另请参阅
fitlm
|方差分析
|stepwiselm
|预测
|LinearModel
|plotResiduals
|套索
|sequentialfs