这个例子展示了如何拟合线性回归模型。典型的工作流包括以下内容:导入数据、拟合回归、测试其质量、修改它以提高质量,以及共享它。
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);
您的目标是将收缩压作为患者年龄、体重、性别和吸烟状况的函数进行建模。创建一个线性公式“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
性别、年龄和体重的预测因子相当高 -值,表示其中一些预测器可能是不必要的。
看看数据中是否有异常值应该被排除在匹配之外。绘制残差。
plotResiduals (mdl)
有一个可能的异常值,其值大于12。这可能不是真正的异常值。为了演示,下面介绍如何查找和删除它。
发现异常。
outlier = mdl.Residuals.Raw > 12;找到(例外)
ans = 84
删除离群值。
mdl = fitlm(患者、modelspec...“排除”, 84);: mdl.ObservationInfo (84)
ans =1×4表权重排除失踪的子集 _______ ________ _______ ______ wxm - 486 1真的假的假的
观察84不再在模型中。
试着得到一个更简单的模型,一个预测因子更少但预测精度相同的模型。一步
通过每次增加或删除一个术语来寻找更好的模型。允许一步
最多走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)
残差看起来和原始模型的残差一样小。
假设有四个人,年龄分别为25岁、30岁、40岁和65岁,第一个和第三个抽烟。使用mdl1
.
年龄=[25;30、40、65];吸烟者= {“是的”;“不”;“是的”;“不”};systolicnew =函数宏指令(mdl1、年龄、吸烟)
systolicnew =4×1127.8561 118.3412 129.4734 122.1149
要做出预测,你只需要变量mdl1
用途。
您可能希望其他人能够使用您的模型进行预测。访问线性模型中的术语。
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
否则。
LinearModel
|函数宏指令
|fitlm
|plotResiduals
|一步