在Part1中,我们已经根据保险受益者的数据拟合出线性回归模型,接下来要做的是评估和提高模型的性能。
(四)评估模型的性能
> summary(ins_model) ### summary()给出评估模型性能的信息。
Call:
lm(formula = charges ~ age + children + bmi+ sex + smoker +
region, data = insurance)
Residuals:
Min 1Q Median 3Q Max
-11304.9 -2848.1 -982.1 1393.9 29992.8
Coefficients:
Estimate Std. Error t valuePr(>|t|)
(Intercept) -11938.5 987.8 -12.086 < 2e-16 ***
age 256.9 11.9 21.587 < 2e-16 ***
children 475.5 137.8 3.451 0.000577 ***
bmi 339.2 28.6 11.860 < 2e-16 ***
sexmale -131.3 332.9 -0.394 0.693348
smokeryes 23848.5 413.1 57.723 < 2e-16 ***
regionnorthwest -353.0 476.3 -0.741 0.458769
regionsoutheast -1035.0 478.7 -2.162 0.030782 *
regionsouthwest -960.0 477.9 -2.009 0.044765 *
---
评估模型的性能主要有3个方面:
Residuals(残差)部分提供了预测误差的主要统计量;
星号(如*)表示模型中每个特征的预测能力;
多元R方值(也称为判定系数)提供度量模型性能的方式。 (0.75是相当不错的)
(五)提高模型的性能
因为回归模型通常是由使用者选择特征和设定模型,所以如果具备了关于特征是如何与结果相关的学科知识,我们就可以使用该信息对模型进行设定,从而提高模型的性能。
1.模型的设定——添加非线性关系
线性回归的假设是自变量和因变量之间的关系是线性的,但是这并不一定正确。例如,对于所有年龄值而言,年龄对医疗费用的影响可能不是恒定的,对于年龄最大的人群,治疗费用可能就会比较高。
> insurance$age2 <- insurance$age^2
2.转换——数值型变量转换为二进制指标
如果一个特征的影响不是累积的,而是取值达到一个给定的阈值后才产生影响的,我们就可以通过创建一个二进制指标变量来建立关系。例如,对于在正常体重范围内的人来说,BMI对医疗费用的影响可能为0,但是对于肥胖者(即BMI不低于30)来说,它可能与较高的费用密切相关。因此,当BMI大于等于30时,我们设定为1,否则设定为0。
> insurance$bmi30 <-ifelse(insurance$bmi >= 30, 1, 0)
3.模型的设定——加入相互作用的影响
如果某些特征对因变量有综合影响,例如,吸烟和肥胖可能分别都会产生有害的影响,但是假设它们的共同影响可能会比它们每一个单独影响之和更糟糕是合理的。当两个特征存在共同的影响时,称为相互作用(interaction)。如果怀疑两个变量相互作用,可以通过在模型中添加它们的相互作用来检验这一假设。
4.改进的回归模型
基于医疗费用与患者特点相联系的学科知识,我们来改进回归模型:
- 增加一个非线性年龄项
- 为肥胖创建一个指标
- 指定肥胖与吸烟之间的相互作用
> ins_model2 <- lm(charges ~ age +age2 + children + bmi + sex + bmi30*smoker + region, data = insurance)
> ins_model2
Call:
lm(formula = charges ~ age + age2 +children + bmi + sex + bmi30 *
smoker + region, data = insurance)
Coefficients:
(Intercept) age age2 children bmi sexmale bmi30
134.251 -32.685 3.732 678.561 120.020 -496.824 -1000.140
smokeryes regionnorthwest regionsoutheast regionsouthwest bmi30:smokeryes
13404.687 -279.204 -828.547 -1222.644 19810.753
> summary(ins_model2)
Call:
lm(formula = charges ~ age + age2 +children + bmi + sex + bmi30 *
smoker + region, data = insurance)
Residuals:
Min 1Q Median 3Q Max
-17296.4 -1656.0 -1263.3 -722.1 24160.2
Coefficients:
Estimate Std. Error t valuePr(>|t|)
(Intercept) 134.2509 1362.7511 0.099 0.921539
age -32.6851 59.8242 -0.546 0.584915
age2 3.7316 0.7463 5.000 6.50e-07 ***
children 678.5612 105.8831 6.409 2.04e-10 ***
bmi 120.0196 34.2660 3.503 0.000476 ***
sexmale -496.8245 244.3659 -2.033 0.042240 *
bmi30 -1000.1403 422.8402 -2.365 0.018159 *
smokeryes 13404.6866 439.9491 30.469 < 2e-16 ***
regionnorthwest -279.2038 349.2746 -0.799 0.424212
regionsoutheast -828.5467 351.6352 -2.356 0.018604 *
regionsouthwest -1222.6437 350.5285 -3.488 0.000503 ***
bmi30:smokeryes 19810.7533 604.6567 32.764 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1
Residual standard error: 4445 on 1326degrees of freedom
Multiple R-squared: 0.8664, Adjusted R-squared: 0.8653
F-statistic: 781.7 on 11 and 1326 DF, p-value: < 2.2e-16
相较于第一个模型,判定系数从0.75提高到0.87,这说明回归模型的性能得到了提高,现在的模型能够解释医疗费用变化87%。此外,我们关于模型函数形式的理论也得到了验证,高阶项age2和肥胖指标bmi30在统计学上都是显著的。肥胖和吸烟之间的相互作用影响很大,除了单独吸烟增加的超过13404美元的费用外,肥胖的吸烟者每年要另外花费19810美元,这说明吸烟可能会加剧与肥胖相关的疾病。