تحلیل دادههای زلزله با 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
برای فهم خوب روابط و وابستگی های بین متغیرهای دستهبندی ما ابتدا چندین روش گرافیکی و جدول بندی را معرفی میکنیم