clear;clc % 导入数据 patients = readtable('hospital.xls','ReadRowNames',true); % 将吸烟属性0,1修改为分类变量yes,no patients.smoke = categorical(patients.smoke,0:1,{'No','Yes'}); % 将性别修改为分类变量 patients.sex = categorical(patients.sex); % 将血压、年龄、体重、性别、吸烟进行回归分析 modelspec = 'sys ~ age + wgt + sex + smoke'; mdl = fitlm(patients,modelspec)%第1问 % 绘制残差图,残差图理论上应该为正态分布 plotResiduals(mdl) % 检测异常值 outlier = mdl.Residuals.Raw > 12; find(outlier) % 剔除异常值后进行回归分析 mdl = fitlm(patients,modelspec,... 'Exclude',84) mdl.ObservationInfo(84,:) % 简化模型 mdl1 = step(mdl,'NSteps',10) % 利用模型进行预测 ages = [25;30;40;65]; smoker = {'Yes';'No';'Yes';'No'}; systolicnew = feval(mdl1,ages,smoker)
时间: 2024-03-15 13:41:29 浏览: 112
arima_test.zip_ARIMA代码_arima.test_arima预测_stationary test_平稳性检验
5星 · 资源好评率100%
这是一个MATLAB代码,对一个名为'hospital.xls'的数据集进行了回归分析,并进行了模型简化和预测。以下是代码的大致解释:
1. 第一行清空MATLAB工作空间和命令窗口中的内容。
2. 第二行从'hospital.xls'文件中读取数据,并将行名设为第一列的值。
3. 第三行将吸烟属性0和1修改为分类变量yes和no。
4. 第四行将性别修改为分类变量。
5. 第五行将血压、年龄、体重、性别、吸烟属性作为自变量,构建回归模型。
6. 第六行利用fitlm函数对数据集进行回归分析,并输出结果(包括模型系数、拟合优度、残差等)。
7. 第七行利用plotResiduals函数绘制残差图,以检验残差是否符合正态分布。
8. 第八行利用mdl.Residuals.Raw > 12的逻辑向量检测是否存在异常值,其中12是根据经验设置的阈值。
9. 第九行将检测到的异常值(第84个样本)从数据集中剔除,并重新进行回归分析。
10. 第十行输出第84个样本的信息。
11. 第十一行利用step函数对模型进行简化,NSteps为简化步数。
12. 第十二行利用fitlm函数预测新的年龄和吸烟属性下的收缩压(systolicnew)。
阅读全文