线性回归的工作流

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

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

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

病人= readtable (“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 '} 40 133 0 117 75 6 -99-99 XLK-030 {'BROWN'} {'f'} 49 119 0 122 80 14 23 -99 -99

每个字段似乎都有两个选择。所以将这些字段改为categorical。

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

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

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

modelspec ='sys ~ age + WGT + sex + smoke';modelspec mdl = fitlm(病人)
mdl =线性回归模型:sys ~ 1 +性别+年龄+ wgt +烟雾Estimate SE tStat pValue _________ ________ ________ __________ (Intercept) 118.28 7.6291 15.504 9.1557e-28 sex_m 0.88162 2.9473 0.29913 0.76549 age 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均方根误差:F-statistic vs. constant model: 24.5, p-value = 5.99e-14

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

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

看看数据中是否有异常值应该被排除在匹配之外。绘制残差。

plotResiduals (mdl)

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

发现异常。

outlier = mdl.Residuals.Raw > 12;找到(例外)
ans = 84

删除离群值。

mdl = fitlm(患者、modelspec...“排除”, 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 = Linear regression model: sys ~ 1 + age + smoke Estimated Coefficients: Estimate SE tStat pValue ________ ________ ______ __________ (Intercept) 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-squared: 0.536, Adjusted R-squared: 0.526 F-statistic vs. constant model: 55.4, p-value = 1.02e-16

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

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

plotResiduals (mdl1)

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

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

假设有四个人,年龄分别为25岁、30岁、40岁和65岁,第一个和第三个抽烟。使用mdl1

年龄=[25;30、40、65];吸烟者= {“是的”“不”“是的”“不”};systolicnew =函数宏指令(mdl1、年龄、吸烟)
systolicnew =4×1127.8561 118.3412 129.4734 122.1149

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

步骤6。共享模型。

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

coefnames = mdl1。CoefficientNames
coefnames =1 x3单元格{'(拦截)}{‘年龄’}{' smoke_Yes '}

查看模型公式。

mdl1。公式
Ans = sys ~ 1 +年龄+烟

求出这些项的系数。

.Estimate coefvals = mdl1.Coefficients (: 1)
coefvals =3×1115.1066 0.1078 10.0540

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

另请参阅

||||

相关的话题