文章详情

使用R语言把火灾数据可视化

2020-09-09

点击量:

  最近几周,有关四川凉山部分地区发生毁灭性野火的新闻在新闻中尤为突出。尽管大多数野火是人为意外引发的,但诸如风和干旱之类的天气条件会加剧火势的蔓延和强度。更好地了解历史野火趋势和原因可以为火灾管理提供信息并挽救生命和财产。在本使用R语言把火灾数据可视化练习中,我们将使用R进行探索性数据可视化我们了解了凉山的野火历史数据。在决定对新数据集进行进一步分析时,探索性数据可视化是重要的第一步。如果您愿意,可以在安装了R或RStudio的计算机上继续学习。有关使用R和设置RStudio的入门知识,请查看我们的R入门课程。要学习执行本练习中将使用的一些更高级的数据整理技术,我们建议使用Intermediate R Programming。
 

  识别数据源
 

  首先,我们需要找到要使用的数据。林业与消防局提供了丰富的资源,其中包含历史性的火灾数据,包括有关可追溯至2000年的大型野火(大于300英亩)的大小,持续时间和原因的信息。
 

  我们已经从林业与消防局抓取了数据,并在此处提供了数据。数据集包含以下变量:
 

  1)id:事件编号,用于唯一标识火灾的ID。

  2)unit:Ranger Unit,由林业与消防局用来标识管理区域。* name:用来指火的名字。

  3)开始:大火开始的日期。

  4)结束:发生火灾的日期。

  5)agency:提供数据的联邦机构。

  6)英亩:大火烧毁的英亩数。该数据集包含有关300英亩以上大火的信息。

  7)原因:引起火灾的原因(如果已知)。
 

  我们会首先将数据导入R作为命名的数据帧ca_fires:

使用R语言把火灾数据可视化
 

  让我们看一下数据的前几行:

使用R语言把火灾数据可视化
 

  我们可以使用这些数据来回答各种问题,以帮助我们更好地了解过去的凉山野火:
 

  1)它们有多大?

  2)它们能持续多久?

  3)什么时候最有可能发生?

  4)他们的严重程度是否随着时间而改变?
 

  准备分析数据
 

  我们将创建可视化工具来回答其中的一些问题。数据非常干净,但是在开始探索性可视化之前,我们需要执行一些操作:
 

  1)在start和end变量是当前字符数据,但我们需要将其更改为日期。

  2)从start和end,我们可以计算出一个新变量duration,以告诉我们每次火灾持续多长时间。
 

  要将日期start和end可变日期从字符数据更改为日期数据,我们将使用lubridate包。我们还将使用工具处理数据dplyr包中的数据。

使用R语言把火灾数据可视化
 

  使用dplyr函数mutate()和lubridate函数as.Date(),我们可以将start和end日期从字符更改为数字:

使用R语言把火灾数据可视化
 

  因为它可能是按月或按年来计算汇总统计有用的,让我们从公司提取信息start栏创造新的month和year变数。我们可以使用lubridate函数month()和执行此操作year():

使用R语言把火灾数据可视化
 

  从start和end日期,我们还可以计算火灾持续时间。我们将创建一个新的变量,duration使用mutate():

使用R语言把火灾数据可视化
 

  为了使可视化显示野火燃烧的面积随时间变化的趋势,我们将创建一个新变量acres_cumulative,其中包含使用mutate()和基础R函数燃烧的累积面积之和cumsum():

使用R语言把火灾数据可视化
 

  现在,我们准备开始通过创建可视化文件来探索数据。我们将使用ggplot2R中非常流行的数据可视化程序包。
 

  可视化数据分布
 

  让我们从考虑关于野火数据的前两个问题开始:
 

  1)CA野火有多大?

  2)它们能持续多久?
 

  在探索数据以试图理解我们对该问题的答案时,一个好的第一步是创建直方图,以了解数据的分布方式,或者大多数数据在值范围内的哪个位置。我们将使用ggplot()函数创建直方图,以可视化变量area和的分布duration:

使用R语言把火灾数据可视化
 

  首先让我们看一下直方图acres:

使用R语言把火灾数据可视化
 

  在直方图中,条形的高度对应于落入变量值范围(在x轴上)的观察值(在y轴上显示)的数量。从该直方图中可以清楚地看到,数据高度不对称:也就是说,绝大多数火灾小于几千英亩,但是对于area近30万英亩却有一些非常大的价值。直方图可以告诉我们持续多长时间的火灾?
 

  让我们看一下直方图duration:

