作为数据分析者,我们需要熟悉数据的意义和分布,甚至在建立模型之前,我们就可以通过一定的技术手段发现数据中存在额有意义的信息。通过探索数据(包括数据的最大最小值,平均值,以及分布规律),我们可以更好的理解数据。通过探索数据,我们可以处理数据中存在的一些问题,比如缺失值、噪声、错误的数据和偏差分布的数据。
rattle是R的数据数据分析工具包,我们可以通过文本视区的运行结果对数据进行可视化,探索属性间的关联性。在rattle的explore工具栏提供了我们需要的理解数据的工具。
1.数据总结
下图展示了rattle中explore按钮的可选项。我们开始数据探索基于Summary选项,它提供了数据的文本统计信息。
我们在Data选项中按执行按钮,在Explore中选Summary选项后按执行按钮,结果如下:
通常,有时候我们会处理非常大的数据集,可视化会花费很大的计算成本。所以在数据中随机抽取一些样本来代替整体的数据。在Data工具栏的Partition选项就可以这样选择,下面的例子随机抽取了weather的20% 的数据。
> dim(weather) [1] 366 24 > set.seed(42) > smpl <- sample(nrow(weather),0.2*nrow(weather)) > dim(weather[smpl,]) [1] 73 24
我们看到weather数据集整体有366行,24列,采样后有73个样本,24个属性。
这里是简单的举个大数据集采样的例子,366个样本是很小的,我们不需要进行采样就可以。
基本的统计信息
最简单的统计输出方式是用summary()函数,下面我们看weather的24个属性的7,8,9属性值:
> summary(weather[7:9]) Sunshine WindGustDir WindGustSpeed Min. : 0.000 NW : 73 Min. :13.00 1st Qu.: 5.950 NNW : 44 1st Qu.:31.00 Median : 8.600 E : 37 Median :39.00 Mean : 7.909 WNW : 35 Mean :39.84 3rd Qu.:10.500 ENE : 30 3rd Qu.:46.00 Max. :13.600 (Other):144 Max. :98.00 NA's :3 NA's : 3 NA's :2 >
对于数值型变量,它列出了属性的最小值,最大值,均值,中间值,以及一分位和三分位均值,空值等。通常的情况下,均值和中间的偏差比较大,我们会认为一些样本在某个特定方向上偏离了均值点(一些大的正负样本值,通常我们称之为离群点)。
对于类别型变量将会列出最频繁出现的几项,剩下的在other选项里。在上例中,WindGustDir属性的NW有73个样本,NNW有44个属性,依次等等。所有属性的缺失值的数量将会在最后列出NA‘S。
2.数据可视化分布
通过绘制图形我们可以更容易理解数据,更生动的表达数据信息,比列表形式的统计形式更直白有效。可视化研究的工具可以帮助我们理解数据的特点,指引我们以更合适的方式转换属性,选择我们感兴趣的属性值。R为数据的可视化提供了有力的工具,并且我们可以交互式生成我们需要的图形,可操作性更强。在rattle的Explore工具栏下类型选项的Distribution下,我们可以随意选择想要绘制的属性选项,如果选择多个属性,那么也可以每个页面多图绘制。默认情况下,每个窗口绘制四个图形。
在Data选项加载weather数据集(直接按执行按钮),并切换到Explore工具栏下,选到Distribution,生成图如下:
对于数值型变量,我们可以绘制属性的箱体图(Box Plot),直方图(Histogram),Cumulative Function plot(累积函数图)
对于类别型变量,我们可以绘制属性的条形图(Bar Plot),点图(Dot Plot),马赛克图(Mosaic)
我们选取Rainfall和Sunshine两个属性的Box PLot(箱体图):
接下来我们分别详细分析下box plot、Histogram、cumulative Distribution PLot(累积分布)、Benford's Law(检测奇异点),Bar plot
,Dot plot,Mosaic plot(马赛克)和Pairs and Scatter plot(散点图)。
2.1Box plot(箱体图)
Rattle的箱体图比R的基本绘图提供了一些额外的统计信息。下图中我们选择属性Humidity3pm,Raintomorrow作为目标属性箱体的宽度表示了目标属性值的分布。
我们在图中标出了基本的统计信息,最右边箱体区间值为76-40,最大、最小值基于中值不能超过箱体区间的1.5倍(最大值=<56+(74-40)*1.5),超出区域的点为离群点,如左边两个箱体最上边的黑圆点。箱体的缺口为中值的95%的置信区间(56-56*5%<x<56+56*5%).
Rattle的Log标签给出了详细的运行代码:
# Rattle timestamp: 2017-05-08 15:58:55 x86_64-w64-mingw32 # Display box plots for the selected variables. # Use ggplot2 to generate box plot for Humidity3pm # Generate a box plot. p01 <- crs %>% with(dataset[,]) %>% dplyr::mutate(RainTomorrow=as.factor(RainTomorrow)) %>% ggplot2::ggplot(ggplot2::aes(y=Humidity3pm)) + ggplot2::geom_boxplot(ggplot2::aes(x="All"), notch=TRUE, fill="grey") + ggplot2::stat_summary(ggplot2::aes(x="All"), fun.y=mean, geom="point", shape=8) + ggplot2::geom_boxplot(ggplot2::aes(x=RainTomorrow, fill=RainTomorrow), notch=TRUE) + ggplot2::stat_summary(ggplot2::aes(x=RainTomorrow), fun.y=mean, geom="point", shape=8) + ggplot2::xlab("RainTomorrow\n\nRattle 2017-5月-08 15:58:55 zhilei") + ggplot2::ggtitle("Distribution of Humidity3pm\nby RainTomorrow") + ggplot2::theme(legend.position="none") # Display the plots. gridExtra::grid.arrange(p01)
我们可以将命令拷贝到控制台窗口,根据需要手动修改命令绘制出自己想要的图形。