تحلیل داده‌های زلزله با R – بخش دوم

این دومین قسمت از سری پست‌های ما در مورد تحلیل اکتشافی یک مجموعه داده در دسترس عموم است که گزارش زلزله و رویداد‌ها را در یک بازه زمانی خاص 30 روزه را بررسی خواهیم کرد. در ادامه می‌خواهیم متغیرهای دسته بندی شده (categorical variables) مجموعه داده‌های خود را مورد تجزیه و تحلیل قرار دهیم. متغیرهای طبقه بندی شده می‌توانند یکی از مقادیر محدود را به‌دست آورند و معمولا تعدادی از مقادیر ممکن را تشکل می‌دهند. متغیرهای فاکتور متغیرهای طبقه‌ای هستند که می‌توانند متغیرهای عددی یا رشته‌ای باشند. متغیرهای طبقه بندی در برنامه R‌به شکل یک فاکتور ذخیره می‌شوند. تحلیل این دسته از متغیرها ممکن است متفاوت از متغیرهای کمی باشد لذا ابزارهای تحلیل این نوع متغیرها را در زیر بیان خواهیم کرد.

مراحل فراخوانی پکیج‌های مورد استفاده و نحوه دانلود داده‌های مورد نیاز در آموزش قبلی به صراحت گفته شده است لذا در اینجا جهت راحتی در فراخوانی دستورات دوباره همه دستورات مورد نیاز برای ابتدای کار را بازنویسی می‌کنیم 

suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(Hmisc))
suppressPackageStartupMessages(library(lubridate))
suppressPackageStartupMessages(library(vcd))
suppressPackageStartupMessages(library(vcdExtra))
suppressPackageStartupMessages(library(gmodels))

برای مشاهده نسخه پکیج‌های نصب شده روی سیستم عامل خود می‌توانید از تکه کد زیر استفاده کنید 

packages <- c("ggplot2", "dplyr", "Hmisc", "lubridate", "vcd", "vcdExtra", "gmodels")
version <- lapply(packages, packageVersion)
version_c <- do.call(c, version)
data.frame(packages=packages, version = as.character(version_c))

در این مرحله برای با استفاده از کد زیر داده‌ها را روی سیستم عامل خود دانلود کرده و در برنامه فراخوانی می‌کنیم ادامه کد نیز برای تعیین جنس متغیرها که برای تفکیک متغیرهای فاکتور و زمان و غیره هست استفاده می‌شود که در آموزش قبلی توضیح داده شده است.

if ("all_week.csv" %in% dir(".") == FALSE) {
  url <- "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.csv"
  download.file(url = url, destfile = "all_week.csv")
}
quakes <- read.csv("all_month.csv", header=TRUE, sep=',', stringsAsFactors = FALSE)

quakes$time <- ymd_hms(quakes$time)
quakes$updated <- ymd_hms(quakes$updated)
quakes$magType <- as.factor(quakes$magType)
quakes$net <- as.factor(quakes$net)
quakes$type <- as.factor(quakes$type)
quakes$status <- as.factor(quakes$status)
quakes$locationSource <- as.factor(quakes$locationSource)
quakes$magSource <- as.factor(quakes$magSource)

تحلیل اکتشافی – متغیرهای دسته‌بندی 

متغیرهای دسته‌بندی اگر از جنس فاکتور باشند با استفاده از دستورات زیر قابل تشخیص هستند.

(factor_vars <- names(which(sapply(quakes, class) == "factor")))
## [1] "magType"        "net"            "type"           "status"        
## [5] "locationSource" "magSource"
length(factor_vars)
## [1] 6

تابع describe() در پکیج HMisc در تحلیل متغیرهای دسته بندی بسیار مفید هست که در زیر نحوه استفاده از آن را آورده‌ایم.

describe(quakes[,factor_vars])
## quakes[, factor_vars] 
## 
##  6  Variables      8407  Observations
## ---------------------------------------------------------------------------
## magType 
##        n  missing distinct 
##     8407        0       10 
##                                                                       
## Value               mb mb_lg    md    mh    ml   mun    mw   mwr   mww
## Frequency      2   604    47  2423    14  5203     2     4    19    89
## Proportion 0.000 0.072 0.006 0.288 0.002 0.619 0.000 0.000 0.002 0.011
## ---------------------------------------------------------------------------
## net 
##        n  missing distinct 
##     8407        0       14 
## 
## ak (2469, 0.294), ci (1344, 0.160), hv (253, 0.030), ismpkansas (8,
## 0.001), ld (4, 0.000), mb (157, 0.019), nc (1435, 0.171), nm (28, 0.003),
## nn (604, 0.072), pr (427, 0.051), se (15, 0.002), us (897, 0.107), uu
## (588, 0.070), uw (178, 0.021)
## ---------------------------------------------------------------------------
## type 
##        n  missing distinct 
##     8407        0        7 
## 
## chemical explosion (2, 0.000), earthquake (8232, 0.979), explosion (58,
## 0.007), ice quake (16, 0.002), other event (3, 0.000), quarry blast (95,
## 0.011), rock burst (1, 0.000)
## ---------------------------------------------------------------------------
## status 
##        n  missing distinct 
##     8407        0        2 
##                               
## Value      automatic  reviewed
## Frequency       1691      6716
## Proportion     0.201     0.799
## ---------------------------------------------------------------------------
## locationSource 
##        n  missing distinct 
##     8407        0       15 
##                                                                       
## Value         ak    ci    hv  ismp    ld    mb    nc    nm    nn    ok
## Frequency   2470  1344   253     8     4   157  1435    28   604     6
## Proportion 0.294 0.160 0.030 0.001 0.000 0.019 0.171 0.003 0.072 0.001
##                                         
## Value         pr    se    us    uu    uw
## Frequency    427    15   890   588   178
## Proportion 0.051 0.002 0.106 0.070 0.021
## ---------------------------------------------------------------------------
## magSource 
##        n  missing distinct 
##     8407        0       15 
##                                                                       
## Value         ak    ci    hv  ismp    ld    mb    nc    nm    nn    ok
## Frequency   2480  1344   253     8     4   157  1435    28   604     5
## Proportion 0.295 0.160 0.030 0.001 0.000 0.019 0.171 0.003 0.072 0.001
##                                         
## Value         pr    se    us    uu    uw
## Frequency    427    15   881   588   178
## Proportion 0.051 0.002 0.105 0.070 0.021
## ---------------------------------------------------------------------------

یادآور میکنیم که توضیحات متغیر magType که دو ردیف از آن شامل رشته‌های NULL هستند که در ادامه با استفاده از کد زیر با مقدار NA پر‌می‌کنیم.

quakes$magType[quakes$magType == ""] <- NA

برای فهم خوب روابط و وابستگی های بین متغیرهای دسته‌بندی ما ابتدا چندین روش گرافیکی و جدول بندی را معرفی میکنیم