如何在 R 中进行探索性数据分析 (EDA)(附示例)

已发表: 2022-11-11

了解您需要了解的有关探索性数据分析的所有信息,这是一个用于发现趋势和模式并借助统计摘要和图形表示总结数据集的关键过程。

与任何项目一样,数据科学项目是一个漫长的过程,需要时间、良好的组织以及对几个步骤的严格尊重。 探索性数据分析 (EDA) 是此过程中最重要的步骤之一。

因此,在本文中,我们将简要介绍什么是探索性数据分析以及如何使用 R!

什么是探索性数据分析?

探索性数据分析在将数据集提交给应用程序之前检查和研究数据集的特征,无论是专门的业务、统计还是机器学习。

探索性数据分析

这种对信息性质及其主要特性的总结通常是通过视觉方法完成的,例如图形表示和表格。 该实践是提前进行的,以准确评估这些数据的潜力,这些数据将在未来得到更复杂的处理。

因此,EDA 允许:

  • 制定使用这些信息的假设;
  • 探索数据结构中隐藏的细节;
  • 识别缺失值、异常值或异常行为;
  • 发现整体趋势和相关变量;
  • 丢弃不相关的变量或与他人相关的变量;
  • 确定要使用的正式建模。

描述性数据分析和探索性数据分析有什么区别?

尽管目标不同,但有两种类型的数据分析,描述性分析和探索性数据分析,它们是齐头并进的。

而第一个侧重于描述变量的行为,例如均值、中位数、众数等。

探索性分析旨在识别变量之间的关系,提取初步见解并将建模引导到最常见的机器学习范式:分类、回归和聚类。

通常,两者都可以处理图形表示; 然而,只有探索性分析才寻求带来可操作的见解,即激发决策者采取行动的见解。

最后,虽然探索性数据分析旨在解决问题并带来指导建模步骤的解决方案,但描述性分析,顾名思义,仅旨在对相关数据集进行详细描述。

描述性分析探索性数据分析
分析行为分析行为和关系
提供摘要导致规范和行动
以表格和图表的形式组织数据以表格和图表的形式组织数据
没有显着的解释力是否具有显着的解释力

EDA的一些实际用例

#1。 数字营销

数字营销已经从一个创造性的过程演变为一个数据驱动的过程。 营销组织使用探索性数据分析来确定活动或努力的结果,并指导消费者投资和目标决策。

人口统计研究、客户细分和其他技术允许营销人员使用大量的消费者购买、调查和面板数据来理解和传达战略营销。

Web 探索性分析允许营销人员收集有关网站交互的会话级信息。 谷歌分析是营销人员为此目的使用的免费和流行的分析工具的一个例子。

营销中经常使用的探索性技术包括营销组合建模、定价和促销分析、销售优化和探索性客户分析,例如细分。

#2。 探索性投资组合分析

探索性数据分析的一个常见应用是探索性投资组合分析。 银行或贷款机构拥有一系列不同价值和风险的账户。

账户可能会因持有人的社会地位(富人、中产阶级、穷人等)、地理位置、净资产和许多其他因素而有所不同。 贷方必须平衡每笔贷款的贷款回报与违约风险。 那么问题就变成了如何对整个投资组合进行估值。

最低风险的贷款可能适用于非常富有的人,但富人的数量非常有限。 另一方面,许多穷人可以借钱,但风险更大。

探索性数据分析解决方案可以将时间序列分析与许多其他问题结合起来,以决定何时向这些不同的借款人细分或贷款利率。 向投资组合部分的成员收取利息,以弥补该部分成员之间的损失。

#3。 探索性风险分析

银行业的预测模型正在开发中,以提供有关个人客户风险评分的确定性。 信用评分旨在预测个人的违法行为,并广泛用于评估每个申请人的信用度。

此外,科学界和保险业也进行风险分析。 它还广泛用于金融机构,如在线支付网关公司,用于分析交易是真实的还是欺诈的。

