【R案例分享】探索性数据分析
摘要
探索性数据分析(EDA)是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。本文介绍了使用R语言对iris数据集进行探索性数据分析的过程和具体实现。
【R语言】致力于传播R知识,包括【R每日一帖】、【R书籍推荐】、【R案例分享】。后续会推出【R那些事】、【R微课程】等栏目。在这大数据时代里,从数据中找出价值,既是机遇又是挑战。R语言可以帮助我们获取数据、处理数据、分析数据、展示数据和理解数据,以进行数据化决策!
探索性数据分析(EDA)是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。
EDA是二十世纪六十年代提出的,该方法由美国著名统计学家约翰.图基命名。EDA主要应用于对数据进行初步的分析,往往还无法进行常规的统计分析。
EDA有以下特点。
特点一:分析思路上让数据说话,不强调对数据的整理。EDA从原始数据出发,深入探索数据的内在规律,而不是从某种假定出发,套用理论结论,拘泥于模型的假设。
特点二:EDA分析方法灵活,不拘泥于传统的统计方法。EDA处理数据的方式灵活多样,什么方法可以达到探索和发现的目的就使用什么方法。
特点三:EDA分析工具简单直观,易于传播。EDA侧重于直观及数据可视化。
我们知道EDA是什么,EDA有什么特点后,我们现在使用R语言来对Iris数据集进行探索性分析。
Iris数据集简介
Iris数据集包含5个变量,分别是Sepal.Length,Sepal.Width,Petal.Length,Petal.Width和Species,即萼片的长度、萼片的宽度、花瓣的长度、花瓣的宽度和种类,共有150个观测,3种分类(setosa,versicolor,virginica),每种分类有50个观测。
Iris数据集是R自带的数据集,可以直接使用。
关于iris数据集详细介绍,执行help(iris)或者?iris 即可。
Iris数据集探索性分析
第一步:检查维数
>dim(iris)
[1] 150 5
第二步:变量名称或者列名称
> names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
第三步:数据集的数据结构
> str(iris)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
第四步:数据集的attributes
> attributes(iris)
$names
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
$row.names
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[21] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
[41] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
[61] 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
[81] 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
[101] 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
[121] 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
[141] 141 142 143 144 145 146 147 148 149 150
$class
[1] "data.frame"
第五步:获取数据集前6个观测
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
或者
> iris[1:6,]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
第六步:获取数据集后6个观测
> tail(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
145 6.7 3.3 5.7 2.5 virginica
146 6.7 3.0 5.2 2.3 virginica
147 6.3 2.5 5.0 1.9 virginica
148 6.5 3.0 5.2 2.0 virginica
149 6.2 3.4 5.4 2.3 virginica
150 5.9 3.0 5.1 1.8 virginica
或者
> count_end <- nrow(iris)
> count_begin <- count_end -5
> iris[count_begin:count_end, ]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
145 6.7 3.3 5.7 2.5 virginica
146 6.7 3.0 5.2 2.3 virginica
147 6.3 2.5 5.0 1.9 virginica
148 6.5 3.0 5.2 2.0 virginica
149 6.2 3.4 5.4 2.3 virginica
150 5.9 3.0 5.1 1.8 virginica
第七步:获取前十个观测萼片长度
> iris[1:10, names == "Sepal.Length"]
[1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9
或者
> iris[1:10, "Sepal.Length"]
[1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9
或者
> iris[1:10, 1]
[1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9
或者
> iris[1:10, names(iris)[1]]
[1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9
或者
> names <- names(iris)
> iris[1:10, names == "Sepal.Length"]
[1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9
或者
> iris$Sepal.Length[1:10]
[1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9
第八步:每个变量的分布情况
第九步:类别的频次
> table(iris$Species)
setosa versicolor virginica
50 50 50
第十步:类别频次的饼状图
> pie(table(iris$Species))
第十一步:萼片长度的方差
> var(iris$Sepal.Length)
[1] 0.6856935
第十二步:萼片长度和花瓣长度的协方差
> cov(iris$Sepal.Length, iris$Petal.Length)
[1] 1.274315
第十三步:萼片长度和花瓣长度的相关系数
> cor(iris$Sepal.Length, iris$Petal.Length)
[1] 0.8717538
第十四步:萼片长度的直方图
> hist(iris$Sepal.Length)
第十五步:萼片长度的密度曲线图
> plot(density(iris$Sepal.Length))
第十六步:散点图
> attach(iris)
> plot(Sepal.Length, Sepal.Width)
> detach(iris)
第十七步:矩阵散点图
> plot(iris)
或者
> pairs(iris)
【想一想】
1 探索性数据分析怎么理解,具有什么特点,怎么应用?
2 如何使用R语言进行探索性数据分析?
◆传播R知识
【R语言】作为国内传播R知识的交流合作平台,它集R学习、实战、技术、培训、人才等功能为一体,帮助数以万计的朋友们使用好R,让R服务我们的工作和改善我们的生活。
◆互动交流
我是陆勤,微信号:wangluqing360,你们在R路上的朋友,一起欣赏R路上的风景。PPV课R语言群:342699237,欢迎朋友们加入,共建最好的R社区。欢迎读者朋友们撰稿深度挖掘,回复消息给我留言或者邮件至1181906473@qq.com。
◆如何查看更多好文章
查看【历史记录】
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!