主要内容

线性回归工作流程

这个例子展示了如何拟合线性回归模型。典型的工作流程包括以下内容:导入数据、拟合回归、测试其质量、修改数据以提高质量以及共享数据。

步骤1。将数据导入到表中。

hospital.xls是一份Excel®电子表格,包含患者姓名、性别、年龄、体重、血压和实验方案中的治疗日期。首先将数据读入表。

患者=可读(“hospital.xls”“ReadRowNames”,真正的);

检查这五行数据。

患者(1:5,:)
ans =5×11表姓名性别年龄重量烟sys dia trial1 trial2 trial3 trial4  ____________ _____ ___ ___ _____ ___ ___ ______ ______ ______ ______ ypl - 320{“史密斯”}{“m”}38 176 1 124 93 -99 -99 -99 gli - 532{“约翰逊”}{“m”}43 163 0 109 77 -99年11日13日22句- 258{威廉姆斯的}{' f '} 38 131 0 125 83 -99 -99 -99 -99 mij - 579{“琼斯”}{' f '} -99 -99 133 0 117 75 6 12 xlk - 030{“棕色”}{' f '} 49 14 23 119 0 122 80 -99 -99

而且每个领域似乎都有两个选择。所以把这些字段改为categorical。

病人。烟= categorical(patients.smoke,0:1,{“不”“是的”});病人。性= categorical(patients.sex);

步骤2。创建一个合适的模型。

您的目标是将收缩压建模为患者年龄、体重、性别和吸烟状况的函数。创建一个线性公式“sys”作为函数“年龄”“重量”“性”,“烟”

modelspec =“年龄+体重+性别+吸烟”;MDL = fitlm(患者,模型规格)
mdl =线性回归模型:sys ~ 1 +性别+年龄+ wgt +烟估计系数:估计SE tStat pValue _________ ________ ________ __________(截距)118.28 7.6291 15.504 9.1557e-28 sex_m 0.88162 2.9473 0.29913 0.76549年龄0.08602 0.06731 1.278 0.20438 wgt -0.016685 0.055714 -0.29947 0.76524 smoke - yes 9.884 1.0406 9.498 1.9546e-15观测数:100,误差自由度:95均方根误差:4.81 r -平方:0.508,调整后r -平方:0.487 f统计量vs常数模型:24.5,p值= 5.99e-14

性别、年龄和体重预测因子的比例相当高 p -values,表示其中一些预测符可能是不必要的。

步骤3。定位并移除异常值。

看看是否有数据中的异常值,应该排除适合。画出残差。

plotResiduals (mdl)

图中包含一个轴对象。带有残差直方图标题的axes对象包含一个patch类型的对象。

可能存在一个值大于12的异常值。这可能并不是真正的异常值。为了演示,下面是如何查找和删除它。

找到离群值。

异常值= mdl. residual . raw > 12;找到(例外)
Ans = 84

移除异常值。

MDL = fitlm(患者,模型规格,...“排除”, 84);: mdl.ObservationInfo (84)
ans =1×4表权重排除失踪的子集  _______ ________ _______ ______ wxm - 486 1真的假的假的

观测84已经不在模型中了。

步骤4。简化模型。

尝试获得一个更简单的模型,一个预测因子更少但预测精度相同的模型。一步通过每次添加或删除一个项来寻找更好的模型。允许一步最多走10步。

Mdl1 =步骤(mdl,“NSteps”, 10)
1.去掉wgt, FStat = 4.6001e-05, pValue = 0.9946去除性别,FStat = 0.063241, pValue = 0.80199
mdl1 =线性回归模型:sys ~ 1 +年龄+烟雾估计系数:估计SE tStat pValue ________ ________ ______ __________(截距)115.11 2.5364 45.383 1.1407e-66 age 0.10782 0.064844 1.6628 0.09962 smoke _yes 10.054 0.97696 10.291 3.5276e-17观测数量:99,误差自由度:96均方根误差:4.61 r平方:0.536,调整r平方:0.526 f统计量vs常数模型:55.4,p值= 1.02e-16

一步走了两步。这意味着它不能通过增加或减少单个项来进一步改进模型。

绘制简单模型在训练数据上的有效性。

plotResiduals (mdl1)

图中包含一个轴对象。带有残差直方图标题的axes对象包含一个patch类型的对象。

残差看起来和原始模型一样小。

第5步。预测对新数据的反应。

假设你有四个新人,年龄分别为25岁、30岁、40岁和65岁,第一个和第三个吸烟者。预测他们的收缩压mdl1

年龄= [25;30;40;65];吸烟者= {“是的”“不”“是的”“不”};Systolicnew = feval(mdl1,年龄,吸烟者)
systolicnew =4×1127.8561 118.3412 129.4734 122.1149

要做出预测,你只需要mdl1用途。

步骤6。共享模型。

您可能希望其他人能够使用您的模型进行预测。访问线性模型中的项。

Coefnames = mdl1。CoefficientNames
coefnames =1 x3单元格{'(截距)'}{'年龄'}{'烟熏yes '}

查看模型公式。

mdl1。公式
Ans =系统~ 1 +年龄+烟雾

求这些项的系数。

coefvals = mdl1.Coefficients(:,1).估计
coefvals =3×1115.1066 0.1078 10.0540

模型是Sys = 115.1066 + 0.1078*年龄+ 10.0540*烟雾,在那里1对于吸烟者来说,还有0否则。

另请参阅

||||

相关的话题