Exploratory Data Analysis (EDA) 简单流程概述(一)

本文详细介绍了如何使用R语言对Bikedata2011数据库进行探索性数据分析(EA),包括加载库、数据概述、处理缺失值、变量转换和异常值检测。作者展示了如何合并天气变量、处理缺失数据以及对数值变量进行箱线图分析和对数变换的过程。
摘要由CSDN通过智能技术生成

本文以bikedata2011.rda(github源库链接:https://github.com/fben-eghan/Bike-Data/blob/main/bikedata2011.rdaicon-default.png?t=N7T8https://github.com/fben-eghan/Bike-Data/blob/main/bikedata2011.rda,建议提前了解该数据库的特征和意义)为研究数据库,进行了较为完整的EDA分析,可以作为大部分数据库EDA的一个参考流程。

首先,需要先加载数据库,加载所需的R packages(需提前安装)。

library(GGally)
library(MASS)
library(car)
library(RColorBrewer)

 随后,总结数据库,进行大体观察。

summary(bikedata2011)

随后我们发现天气(weather)变量中,大雨(heavy)只出现了一次。

table(bikedata2011$weather)

为了避免拟合模型的不稳定性,我们将大雨(heavy)和小雨(light)合并为雨(rain)变量。

bikedata2011$weather <- factor(bikedata2011$weather,
                               levels=c("clear", "mist", "light", "heavy"),
                               labels=c("clear", "mist", "rain", "rain"))
table(bikedata2011$weather)

随后,进行缺失数据检查和判定。关于数据库的说明中指出,数据库中缺失了所有完全没有自行车被租用的小时数(例如02/01/2011,Hour 5)。现在需要将(casual, registered, cnt)三个变量设置为0后,重新将这些缺失的数据添加回数据库中。然后将其他缺失值从最后一条已知记录中转入。同时,不需要量化的量都考虑做factor,比如日期,节假日,星期等。

datetime <- expand.grid("date"=as.Date("2011-01-01") + 0:364, "hour"=0:23)
bikedata2011 <- merge(datetime, bikedata2011, all=TRUE)
norental <- which(is.na(bikedata2011$cnt))
for (i in norental) {
bikedata2011[i,-(1:2)] <- bikedata2011[i-1,-(1:2)]
bikedata2011[i, c("casual","registered","cnt")] <- 0
}
bikedata2011$month <- months(bikedata2011$date)
bikedata2011$month <- factor(bikedata2011$month)
bikedata2011$weekday <- weekdays(bikedata2011$date)
bikedata2011$weekday <- factor(bikedata2011$weekday,
levels=c("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday",
"Saturday"))
bikedata2011$season <- factor(bikedata2011$season)
bikedata2011$holiday <- factor(bikedata2011$holiday)
bikedata2011$hour <- factor(bikedata2011$hour)

 如果出现日期中英文不统一的情况,请尝试以下代码。

Sys.setlocale("LC_TIME", "English")

运行完后可以再进行一次检查。

str(bikedata2011)

随后,我们对没有转变成factor的numerical变量进行箱形图检查,按其性质分为两组。

boxplot(bikedata2011$temp,bikedata2011$atemp,bikedata2011$humidity,
bikedata2011$windspeed,names=c("temp","atemp","humidity", "windspeed"),
horizontal=TRUE,col="blue")
boxplot(bikedata2011$casual,bikedata2011$registered,bikedata2011$cnt,
names=c("casual","registered","combined"),horizontal=TRUE,col="blue")

 观察到第二组箱形图的结果后,可以尝试对其使用对数(log)变化。我们可以观察到的是,修改过后的箱型图标度确实更接近了。

boxplot(log(bikedata2011$casual),log(bikedata2011$registered),log(bikedata2011$cnt),
names=c("casual","registered","combined"),horizontal=TRUE,col="blue")

(未完待续) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值