此示例显示如何适应线性回归模型。典型的工作流程涉及以下内容:导入数据,拟合回归,测试其质量,修改它以提高质量,并共享。
医院.XLS.
是一种含有患者名称,性别,年龄,体重,血压和实验方案治疗日期的Excel®电子表格。首先将数据读入表中。
患者=可读性('hospital.xls'那'readrownames',真的);
检查五行数据。
患者(1:5,:)
ans =.5×11表名称性年龄WGT烟雾系统Dia Trial1 Trial2 Trial3 Trial4 ____________ __________________________________________________________________320 {'M'} 32 -99 -99 GLI-532{'Johnson'} {'M'} 43 163 0 109 77 11 13 22 -99 PNI-258 {'Williams'} {'F'} 38 131 0 125 83 -99 -99 -99 -99 MIJ-579 {'jones'} {'f'} 40 133 0 117 75 6 12 -99 -99 xlk-030 {'brown'} {'f'} 49 119 0 122 80 14 23 -99 -99
这性别
和抽烟
字段似乎有两个选择。因此将这些字段更改为分类。
患者。智人=分类(患者,0:1,{'不'那'是的'});病人.Sex =分类(患者);
您的目标是根据患者年龄,体重,性别和吸烟地位的函数来模拟收缩压。创建线性公式'sys'
作为一个函数'年龄'
那'WGT'
那'性别'
, 和'抽烟'
。
modelspec ='sys〜年龄+ wgt +性别+烟雾';mdl = fitlm(患者,modelspec)
MDL =线性回归模型:SYS〜1 +性别+年龄+ WGT +烟雾估计系数:估计SE TSTAT PVALUE _________ ___________________________________________________________________________________0.9473 0.29913 0.76549年龄0.08602 0.0431 1.29913 0.06731 1.278 0.20431 1.278 0.20431 1.278 0.20438 WGT -0.016685 0.055714 -0.29947 0.76524 Smoke_yes 9.884 1.0406 9.498 1.9546E -1 15观察数:100,误差自由度:95根均匀误差:4.81 R线:0.508,调整R线:0.487 f统计与恒定模型:24.5,p值= 5.99e-14
性别,年龄和体重预测器相当高 - 值得,表明这些预测器中的一些可能是不必要的。
请参阅是否存在数据中的异常值,该异常值应从拟合中排除。绘制残差。
plotresids(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 2.去除性别,FSTAT = 0.063241,PVALUE = 0.80199
MDL1 =线性回归型号:SYS〜1 + AGE +烟雾估计系数:估计SE TSTAT PVALUE __________________________________________________________________________________________________________________________0.09962 SHOUSE_YES 10.054 0.097696 10.291 3.527696 10.291 3.527696 10.291 3.527696 10.291 3.527696 10.291 3.527692 -17观察数:99,误差自由度:96根均匀误差:4.61 R线:0.536,调整R线:0.526 F统计与常数型号:55.4,P值= 1.02E-16
步
采取了两个步骤。这意味着它不能通过添加或减去单个术语进一步改善模型。
绘制更简单模型对训练数据的有效性。
plotresids(MDL1)
残差看起来像原始模型那样小。
假设您有四个新的人,25,30,40和65岁,以及第一个和第三次烟雾。预测它们使用的收缩压MDL1
。
年龄= [25; 30; 40; 65];吸烟者= {'是的';'不';'是的';'不'};Systolicnew = Feval(MDL1,年龄,吸烟者)
systolicnew =4×1127.8561 118.3412 129.4734 122.1149
要进行预测,您只需要变量MDL1
用途。
您可能希望其他人能够使用您的模型进行预测。访问线性模型中的术语。
COEFNAMES = MDL1.COEFFITY.
Coefnames =1x3细胞{'(拦截)'} {'age'} {'smoke_yes'}
查看型号公式。
mdl1.formula.
ans = sys〜1 +年龄+烟雾
访问条款的系数。
cofvals = mdl1.coffients(:,1)。最受欢迎
cofvals =3×1115.1066 0.1078 10.0540
该模型是SYS = 115.1066 + 0.1078 *年龄+ 10.0540 *烟雾
, 在哪里抽烟
是1
对于吸烟者,和0.
除此以外。
Feval.
|Fitlm.
|linearmodel.
|plotresivs
|步