此地古同R语言

R小姐:绘制简单拟合曲线

2018-11-10  本文已影响1人  鲨瓜

上两篇文章中我们学会了如何利用 ggplot2 绘制简单的散点图以及对密集的数据进行分散处理来使数据之间的关系更为清晰可见。

接下来我们将要学习的是对散点图的数据进行线性拟合,也是常说的线性回归分析。

首先我们要明白什么是回归。回归的目的是通过几个已知数据来预测另一个数值型数据的目标值。假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就是要预测的目标值。这一计算公式称为回归方程,得到这个方程的过程就称为回归。

回归分析说白了呢就是偷懒,科学家不想把所有的数据点都测出来画一条曲线,那样实在是太麻烦,看《天使爱美丽》的时间都没有了,干脆随便测几个点作为样本,然后画一条最接近所有样本点的曲线作为总体。完美!!!可以继续开小差了。

正式开始绘图前首先声明一点,我们平常绘制的 Y~X 图,可以理解为一种结果 Y 的影响因子只有一个 X,然而这在现实生活中几乎是不可能的,造成结果的原因绝不只一种。为了减小这种思维方式的误差,我们应该努力找到造成这种结果的最主要因素。本期假设冬季羽绒服销量只与温度有关。

1

开店卖羽绒服

假如古同毕业后没有找到合适的工作,思考了很久以后打算开一家羽绒服专卖店,根据我查到的资料显示羽绒服的销售量只与温度有关。

#加载ggplot2
library(ggplot2)
#自编温度数据
x <- c(-20,-16,-9,-7,-2,4,10)
#自编羽绒服出售量
y <- c(100,85,72,59,45,34,15)

然后根据自己编的数据绘制散点图并进行线性拟合。

#aes()函数表示绘制的图形属性 x , y 等等
ggplot(mapping = aes(x,y)) +
  #geom_point可以设置数据点的类型,颜色以及大小
  geom_point(shape=21,fill='red',size=3) +
  #geom_smooth就是绘制拟合曲线,lm 是线性,公式是y=a*x,se 表示是否设置置信区间
  geom_smooth(method = lm,formula = y ~ x,se=FALSE)
image

这是绘图命令,当然我们也可以看看具体拟合曲线 h(x)。

lm(y ~ x)

这是按照公式 y=a*x 进行拟合,

image

由此我们便得到的总体的方程:y = -2.778x + 42.695。根据这个方程,对于天气预报员预测的气温,我也可以预测我能卖出多少件羽绒服。并不是所有的拟合曲线都是直线型,有可能是曲线,一样的方法。

2

曲线救“国”

方法与上面的一样,只不过涉及到一个 I() 函数的使用,这是为了与公式之间的运算符相区别。

x_2 <- c(-3,-2,0,2,-3)
y_2 <- c(1,5,8,4,0)
ggplot(mapping = aes(x,y_2)) +
  geom_point(shape=4,colour='red',size=3) +
  geom_smooth(method = lm,formula = y ~ I(x^2) + x,se=FALSE)
image

自己瞎编的数据之间拟合效果就是不一般,非常好。在实际应用中,我们一般可不会遇到这种情况,我敢打赌,你肯定会因为数据之间难以发掘地规律而抓狂,那又能怎么办呢?多试几个模型,万一找到一个好用的呢!

lm(y_2 ~ I(x_2^2) + x_2)

image

本期主要学会写公式 lm()

下期再见。

你可能还想看

等你很久啦,长按加入古同社区

image
上一篇下一篇

猜你喜欢

热点阅读