将性别作为预测变量是否意味着我应该在 R 中使用 glm 函数,而不是 lm 函数?

机器算法验证 r 广义线性模型 线性模型
2022-03-19 03:28:56

我一直在对包含多个预测变量的数据集进行建模,但经过广泛的研究,我更加困惑是否应该使用 a lm()orglm()函数进行以下操作:

Model4 <-lm(Height_cm ~ Sleep.hours + Gender + Age + Exercise, data=Data.dat.complete)

其中身高是连续的,sleep.hours 是连续的,性别是男性/女性,年龄是连续的,运动是计数的(某人一周锻炼的次数)。

由于我有一个二元变量(性别),我的诊断图看起来不太好,我很想使用glm()with family=binomialand link=logit然而,在研究了几个小时后,我开始质疑这一点,因为我已经看到使用 just 来拟合性别的例子,lm()而我的其他预测变量显然不是二元的。

如果可能的话,我想自己尝试至少完成其中的一些工作,但如果有人能指出我正确的方向(即我的理解中的缺陷在哪里),我将不胜感激.

谢谢你。


诊断图:

在此处输入图像描述

1个回答

几点:

  • 您的问题的简短 ( tl;dr ) 答案是线性 ( lm) 与广义线性 ( glm) 模型的选择取决于响应变量( Height_cm),而不是与预测变量有关的任何事情。由于您的响应是连续的,因此您绝对应该避免使用用于计数或比例数据的标准 GLM(泊松、二项式/逻辑)。
  • 您的诊断图对我来说看起来并不那么糟糕:对于残差与拟合或比例位置图,y 没有系统变化作为 x 的函数;QQ图近似为一条直线;所有残差的 Cook 距离 < 0.5(在最内轮廓内)。. 我怀疑您所指的“坏处”是拟合值的非均匀分布(拟合与残差和比例位置中的 x 轴)图。这可能是因为性别有很大影响(我在您的数据集中看到的唯一二元预测变量);你可以plot(Model4, col = as.numeric(Data.dat.complete$Gender))检查一下。
  • 理论上,使用对数变换响应Gamma GLM 可以更好地对正变量进行建模,但是当变异系数较低时(响应变量的标准偏差 << 变量的平均值,例如 <1/3;该值为这里大约是 1/8),那么消极响应的隐含概率非常小,你可能不需要担心它。

您可能会发现该performance::diagnostics()函数的诊断的注释版本很有用(我不同意所有的设计决策,例如显示“残差正态性”的第五个图是多余的,并且比 QQ 图更不显眼,但总的来说它很有帮助)。

在此处输入图像描述