为此,他们使用客户的交易历史。 它更常用于信用卡购买; 当客户交易量突然激增时,如果客户发起交易,则会收到确认电话。 它还有助于减少由于这种情况造成的损失。

使用 R 进行探索性数据分析

使用 R 执行 EDA 所需的第一件事是下载 R base 和 R Studio (IDE),然后安装和加载以下包:

 #Installing Packages install.packages("dplyr") install.packages("ggplot2") install.packages("magrittr") install.packages("tsibble") install.packages("forecast") install.packages("skimr") #Loading Packages library(dplyr) library(ggplot2) library(magrittr) library(tsibble) library(forecast) library(skimr)

在本教程中,我们将使用 R 内置的经济数据集,并提供美国经济的年度经济指标数据,为简单起见将其名称更改为 econ:

 econ <- ggplot2::economics
dataset_econ-1

为了进行描述性分析,我们将使用skimr包,它以一种简单且呈现良好的方式计算这些统计数据:

 #Descriptive Analysis skimr::skim(econ)
描述性分析_sk-1

您还可以使用summary函数进行描述性分析:

descriptiveanalysis_summary函数

这里的描述性分析显示数据集中有 547 行和 6 列。 最小值为 1967-07-01,最大值为 2015-04-01。 同样,它还显示平均值和标准偏差。

现在您对 econ 数据集中的内容有了基本的了解。 让我们绘制变量uempmed的直方图,以便更好地查看数据:

 #Histogram of Unemployment econ %>% ggplot2::ggplot() + ggplot2::aes(x = uempmed) + ggplot2::geom_histogram() + labs(x = "Unemployment", title = "Monthly Unemployment Rate in US between 1967 to 2015") 
历史

直方图的分布显示它的右侧有一条拉长的尾巴; 也就是说,可能有一些对该变量的观察具有更多“极端”值。 问题来了:这些数值发生在什么时期,变量的趋势是什么?

识别变量趋势的最直接方法是通过折线图。 下面我们生成一个折线图并添加一条平滑线:

 #Line Graph of Unemployment econ %>% ggplot2::autoplot(uempmed) + ggplot2::geom_smooth() 
趋势

使用该图,我们可以确定,在最近一段时间,即 2010 年的最后一次观察中,失业率有上升的趋势,超过了前几十年观察到的历史。

另一个重要的点,特别是在计量经济学建模环境中,是序列的平稳性; 也就是说,均值和方差是否随时间保持不变?

当这些假设在变量中不成立时,我们说该序列具有单位根(非平稳),因此该变量遭受的冲击会产生永久性影响。

所讨论的变量,即失业持续时间,似乎就是这种情况。 我们已经看到,变量的波动发生了很大变化,这对处理周期的经济理论有很强的影响。 但是,脱离理论,我们如何实际检查变量是否是平稳的?

预测包具有出色的功能,允许应用测试,例如 ADF、KPSS 等,这些测试已经返回序列平稳所需的差异数量:

 #Using ADF test for checking stationarity forecast::ndiffs( x = econ$uempmed, test = "adf")
adftest

这里 p 值大于 0.05 表明数据是非平稳的。

时间序列中的另一个重要问题是识别序列滞后值之间可能的相关性(线性关系)。 ACF 和 PACF 相关图有助于识别它。

由于该序列没有季节性但具有一定的趋势,因此初始自相关往往较大且为正,因为时间接近的观测值也接近。

因此,趋势时间序列的自相关函数(ACF)往往具有正值,随着滞后的增加而缓慢减小。

 #Residuals of Unemployment checkresiduals(econ$uempmed) pacf(econ$uempmed)
残差
太平洋部队

结论

当我们得到或多或少干净的数据时,也就是说,已经清洗过的数据,我们会立即潜入模型构建阶段以得出第一个结果。 您必须抵制这种诱惑并开始进行探索性数据分析,这很简单,但可以帮助我们对数据产生强大的洞察力。

您还可以探索一些最佳资源来学习数据科学的统计数据。