线性回归是数据科学和机器学习中初学者常遇到的模型之一。它基于最小二乘法,易于理解且在多种问题中有效。在R语言中,lm()函数简化了线性回归模型的拟合过程。然而,该函数未提供参数估计和许多统计量的计算细节。本文将引导读者手动计算基于最小二乘法的线性回归模型参数。仅使用矩阵、向量和矩阵操作符,我们能实现参数估计。读完本文,你将能轻松操作任何数据集,尽管使用lm()函数更快更稳健。本文使用MASS包中的Boston数据集作为例子,包含14个经济、地理和人口变量,共有506个观测值,代表1990年代波士顿地区的特征。被解释变量是每个地区的房价中位数,列名为'medv'。让我们先查看数据集的结构:使用help(Boston)查看每个变量的定义。
线性回归表达式如下:
y = Xβ + ε
其中,y是响应变量(被解释变量),X是设计矩阵(特征变量),β是需要估计的参数向量,ε是残差项,表示未纳入模型的因素对y的影响。
第一步,声明响应变量。接着,确定输入特征的设计矩阵X,包括除medv外的所有变量,并在X中添加一列全为1的元素以估计截距项。现在有响应变量和设计矩阵,通过以下计算式获取系数估计值:
β = (X^T X)^(-1) X^T y
推导此表达式超出了本文范畴,有兴趣者可参阅相关教科书或维基百科。使用as.matrix()函数将变量纳入X,并通过%*%进行矩阵乘法,使用t()将矩阵转置,solve()获取可逆矩阵的逆矩阵。现在得到系数向量β,表示y与解释变量之间的线性关系。例如,每增加1个房间数,房价中位数增长3810美元。解释结果时需考虑变量的量纲。注意,变量chas是取0、1两个值的虚拟变量,1表示该区毗邻查理斯河,0表示相反情况。对应的系数表明,河边房子的房价中位数比内陆高2690美元(其他变量保持不变)。
译者注:作者直接解释结果,未考虑变量显著性。如果系数不显著,在统计意义上可认为系数为0,即变量与y之间无明显相关性。
现在,让我们验证结果。调用lm()进行建模并比较结果。系数估计值相同,这意味着你已学会手动计算系数估计值。然而,使用lm()函数更快,并提供拟合优度、t值、p值等统计量,以及使用QR分解等技术使计算更稳健。无论使用哪种方法,本文展示了最原始的计算方法。
线性回归系数估计还有其他方法,如在特征数量较大时使用梯度下降法。此时,解析表达式结算可能较慢。随机梯度下降在特征数和样本数较大时适用,后续文章将介绍它们。所有代码已上传至我的GitHub,欢迎访问。祝你好运!
温馨提示:答案为网友推荐,仅供参考