中文 · PDF 398
mod <- lm(y ~ x, data = df) #> 警告:丢弃了 2 行包含缺失值的数据
要抑制该警告,可以设置 na.action = na.exclude:
mod <- lm(y ~ x, data = df, na.action = na.exclude)
你随时可以使用 nobs() 准确查看使用了多少个观测值:
nobs(mod) #> [1] 3
其他模型族
本章只专注于线性模型这一类,它假设变量之间的关系形如 y = a_1 * x1 + a_2 * x2 + ... + a_n * xn。线性模型还假设残差服从正态分布,这一点我们尚未讨论。有一大类模型类以各种有趣的方式对线性模型进行了扩展。其中一些包括:
- 广义线性模型,例如 stats::glm()。线性模型假设响应变量是连续的,且误差服从正态分布。广义线性模型将线性模型扩展到包含非连续的响应变量(例如二分类数据或计数数据)。它们的工作原理是基于统计学中似然的概念定义一种距离度量。
- 广义可加模型,例如 mgcv::gam(),将广义线性模型扩展为可以纳入任意的平滑函数。这意味着你可以写出类似 y ~ s(x) 的公式,它会变成类似 y = f(x) 的方程,并让 gam() 估计该函数是什么(需满足一些平滑性约束以使问题可解)。
- 惩罚线性模型,例如 glmnet::glmnet(),在距离中加入一个惩罚项,对复杂模型进行惩罚(复杂度由参数向量到原点的距离定义)。这往往能使模型对来自同一总体的新数据集具有更好的泛化能力。
- 稳健线性模型,例如 MASS:rlm(),通过调整距离来降低距离很远的点的权重。这使得它们对异常值的存在不那么敏感,代价是在没有异常值时表现稍差。