前言

你好,这里是四川师范大学研究生公选课《数据科学中的R语言》的课程内容。R语言是统计编程的第一语言,近几年Tidyverse的推出大大降低了R语言的学习难度。Tidyverse是一系列R包的集合,包含了dplyr、ggplot2、tidyr、stringr等,从数据导入预处理,再到高级转化、可视化、建模和展示。因为其代码清晰可读的编程风格,得到越来越多人的喜爱。考虑到大家来自不同的学院,有着不同的学科背景,因此讲授的内容不会太深奥(要有信心喔)。

比如在课程中以下内容就不会出现

\[ f(x)=\frac{1}{\sqrt{2 \pi}} e^{-\frac{1}{2} x^{2}} \]

而出现更多的是

library(tidyverse)
summary_monthly_temp <- weather %>% 
  group_by(month) %>% 
  summarize(mean = mean(temp), 
            std_dev = sd(temp))

书中大量使用形象化的比喻,从计算机科学的角度来讲,这些比喻是不严谨的,但是可以帮助大家理解其中概念,激励动手操作,提升信心。因为我们的目的,是让大家不害怕编程,而不是把大家培养成程序员。

跟进本课程的同时, 我强烈推荐大家阅读Hadley Wickham的 r4ds这本书 (Grolemund and Wickham 2017)。作者可是2019年8月刚刚获得考普斯总统奖(被誉为统计学的诺贝尔奖)的大神喔,点击这里可以看他照片。

关于课程

1、课程安排是这样的,每个章节研究的内容都是彼此独立的,大家可以单独阅读每章及运行代码。

  • 基础篇
    • 1 章介绍数据科学基础
    • 2 章介绍安装与环境配置
    • 3 章介绍R语言中一切都是对象
    • 4 章介绍向量
    • 5 章介绍R语言数据结构
    • 6 章介绍运算符及向量运算
    • 7 章介绍R语言中的函数
    • 8 章介绍R语言中的子集选取
  • tidyverse篇
    • 9 章介绍可重复性文档
    • 10 章介绍数据读入
    • 11 章介绍数据处理
    • 12 章介绍dplyr的应用
    • 13 章介绍数据可视化
    • 14 章介绍数据规整
    • 15 章介绍字符串处理
    • 16 章介绍因子类型数据
    • 17 章介绍简单数据框
    • 18 章介绍函数式编程1
    • 19 章介绍函数式编程2
    • 20 章ggplot2几何图形
    • 21 章ggplot2的标度
    • 22 章ggplot2的主题
    • 23 章ggplot2的图例
    • 24 章ggplot2扩展内容
    • 25 章ggplot2统计图层
    • 26 章ggplot2从图层到几何图形
    • 27 章ggplot2数据可视化中的配色
    • 28 章ggplot2如何控制图例的外观
    • 29 章ggplot2中的延迟映射
    • 30 章介绍科研数据可视化中的统计分布图
    • 31 章让你的数据骚动起来
    • 32 章回望Tidyverse之旅
    • 33 章介绍Tidyverse常用技巧
    • 34 章介绍Tidyverse进阶技巧
    • 35 章介绍Tidyverse代码书写规范
    • 36 章介绍数据框的列方向和行方向
    • 37 章介绍Tidyverse中的across()之美
    • 38 章介绍Tidyverse中的across()之美(续篇)
    • 39 章介绍Tidyverse中的across()之美(再续)
    • 40 章介绍Tidyverse中的NA
    • 41 章介绍Tidyverse中的dot
    • 42 章介绍非标准性评估
  • 建模篇
    • 43 章介绍模拟与抽样
    • 44 章介绍线性模型
    • 45 章介绍模型输出结果的规整
    • 46 章介绍t检验、方差分析和重复测量的方差分析等基础统计检验方法
    • 47 章介绍统计检验与线性模型的等价性
    • 48 章介绍统计推断
    • 49 章介绍多层线性模型
    • 50 章介绍广义线性模型中的泊松回归
    • 51 章介绍logistic回归模型
    • 52 章介绍有序logistic回归模型
  • tidymodels篇
    • 53 章介绍机器学习与Tidymodels
  • 贝叶斯篇
    • 54 章介绍贝叶斯推断
    • 55 章介绍Stan入门
    • 56 章介绍贝叶斯线性模型
    • 57 章介绍贝叶斯之假设检验
    • 58 章介绍贝叶斯广义线性模型
    • 59 章介绍贝叶斯层级模型
    • 60 章介绍贝叶斯混合模型
    • 61 章介绍贝叶斯分类模型
    • 62 章介绍贝叶斯工作流程
    • 63 章贝叶斯案例-新冠疫苗有效率的计算
    • 64 章贝叶斯案例-预测奥运会男子100米短跑成绩
  • 应用篇
    • 65 章介绍探索性数据分析-诺奖获得者
    • 66 章介绍探索性数据分析-奥林匹克
    • 67 章介绍探索性数据分析-新冠疫情
    • 68 章介绍探索性数据分析-anscombe数据集
    • 69 章介绍探索性数据分析-身高体重
    • 70 章介绍探索性数据分析-驯鹿迁移
    • 71 章介绍探索性数据分析-企鹅的故事
    • 72 章介绍探索性数据分析-大学生职业决策
    • 73 章介绍探索性数据分析-ames房屋价格
    • 74 章介绍探索性数据分析-哺乳动物脑量与体重的关系
    • 75 章介绍网页爬虫
    • 76 章介绍社会网络分析
    • 77 章介绍文本挖掘
    • 78 章介绍时间序列分析
    • 79 章介绍地理数据处理
    • 80 章介绍Tidyverse中行方向的操作
    • 81 章介绍我收集的一些有用和有趣的宏包
    • 82 章Pandas vs. dplyr谁是数据分析中最好用的宏包
    • 83 章一日一练,有些题目还是很有挑战性的喔

