原文链接:http://tecdat.cn/?p=26301
线性模型是统计学的基础,但它的意义远不止用尺子在几个点上画一条线。
我认为以分布为中心的观点使 generalised linear models (GLM) 也更容易理解。这就是这篇文章的目的。
我将使用冰淇淋销售统计数据(查看文末了解数据获取方式)来说明不同的模型,从传统的线性最小二乘回归开始,到线性模型、对数变换线性模型,然后是广义线性模型,即泊松(log ) GLM 和二项式(逻辑)GLM。
数据
这是我将使用的示例数据集。它显示了在不同温度下销售的冰淇淋单位。正如预期的那样,更多的冰淇淋在更高的温度下出售。
basicPlot()
挑战
我想创建一个模型来预测在任何温度下销售的单位,即使在可用数据范围之外。
我特别感兴趣的是,当室外结冰时,我的模型在更极端的情况下会如何表现,比如温度下降到 0ºC 并且预测一个非常炎热的夏日在 35ºC。
线性最小二乘
我的第一种方法是用尺子在这些点上画一条直线,这样可以最大限度地减少点和线之间的平均距离。这基本上是一条线性最小二乘回归线:
lqd <- lsfit abline
这很容易,而且看起来并非不合理。
线性回归
我相信观测值 yi 是从具有平均 μi 的正态(又名高斯)分布中得出的,这取决于温度 xi 和所有温度下的恒定方差 σ2。
在另一天,在相同温度下,我可能售出了不同数量的冰淇淋,但在相同温度下的许多天里,售出的冰淇淋的平均单位将趋向于 μi。
因此,使用以分布为中心的符号,我的模型如下所示:
或者,残差,即观察值和预测值之间的差异,遵循均值为 0 且方差为 σ2 的高斯分布:
此外,方程
我认为 yi 的期望值与基础分布的参数 μi 相同,而方差是恒定的。
以经典误差术语约定编写的相同模型如下所示:
我认为以概率分布为中心的约定更清楚地表明我的观察只是分布的一种实现。此外,它强调分布的参数是线性建模的。
为了在 R 中明确建模,我使用 glm 函数,将因变量分布指定为高斯分布,并将从分布的预期值到其参数的链接函数指定为恒等式。
这就是 GLM 全部内容。
尽管线性模型在观察到的温度范围内看起来不错,但在 0ºC 时没有多大意义。
截距为 -159,这意味着客户在冰冻天平均买 159 个单位的冰淇淋。
对数变换的线性回归
我可以先转换数据。理想情况下,我想确保转换后的数据只有正值。在这些情况下,我想到的第一个转换是对数。
因此,让我们以对数尺度对冰淇淋销售进行建模。因此,我的模型更改为:
这个模型意味着我相信销售额服从对数正态分布,yi∼logN(μi,σ2),这意味着我认为较高的销售数字比较低的销售数字更有可能,因为对数正态分布是右偏的。
尽管模型在对数尺度上仍然是线性的,但我必须记住将预测转换回原始尺度(记住 E[log(yi)]≠log(E[yi])):
display(logn.mod)
Plot() lines legend
该图看起来比之前的线性模型好一点,它预测我在 0ºC 时平均会卖出 82 个冰淇淋:
exp(coef(lo.i.d)\[1\])
虽然这个模型更有意义,但似乎高估了在越来越低的温度下销售。
此外,这个模型和之前的线性模型还有另一个问题。
假设的模型分布生成实数,但我的销售统计数据是单位,因此总是整数。尽管售出的平均单位数量可能是实数,但从模型分布中抽取的任何数据都应该是整数。
数据分享|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟-2