广义线性模型(GLM)通过使用一个连接函数关联线性模型与响应变量,并且考虑所有度量的变量偏差对预测值的影响来建立线性回归。广义线性模型结合了其他多个统计模型,包括线性回归、逻辑回归以及泊松回归。glm()函数用来拟合广义线性模型,并通过线性预测变量的符号描述和误差分布描述指定。
下面接着使用mboost包中bodyfat数据集,通过glm()函数建立广义线性模型来预测人体体脂重,简单回顾一下该数据集结构:
age:年龄;
DEXfat:以DXA计算的体脂重,响应变量;
waistcirc:腰围;
hipcirc:臀围;
elbowbreadth:肘宽;
kneebreadth:膝宽;
anthro3a:三项人体测量的对数和;
anthro3b:三项人体测量的对数和;
anthro3c:三项人体测量的对数和;
anthro4:三项人体测量的对数和;
下面进行代码建模分析:
> data("bodyfat", package="TH.data")
> myFormula <- DEXfat ~ age + waistcirc + hipcirc + elbowbreadth + kneebreadth
> bodyfat.glm <- glm(myFormula, family=gaussian("log"), data=bodyfat)
> summary(bodyfat.glm)
Call:
glm(formula=myFormula, family=gaussian("log"), data=bodyfat)
Deviance Residuals:
Min 1Q Median 3Q Max
-11.5688 -3.0065 0.1266 2.8310 10.0966
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.734293 0.308949 2.377 0.02042 *
age 0.002129 0.001446 1.473 0.14560
waistcirc 0.010489 0.002479 4.231 7.44e-05 ***
hipcirc 0.009702 0.003231 3.003 0.00379 **
elbowbreadth 0.002355 0.045686 0.052 0.95905
kneebreadth 0.063188 0.028193 2.241 0.02843 *
---
Signif. codes: 0 '***’ 0.001 '**’ 0.01 '*’ 0.05 '.’ 0.1 ' ’ 1
(Dispersion parameter for gaussian family taken to be 20.31433)
Null deviance: 8536.0 on 70 degrees of freedom
Residual deviance: 1320.4 on 65 degrees of freedom
AIC: 423.02
Number of Fisher Scoring iterations: 5
> pred <- predict(bodyfat.glm, type="response")
上面的代码中,参数type表示预测类型,默认情况下是线性预测变量,类型为“response”表示响应变量的尺度。然后使用下面的代码绘制预测结果图像:
> plot(bodyfat$DEXfat,pred,xlab="Observed Values", ylab="Predicted Values")
> abline(a=0,b=1)
上述代码中,如果设置参数family=gaussian("identity"),则生成的模型将近似于线性回归模型。如果将参数family设置为binomial("logit"),则生成的模型为逻辑回归模型。
联系客服