【回归分析】二元直线回归分析
回归是一种——可以说是最基本,也是最重要的一种统计分析工具,它可以在含有大量数据集的研究领域中使用。它构 成了在社科领域当中一些热度很高的统计方法的基础。多元回归分析和结构化方程建模也许是应用最广泛,同时也是运用到心理研究和教育研究的回归分析中,效果 最好的回归模型。其中的原因就在于回归分析所选用的架构非常简单,但又非常灵活。还有,它们很容易在R平台上实现,并且有很多很多的辅助函数来使用,甚至 可以通过查阅帮助文档就能掌握。
接下来,我们看一个简单的线性回归分析的例子。我会使用swiss数据集,而这个数据集则含在datasets包里,而且也已经在R的所有安装流程上预先包装好了。现在,我们直接把这个数据集加载到我们的工作区域来使用。
data(swiss)
这个数据集的帮助文档也会告诉我们,这个数据集记录了瑞典1888年的生产力数据,而且所有的变量都以百分数的形式表示。它的结果,我会在这里看一 下生产力的指标,并通过研究比小学教育更高一级的教育进行生产力的预测——这时,我的基本假设就是更高等级的教育,其生产力就更低(如果1888年和现在 的情况一样的话)。
下面,我们先看一下这个例子的散点图:
plot(swiss$Fertility~swiss$Education)
这个原始的散点图已经部分的证明了这个假设的合理性,而且更重要的是,这行代码本身就已经包含了回归分析中的核心语法结构。在R上写上一个公式的基 本方法就是dependent~independent,其~符号可以理解成“在这里进行回归分析”或者“以此进行预测”。第二个最重要的一点就是在R上 计算基本回归分析的实质就是要你使用这样的一个函数:lm(…),这代表线性模型的意思。
这里,你在lm()函数里最常用到的两个参数分别是 formula和data(数据段)。这些参数也就自然而然地,而且也是lm(…)函数的头两个参数。指定一个数据段作为变量,你可以直接在 formula那里指明,而不需要告诉R每个变量的具体位置。当然,它只能在这两个变量都真的如你所指明的那样,在数据集里的时候才有效。下面,我们试一 下使用lm()函数,并把结果存放到reg中。
reg <- lm(Fertility~Education,swiss)
regCall:
lm(formula = Fertility ~ Education, data = swiss)
Coefficients:
(Intercept) Education
79.6101 -0.8624
lm(…)函数的基本输出结果包含两个部分:Call和系数。前面的那个部分告诉你,你用回归分析估计了什么东西,其实就是要确认一下这是否是你的 本意,然后第二个部分就给你输出相关的系数。在这个例子中,我们看到这样的两个系数:偏置项b和这个变量的系数。这个结果告诉我们,当Education 这个变量取0的时候,其预测结果是79.6101。这样的预测结果我们通常也会把它称之为条件期望,原因就在于你期望这个因变量的取值是假设自变量的值为 0时产生的。更加正式的说,$latex E(Y|X=0) = 79.61$。回归的权重就是一个点不同的两个领域的预测值之差。
对于大部分的R对象而言,summary()函数可以在ASCII表格中展示出很多最有用的信息。
summary(reg)Call:
lm(formula = Fertility ~ Education, data = swiss)
Residuals:
Min 1Q Median 3Q Max
-17.036 -6.711 -1.011 9.526 19.689
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 79.6101 2.1041 37.836 < 2e-16 ***
Education -0.8624 0.1448 -5.954 3.66e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 9.446 on 45 degrees of freedom
Multiple R-squared: 0.4406, Adjusted R-squared: 0.4282
F-statistic: 35.45 on 1 and 45 DF, p-value: 3.659e-07
在这个表格当中,什么样的信息最重要呢?也许就是系数的选择了,它包含了其中的参数估计和相关t检验。这个结果告诉我们,一个领域的教育程度和生产力水平是由显著相关性的。
第 二个最重要的一行信息就是$latex R^2$。在这个例子中,超过44%的领域的生产力变化体现了与教育等级变化之间的差异。基于这个事实,$latex R^2$就是自变量与因变量之间的皮尔森相关系数的平方的多重相关平方,这个、体现在生产力和教育水平的相关性应当等于在这里的R^2$。为了检验它,我 们可以这么做:
summary(reg)$r.squared
cor(swiss$Fertility,swiss$Education)^2
summary(reg)$r.squared == cor(swiss$Fertility,swiss$Education)^2
0.4406156
0.4406156
TRUE
最后一行代码展示了两个变量之间所求出来的值是否相等。
为了完善这个过程,我会在最开始作的散点图那里添加一条回归直线。之前就已经说 到,lm(…)函数和它的结果能很好的嵌入到R语言的环境中。所以,我们需要调用abline()函数来添加结果回归线。这个函数可以添加任何类型的直 线,而你只需要给它一个截距a和斜率b。如果你在这里放入lm类型的参数,它可以帮你完成回归线的拟合。
plot(swiss$Fertility~swiss$Education)
abline(reg)
这样,我们的R基本回归分析向导就这样大功告成。在后续的博客当中,我们会对这些概念延伸到多元回归进行探讨,并且关注一下如何简单的检验OLS回归的假设。
原文链接:http://datascienceplus.com/bivariate-linear-regression/
严禁修改,可以转载,请注明出自数据人网和原文链接。
今日数据人网精选推荐:
《谷歌I/O大会,人工智能+机器学习的产品》
《开始您的机器学习旅程!》
点击【阅读原文】,即刻阅读精选。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!