下文中所使用的示例数据和R代码的百度盘链接(提取码,37gq):
https://pan.baidu.com/s/1iVARvIxbBbxiiYZzihDaIA
若百度盘失效,也可在GitHub的备份中获取:
https://github.com/lyao222lll/sheng-xin-xiao-bai-yu
散点图平滑(loess)
在R中,最常用的平滑拟合函数是loess(),当把平滑散点图作为探索性工具时,loess是非常不错的选择。loess是一种非参数回归模型,不是通过一个或多个参数化公式定义的,而是通过图形定义。默认情况下。您不妨可以将它理解为一种特殊的分段线性回归,将自变量分解成N个局部子集,并在每个局部子集中执行最小二乘回归,这使其成为平滑任何数值向量的合适候选。
以下展示两个R语言运行示例,帮助了解如何使用loess回归探索变量间可能的响应关系,辅助选择更具体的参数化模型。
示例一,通过平滑回归辅助选择参数模型
网盘示例数据“comm_dis.depth40.North.txt”,来自前文“简单线性回归”,统计了某项研究中对北大西洋海域表层40m水深处浮游细菌群落的调查数据。在海域中采集表层40m水深处的水体样本后,记录了采样地的经纬度坐标,并后续测量了水体样本中浮游细菌群落的物种组成丰度。
site1和site2分别为参与比较的成对采样地点的名称;
comm_sim为两个采样水体样本之间浮游细菌群落的组成相似度,通过Bray-curtis相似度指数衡量;
site_dis为二者的地理距离,由经纬度换算得到,单位是千米(km)。
现在期望明确不同采样地之间,浮游细菌群落的组成相似度是否会随采样地距离的增加而下降(即距离-衰减),并且这种距离衰减模式是怎样的。
首先,不妨通过loess()执行平滑回归进行探索。
#读取数据
dat1
#平滑拟合,详情 ?loess
#参数 span 可控制平滑度,值越大拟合曲线越平滑
#默认使用最小二乘回归法进行局部拟合,如要更改,可通过参数 family 指定
fit1 summary(fit1) #展示平滑回归的一些细节
#使用 ggplot2 对平滑拟合简单作图,并展示 95% 置信区间
library(ggplot2)
p1 geom_point() +
stat_smooth(method = 'loess', formula = y~x, span = 0.75, se = TRUE, level = 0.95,
color = 'blue', fill = 'blue') +
ylim(0, 1)
p1
参数细节详见?loess的R文档即可。根据平滑回归图,可以发现不同采样地之间,浮游细菌群落的组成相似度随采样地距离的增加而出现非常明显的距离衰减趋势,且这种趋势平缓下降,似呈一种线性的距离衰减模式。
因此,接下来考虑添加线性回归拟合,描述该数据集中北大西洋浮游细菌群落的组成相似度的线性距离衰减模式。
#添加线性回归线,并展示 95% 置信区间