在R语言中进行局部多项式回归拟合是利用loess函数,我们以cars数据集做为例子来看下使用方法。该数据中speed表示行驶速度,dist表示刹车距离。用loess来建立模型时重要的两个参数是span和degree,span表示数据子集的获取范围,取值越大则数据子集越多,曲线越为平滑。degree表示局部回归中的阶数,1表示线性回归,2表示二次回归,也可以取0,此时曲线退化为简单移动平均线。这里我们设span取0.4和0.8,从下图可见取值0.8的蓝色线条较为平滑。
------------------------
plot(cars,pch=19)
model1=loess(dist~speed,data=cars,span=0.4)
lines(cars$speed,model1$fit,col='red',lty=2,lwd=2)
model2=loess(dist~speed,data=cars,span=0.8)
lines(cars$speed,model2$fit,col='blue',lty=2,lwd=2)
------------------------
当模型建立后,也可以类似线性回归那样进行预测和残差分析
------------------------
x=5:25
predict(model2,data.frame(speed=x))
plot(model2$resid~model2$fit)
------------------------
R语言中另一个类似的函数是lowess,它在绘图上比较方便,但在功能上不如loess强大和灵活。
------------------------
plot(cars,pch=19)
lines(lowess(cars),lty=2,lwd=2)
------------------------
LOESS的优势是并不需要确定具体的函数形式,而是让数据自己来说话,其缺点在于需要大量的数据和运算能力。LOESS作为一种平滑技术,其目的是为了探寻响应变量和预测变量之间的关系,所以LOESS更被看作一种数据探索方法,而不是作为最终的结论。
目录
3. 散点图
3.1 绘制基本散点图
3.2 使用点形和颜色属性进行分组
3.3 使用不同于默认设置的点形
3.4 将连续型变量映射到点的颜色或大小属性上
3.5 处理图形重叠
3.6 添加回归模型拟合线
3.7 根据已有模型向散点图添加拟合线
3.8 添加来自多个模型的拟合线
3.9 向散点图添加模型系数
3.10 向散点图添加边际地毯
3.11 向散点图添加标签
3.12 绘制气泡图
3.13 绘制散点图矩阵往期文章参考书籍
散点图通常用于刻画两个连续型变量之间的关系。绘制散点图时,数据集中的每一个观测值都由每个点表示。
方法:
值得注意的是: loess() 函数只能根据数据对应的x轴的范围进行预测。如果想基于数据集对拟合线进行 外推 ,必须使用支持外推的函数,比如 lm() ,并将 fullrange=TRUE 参数传递给 stat_smooth() 函数。
使用 lm() 函数建立一个以 ageYear 为预测变量对 heightIn 进行预测的模型。然后,调用 predict() 函数对 heightIn 进行预测。
根据变量 sex 的水平对 heightweight 数据集进行分组,调用 lm() 函数对每组数据分别建立线性模型,并将模型结果放在一个列表内。随后,通过下面定义的 make_model() 函数建立模型。
调用 annotate() 函数在图形中添加文本。
调整标签位置,大家自行尝试。
如何只对自己想要的数据点添加标签。
调用 geom_point() 和 scale_size_area() 函数即可绘制气泡图。
如果x轴,y轴皆是分类变量,气泡图可以用来表示网格上的变量值。
散点图矩阵是一种对多个变量两两之间关系进行可视化的有效方法。pairs()函数可以绘制散点图矩阵。