2、课件源代码和数据

我将持续改进课件,所以欢迎大家提出建议

3、关于课程目标

  • 课程目标: 熟悉数据科学流程,掌握统计编程技能,能运用探索性分析方法,解决基本的实际应用问题,做到学以致用,不是 learning R,而是 learning with R

  • 授课方式:

    • 边写代码边讲
    • 通过案例式、问题式的方法,增强参与感和目标感
  • 课堂要求

    • 自带电脑,配好运行环境
    • 光看李小龙的电影,是学不会功夫的
  • 科学脚手架

    • 科学脚手架,我个人比较喜欢这个比喻(我微信公众号就使用了这个名字)。在教育中,各种知识或技巧就好比建房子用的脚手架,它帮助我们加深理解,逐渐获得独立自主学习的能力。

4、关于如何提问

有的同学,这样一上来就问:老师,我的代码怎么运行不出来呢?或者图省事,干脆手机拍个照片一发。

  • 我想说,要想获得快速的帮助,在问问题之前,请先告诉对方三个信息:
    • 想解决的问题是什么?
    • 代码是什么?
    • 报错信息是什么?

课件中用到的宏包

my_packages <- 
   c("brms", "broom", "broom.mixed", "colorspace", "corrr", "countrycode", "cowplot", "cranlogs", "datapasta", "datasauRus", "devtools", "dplyr", "equatiomatic", "forcats", "gapminder", "geoshpere", "gganimate", "ggbeeswarm", "ggeffects", "ggforce", "gghighlight", "ggimage", "ggplot2", "ggpubr", "ggraph", "ggrepel", "ggridges", "ggstatsplot", "ggtext", "ggthemes", "gt", "gtsummary", "haven", "here", "janitor", "knitr", "latex2exp", "lme4", "lubridate", "maps", "margins", "MASS", "modelr", "naniar", "nycflights13", "ordinal", "pacman", "paletteer", "palmerpenguins", "patchwork", "performance", "purrr", "readr", "readxl", "remotes", "reprex", "rlang", "rmarkdown", "rstan", "rvest", "scales", "sf", "shadowtext", "showtext", "slider", "stars", "statsExpressions", "stringr", "styler", "tibble", "tibbletime", "tidybayes", "tidygraph", "tidymodels", "tidyr", "tidytext", "tidyverse", "tinytex", "viridis", "visdat", "namer", "ggfx", "equatiomatic")
install.packages(my_packages, repos = "http://cran.rstudio.com", dependencies = T)

可能用到的开发版本的宏包

#remotes::install_github("datalorax/equatiomatic")
devtools::install_github("easystats/report")
devtools::install_github("kassambara/navdata")
devtools::install_github('cttobin/ggthemr')
remotes::install_github("daranzolin/inferregex")
devtools::install_github("EmilHvitfeldt/gganonymize")
remotes::install_github("ThinkR-open/remedy") 
remotes::install_git("https://git.rud.is/hrbrmstr/hrbraddins.git") 
devtools::install_github("hadley/emo") 
remotes::install_github("romainfrancois/lay")
remotes::install_github("kjhealy/covdata")
devtools::install_github("kbodwin/flair")
devtools::install_github("seasmith/AlignAssign")

RYouWithMe

致谢

非常感谢川师研究生院的信任,有了您的支持,才会有更多的川师学子了解R的美!

王敏杰
于 川师图书馆某角落