分享

R语言数据挖掘实践——用广义线性模型预测人体体脂重

 新用户8719ag3P 2022-01-06

  

  广义线性模型(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)

  R语言数据挖掘实践——用广义线性模型预测人体体脂重

  上述代码中,如果设置参数family=gaussian("identity"),则生成的模型将近似于线性回归模型。如果将参数family设置为binomial("logit"),则生成的模型为逻辑回归模型。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多