r语言ggplot画两条曲线_R语言 | ggplot2的回归模型拟合以及回归曲线作图方法杂烩...

本文通过示例详细介绍了如何使用R语言的ggplot2包进行多元回归曲线的绘制,包括局部加权回归、一般加性模型、广义线性模型等多种方法,并展示了如何添加非线性项、绘制非参数平滑曲线和参数回归线。
摘要由CSDN通过智能技术生成
477d16fcdd1b37dfae8a4a72b0bf58ec.png ggplot2的回归模型拟合以及回归曲线作图方法杂烩 c86231d84c3615b67eeaed256f98ac9b.png 本篇对 ggplot2 绘制回归曲线的方法作个汇总。 在先前的很多回归分析相关的推文中,大多都在过程中提及了一些简单的可视化方法,以帮助理解回归中的变量响应关系。在这些作图方法中,有些是特定功能 R 包自带的可视化方法,有些通过 ggplot2 绘制,还有部分直接使用 base 作图。相对而言, ggplot2 是 R 里面非常专业的作图包,其同时涵括了多种类型的回归模型在内,这使回归曲线的实现更加轻松。 您是否经常使用 geom_smooth() 拟合线性回归或 LOESS 平滑?除了这两种模型外,您是否还了解过 ggplot2 实现其它回归类型的方法,或者其它方式的回归曲线绘制函数呢?下文就列举一些示例帮助您加深印象吧。尽管如此,并不是所有回归都可以绘制图形展示。例如在二维平面或者三维空间中,可表达的信息有限,多元回归(具有多维的变量信息)就难以呈现出来。因此,本篇就以最常见的双变量关系分析(一元回归)为例,展示回归曲线通过 ggplot2 的绘制方法。  

下文中所使用的示例数据和R代码的百度盘链接(提取码,egpa):

https://pan.baidu.com/s/1GwW8EYgFE7EPrW6o9u5ScA

若百度盘失效,也可在GitHub的备份中获取:

https://github.com/lyao222lll/sheng-xin-xiao-bai-yu

       

通过ggplot2函数stat_smooth()、geom_smooth()统计变量关系并拟合回归

ggplot2内置了回归统计函数,想必同学们也都很熟悉,就是stat_smooth()以及geom_smooth()。两个函数的使用方法大致一致,可基于给定的双变量关系拟合指定的回归,默认方法包含局部加权回归(loess)、一般线性模型(lm)、广义线性模型(glm)、广义加性模型(gam)以及一些非线性回归(nls,如指数回归)等,并同时将双变量关系的回归线绘制在二维图中表示出来。此外,结合一些拓展包也可以实现更多非线性回归的作图。

接下来展示几个简单示例,了解不同模式回归曲线通过ggplot2函数的绘制方法。

示例1.1-局部加权回归(loess)的平滑拟合

MASS包的内置数据集Boston,记录了波士顿郊区的房屋价值与当地社会环境、人口组成等信息。这里希望关注当地低收入人口比例和其所居住地房屋价格是否有关,不妨首先拟合一个双变量关系的平滑曲线进行探索。

平滑回归方法中,局部加权回归(LOESS)是最常用的平滑器。在函数stat_smooth()或geom_smooth()中通过method = 'loess'指定局部加权回归的平滑拟合,并通过span参数控制曲线平滑度。

#MASS 包的示例数据集,波士顿郊区的房屋价值,详情 ?Boston
library(MASS)
data(Boston)
#ggplot2 绘制低收入人口比例和居住地房屋价格的关系
library(ggplot2)
p geom_point() +
theme_bw()
p
##拟合局部加权回归(loess),并展示 95% 置信区间
#stat_smooth() 参数 span 可控制曲线平滑度,值越大拟合曲线越平滑,详情 ?stat_smooth
#注意平滑参数值应当谨慎设置,它强烈影响曲线意义的解读
p1 p1
#类似地,geom_smooth() 参数中,span 控制曲线平滑度
p2 p2

78f9849a1e7c5e81d6e2337ac7627c8d.png

平滑曲线展现了居住地房屋价格越高,当地低收入人口比例越低。可能与低收入人群难以负担得起较高居住地的成本,而更多选择廉价的房屋租赁或长期居住有关。

示例1.2-一般加性模型的平滑拟合

实现非参数平滑回归的另一方法是使用加性模型。在函数stat_smooth()或geom_smooth()中通过method = 'gam'指定加性模型的平滑拟合,并通过在formula参数中选择平滑器参数实现。默认情况下,该函数假定响应变量服从正态分布,并执行一般加性模型的形式。

##gam 默认情况下执行一般加性模型的平滑回归,并展示 95% 置信区间
#stat_smooth() 和 geom_smooth() 的用法大致相似
#通过 formula = y~s(x) 指定函数关系,s() 中的参数 k 可调整平滑度,详情 ?s()
#注意平滑参数值应当谨慎设置,它强烈影响曲线意义的解读
p + stat_smooth(method = 'gam', formula = y~s(x, k = 10), se = TRUE, level = 0.95) 
p + geom_smooth(method = 'gam', formula = y~s(x, k = 5), se = TRUE)

0b769adb8fe31be27f407a803e21a701.png

和loess平滑显示了一致的趋势,平滑曲线展现了居住地房屋价格越高,当地低收入人口比例越低。

示例1.3-一般线性模型(lm)之简单线性回归

上图的非参数平滑曲线显示了低收入人口的居住比例随当地房屋价格的升高而降低,不妨使用参数回归代替描述这个趋势,例如最常使用的简单线性回归。函数stat_smooth()或geom_smooth()中,通过method = 'lm'指定线性回归拟合变量关系,默认绘制Y=β1X+β0形式的简单线性回归形式。

##一般线性模型(lm),并展示 95% 置信区间
#stat_smooth() 拟合简单线性回归,详情 ?stat_smooth
p1 p1
#geom_smooth() 拟合简单线性回归,详情 ?geom_smooth
p2 p2

a2fbf8361593c63ec0bb886ee4b8baee.png

该图显示了波士顿郊区低收入人口的居住比例随当地房屋价格的升高而呈现明显的线性降低趋势。蓝线,上文的非参数loess平滑拟合;红线,普通线性回归拟合。

示例1.4-一般线性模型(lm)之带多次项的线性回归

不过上述非参数平滑曲线图的走势表明,似乎还可以用一个弯曲的曲线来提高拟合精度,即拟合含多次项的线性回归。因此继续考虑添加二次项关系,即Y=β1X+β2X20。类似地,在函数stat_smooth()或geom_smooth()中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值