数据质量与清洗

面向 SAS 用户的 R

Melinda Higgins, PhD

Research Professor/Senior Biostatistician Emory University

检查分布

# 继续使用 davismod
davismod %>%
  head(5)
  sex weight height repwt repht      bmi diffht difflow          bmicat
1   M     77    182    77   180 23.24598     -2   FALSE 1. underwt/norm
2   F     58    161    51   159 22.37568     -2   FALSE 1. underwt/norm
3   F     53    161    54   158 20.44674     -3    TRUE 1. underwt/norm
4   M     68    177    70   175 21.70513     -2   FALSE 1. underwt/norm
5   F     59    157    59   155 23.93606     -2   FALSE 1. underwt/norm
面向 SAS 用户的 R

检查分布

# 获取 bmi 的汇总统计,关注最小值、最大值、中位数
davismod %>%
  pull(bmi) %>%
  summary()
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
  15.82   20.23   21.84   24.70   23.94  510.93

注意 Max. > 500

面向 SAS 用户的 R

可视化分布

# 用 geom_dotplot() 绘制 bmi 点图
ggplot(davismod, aes(bmi)) +
  geom_dotplot()

bmi 点图

面向 SAS 用户的 R

找到离群值

# 用 arrange() 排序,用 tail() 查看最后 6 行
davismod %>%
  arrange(bmi) %>%
  tail()
    sex weight height repwt repht       bmi diffht difflow    bmicat
195   M     89    173    86   173  29.73704      0   FALSE 2. overwt
196   M    102    185   107   185  29.80278      0   FALSE 2. overwt
197   M    103    185   101   182  30.09496     -3    TRUE  3. obese
198   M    101    183   100   180  30.15916     -3    TRUE  3. obese
199   M    119    180   124   178  36.72840     -2   FALSE  3. obese
200   F    166     57    56   163 510.92644    106   FALSE  3. obese
面向 SAS 用户的 R

可视化假设:weight <= height

# 带 y=x 参考线的散点图
ggplot(davismod,
       aes(weight, height)) +
  geom_point() +
  geom_abline(intercept=0, slope=1)

davismod 的身高与体重散点图

面向 SAS 用户的 R

过滤含错误的观测

# 用 dplyr 的 filter(),保留 bmi < 100 的观测
daviskeep <- davismod %>%
  filter(bmi < 100)

# 查看最后 6 行
daviskeep %>%
  arrange(bmi) %>%
  tail()
    sex weight height repwt repht      bmi diffht difflow    bmicat
194   F     75    162    75   158 28.57796     -4    TRUE 2. overwt
195   M     89    173    86   173 29.73704      0   FALSE 2. overwt
196   M    102    185   107   185 29.80278      0   FALSE 2. overwt
197   M    103    185   101   182 30.09496     -3    TRUE  3. obese
198   M    101    183   100   180 30.15916     -3    TRUE  3. obese
199   M    119    180   124   178 36.72840     -2   FALSE  3. obese
面向 SAS 用户的 R

可视化修正后的 bmi

# 绘制 bmi 点图
ggplot(daviskeep, aes(bmi)) +
  geom_dotplot()

daviskeep 的 bmi 点图

面向 SAS 用户的 R

abalone 数据集的最终清理

  • 检查 abalone 数据集的假设
  • 移除违背假设的观测
  • 确定用于分析和建模的数据集

假设:

  • 所有测量值应 > 0
  • length 是壳体最长尺寸
  • heightdiameter < length
  • wholeWeight 为总重量
  • 其他重量 < wholeWeight

鲍鱼壳图片

面向 SAS 用户的 R

探索并清理 abalone 数据集

面向 SAS 用户的 R

Preparing Video For Download...