使用R语言把火灾数据可视化
 

  看一下该图上的x轴比例。的所有值duration都应为正数,但直方图表示存在一些较大的负值。让我们使用该dplyr函数filter()来查看其值为duration负的观测值:

使用R语言把火灾数据可视化
 

  如果我们查看这些观察的start和end日期,则可以发现它们似乎不正确,可能是由于数据输入错误所致:

使用R语言把火灾数据可视化
 

  让我们从数据集中删除这些明显不准确的观察结果:

使用R语言把火灾数据可视化
 

  如果我们重新运行用于创建直方图的代码,而duration现在我们省略了具有不正确日期数据的行,则可以看到绝大多数火灾燃烧不到100天。

使用R语言把火灾数据可视化
 

  可视化年度模式
 

  现在,我们已经使用直方图来了解野火的最常见大小和持续时间,让我们可视化数据来回答另一个问题:
 

  什么时候最有可能发生火灾?
 

  一年中的某些时候野火是否更常见?由于我们有一个month变量,我们可以可视化野火发生的趋势以及按月燃烧的英亩数。首先,让我们使用这些dplyr函数group_by()并summarize()创建每个月发生的火灾计数:

使用R语言把火灾数据可视化
 

  然后,我们将创建一个条形图以可视化每月发生的火灾数量:

使用R语言把火灾数据可视化
 

  此条形图使我们可以清楚地看到,大多数火灾发生在春季,夏季和秋季,这些季节的特点往往是炎热,干燥的条件,有利于火势蔓延。然而,它并没有让我们能够想象的变异在不同年份之间,每月发生的火灾数量。取而代之的是,让我们ca_fires按月和按年汇总数据帧中的火灾发生计数,并创建一个箱形图,使我们可以直观地看出多年来每月火灾计数的变化性:

使用R语言把火灾数据可视化
 

  箱形图以图形方式描绘了数据的最小值,最大值和中值,因此是用于比较数据组而又不遮掩可变性的出色可视化工具。让我们看一下我们按月进行的野火数量的箱线图:

使用R语言把火灾数据可视化
 

  正如我们之前创建的条形图所示,野火在夏季最为常见,而在冬季则很少见。代表异常值的点的存在表明,尽管不常见,但野火可能全年发生。
 

  可视化随时间变化
 

  让我们继续讨论另一个可以使用这些数据回答的问题:
 

  野火严重程度是否随时间变化?
 

  为了回答这个问题,我们将创建一个折线图,该折线图是随时间推移而累积的累积英亩:

使用R语言把火灾数据可视化
 

  一条平滑的向上趋势线表明,野火燃烧的英亩数随时间推移一直保持不变,而燃烧的英亩数的任何增加或减少都会随着线的坡度的变化而明显。

使用R语言把火灾数据可视化
 

  当我们看一看累积燃烧的英亩的折线图时,我们可以看到一个看起来有点像阶梯的模式:燃烧的英亩数量迅速增加,然后又趋于稳定。根据早期的探索,我们可以推断出这种模式很可能是由于季节差异造成的。在夏季,燃烧更多的土地,而在天气凉爽的月份,增加的面积较小。我们还可以看到,有些“台阶”比另一些台阶高,这表明立即焚烧了更多英亩土地。
 

  结论和后续步骤
 

  在此练习中,我们的探索性数据可视化为我们使用了美国有关300英亩以上的加利福尼亚野火的信息:
 

  1)尽管存在一些较大的异常值,但大多数野火都小于几百英亩,并且持续时间不到50天。

  2)大多数野火发生在夏季,尽管一年中的任何时候都可能发生。

  3)有些年份的野火更具破坏性。
 

  探索性数据可视化的目的是使您熟悉新的数据集,了解趋势并计划未来的分析。有趣的下一步可能是探索气候和天气条件对森林火灾发生频率和严重性的影响。有许多此类数据来源:
 

  1)您可以从国家海洋和大气管理局的国家综合干旱信息系统计划中获取加利福尼亚州的干旱数据。

  2)可从海洋局获得历史天气和气候数据,例如温度和降水。

  3)大气管理局提供有关土壤湿度的数据,这是干旱的指标,并且是加剧野火的一个因素。

使用R语言把火灾数据可视化
 

  如果您想了解更多有关使用R进行探索性数据可视化的信息,包括研究环境变量与野火数据之间关系的方法,请务必查看我们在R课程中的数据可视化。

长按识别二维码,加关注
↓ ↓ ↓ 继续阅读与本文标签相同的文章
使用R语言把火灾数据可视化