美文网首页
数据分析50图(三) —— 散点线性回归与置信区间

数据分析50图(三) —— 散点线性回归与置信区间

作者: iced_fd13 | 来源:发表于2019-03-30 13:01 被阅读0次

    数据分析50图(三) —— 散点线性回归与置信区间

    前言

    华罗庚说过

    数缺形时少直观,形少数时难入微.

    这句话第一次听还是初中数学老师上二次方程课时说的.最近看到了3blue1brown对线性代数的直观解释感觉豁然开朗,于是我又捡起了儿时对美妙数学的兴趣. 发现一个博客,数据可视化很好的例子,决定花些时间和大家一起解读一下

    例程来自:https://www.machinelearningplus.com/plots/matplotlib-histogram-python-examples//

    感谢b站UP "菜菜TsaiTsai" 分享这个博客.

    正式开始“50图”的学习。首先的一个系列 <u>关联图</u> 这通常能告诉我们几个事物之间的联系。

    例3、4

    from matplotlib import patches
    from scipy.spatial import ConvexHull
    import warnings; warnings.simplefilter('ignore')
    import seaborn as sns
    sns.set_style("white")
    
    # Import Data
    df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv")
    
    df_select = df.loc[df.cyl.isin([4,8]), :]
    # Plot
    sns.set_style("white")
    gridobj = sns.lmplot(x="displ", y="hwy", hue="cyl", data=df_select, 
                         height=7, aspect=1.6, robust=True, palette='tab10', 
                         scatter_kws=dict(s=60, linewidths=.7, edgecolors='black'))
    
    # Decorations
    gridobj.set(xlim=(0.5, 7.5), ylim=(0, 50))
    plt.title("Scatterplot with line of best fit grouped by number of cylinders", fontsize=20)
    plt.show()
    

    解析

    解析下代码流程

    这是第一次使用 seaborn 包,他是matplotlib 的高级封装,我第一次见他就被他色彩吸引了。

    1. 导入数据
    2. 画图(没错seaborn 就是这么方便)
    3. 添加标注说明

    先看下这个不太友好的数据集

    manufacturer model displ year cyl trans drv cty hwy fl class
    0 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
    1 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
    2 audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
    3 audi a4 2.0 2008 4 auto(av) f 21 30 p compact
    4 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact

    这次用到的数据是 displ,hwy,cyl。 what? 不太懂车啊,这是什么鬼缩写。一顿谷歌搜索。

    • displ 排量
    • cyl 气缸数
    • hwy 高速公路上时每加仑里程数
    • cty 城市道路时每加仑里程数

    方法参数解释

    df.loc[df.cyl.isin([4,8]), :] 选择 cyl 等于 4和8的 所有行

    sns.lmplot()
    • x,y,data: seaborn 包接受DateFrame 对象的行标签作为输入,也就是选取列名为displ 的这一列数据作为x输入
    • hue=‘cyl’:这里如果用hue,用col则2个点集会分别在2张图上显示而不是在同一张图上
    • height,sapect: 整个画布的尺寸设置
    • robust: 如果为真,表示回归要求是 鲁棒的
    • palette: 色彩盘,我很喜欢他的配色除了 tab10 还有很多其他可用
    • scatter_kws: 我们知道 seaborn 是matpoltlib 的高级封装 所以scatter_kws 表示原有的plt.scatter() 的关键字参数

    图像

    col='cyl' hue='cyl'

    应用

    图中2条回归线的意思两侧的点离这条线的距离方差最小,从直观上的解释。举个例子 有一个射击手瞄准这条线射击,所有弹孔离着根线越近则他的成绩越好,而方差表示他的发挥很稳定,每次都能打出8环。淡色的阴影面积表示,这些点落在直线周围的置信度。还是射击手的例子,假设这个射击手的发挥稳定程度不变,那么他下次射击的成绩大概率会在这个阴影里。

    所以我们可以从这图上看出什么?

    可以猜想如果汽车技术没什么革新,用原有的技术设计。要制造一台4杠,4.0排量的汽车,那么他的油耗应该是在每加仑15-20英里的样子。

    如果你是个观察力非凡的画家,你可能会发现图中,有些点颜色较深而有些点颜色浅。这并不是绘图的错误,或者视觉差。这是因为有很多同样位置的点重叠在一起。许多统计数据都会有这种重叠的特点,比如高考的成绩,一类商品的热度。

    那么如何用可视化的方式展现出同一车型的热度?带着这个问题我们下期见。

    下期预告

    例2 散点图重合点抖动与计数 —— 回到频次统计

    相关文章

      网友评论

          本文标题:数据分析50图(三) —— 散点线性回归与置信区间

          本文链接:https://www.haomeiwen.com/subject/gnmjbqtx.html