angka atau bilangan, terbagi menjadi dua jenis diskrit dan kontinu
yang dilihat dari data numerik:
1. Bentuk sebaran data
2. Trend data (data deret waktu)
Visualisasikan (ggplot2):
1. Histogram
2. Density plot
3. Boxplot
4. Scatter plot
5. Q-Q plot
6. Line chart
Violin chart (Density plot + Boxplot)
Data yang saya gunakan adalah data Aids2 yang mendeskripsikan data pasien yang didiagnosis dengan AIDS di Australia sebelum 1 Juli 1991 yang berisi 2.843 baris dan kolom-kolom berikut:
state (negara bagian)
Pengelompokan negara bagian asal: “NSW” termasuk ACT dan “lainnya” adalah WA, SA, NT dan TAS.
sex (jenis kelamin)
Jenis kelamin pasien.
diag
(Julian) Tanggal diagnosis.
death (kematian)
(Julian) tanggal kematian atau akhir pengamatan.
status
“A” (hidup) atau ‘D’ (mati) pada akhir pengamatan.
T.categ
Kategori penularan yang dilaporkan.
age (usia)
Usia (tahun) saat diagnosis.
Data Aids2 Dataset tersebut bersumber dari package MASS, package MASS adalah package yang menyediakan berbagai fungsi statistik, termasuk metode regresi, analisis data, dan distribusi probabilitas.
library(MASS)
data("Aids2")
head(Aids2)
## state sex diag death status T.categ age
## 1 NSW M 10905 11081 D hs 35
## 2 NSW M 11029 11096 D hs 53
## 3 NSW M 9551 9983 D hs 42
## 4 NSW M 9577 9654 D haem 44
## 5 NSW M 10015 10290 D hs 39
## 6 NSW M 9971 10344 D hs 36
dim(Aids2)
## [1] 2843 7
Keterangan:
library: digunakan untuk membantu mengaktifkan package
data: digunakan untuk menampilkan daftar dataset
head: digunakan untuk menampilkan data pada bagian atas pertama/atas saja dari sebuah vektor, matriks, tabel, data frame ataupun sebuah fungsi
dim: digunakan untuk mengetahui jumlah baris dan kolom
Untuk membuat histogram pada package ggplot2
menggunakan
perintah geom_histogram()
. Variable yang digunakan yaitu
age pada data Aids2.
library(ggplot2)
ggplot(data = Aids2, mapping = aes(x = age)) +
geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Secara defaut, geom_histogram()
menggunakan 30 bins
(batang). Selanjutnya mengganti nilai bins tersebut dengan menambahkan
argumen bins = 40
. Hasilnya sebagai berikut.
ggplot(data = Aids2, mapping = aes(x = age)) +
geom_histogram(bins = 40)
Kita dapat memberikan pemisah dengan warna putih Anda dapat tambahkan
argumen color = "red3"
. Hasilnya sebagai berikut.
ggplot(data = Aids2, mapping = aes(x = age)) +
geom_histogram(bins = 40, color = "red3")
Kita dapat mengubah warna batang dengan menggunakan argumen
fill
, mengubah format penulisan nilai pada sumbu x dan y
menggunakan function scale_x_continuous()
untuk sumbu x dan
scale_y_continuous()
untuk sumbu y dan mengubah nama label
pada sumbu x dan y dengan fungsi labs
. Hasilnya sebagai
berikut.
library(scales)
ggplot(data = Aids2, mapping = aes(x = age)) +
geom_histogram(bins = 40, color = "navy", fill = "lightpink") +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(x = "Usia saat diagnosis",
y = "Frekuensi")
Untuk membuat density plot menggunakan ggplot2
kita
cukup menggunakan function geom_density()
ggplot(data = Aids2, mapping = aes(x = age)) +
geom_density()
Untuk mengatur warna, transaparansi, format penulisan nilai pada sumbu x dan y, dan labeling sumbu x sama seperti pembuatan Histogram. Hasilnya sebagai berikut.
ggplot(data = Aids2, mapping = aes(x = age)) +
geom_density(fill = "maroon", alpha = 0.7) +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(x = "age")
Kita dapat membandingkan sebaran menggunakan density plot berdasarkan kategori. Misal akan dilihat sebaran usia saat diagnosis (age) berdasarkan kategori penularan yang dilaporkan (T.cateh). Hasilnya sebagai berikut.
ggplot(data = Aids2, mapping = aes(x = age, fill = T.categ, color = T.categ)) +
geom_density(alpha = 0.7) +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(x = "Age")
Untuk mengurangi kesulitan dalam mengamati visual tersebut maka perlu dipisah per kategori dengan menggunakan visualisasi ridgeline plot atau disebut juga joyplot.
library(ggridges)
ggplot(data = Aids2, mapping = aes(x = age, y= T.categ ,fill = T.categ)) +
geom_density_ridges() +
labs(x = "Usia saat diagnosis", y = "Kategori penularan")
## Picking joint bandwidth of 4.09
Untuk membuat boxplot di ggplot2 kita dapat gunakan
functiongeom_boxplot()
ggplot(data = Aids2, mapping = aes(x = age)) +
geom_boxplot()
Membuat boxplot secara vertikal menggunakan perintah
coord_flip()
. Hasilnya sebagai berikut.
ggplot(data = Aids2, mapping = aes(x = age)) +
geom_boxplot()+
coord_flip()
kita dapat membuat boxplot dari data numerik dan membandingkan sebarannya berdasarkan kategori. Misalnya kita ingin membandingkan sebaran usia saat diagnosis (age) berdasarkan pengamatan akhir (status). Hasilnya sebagai berikut.
ggplot(data = Aids2, mapping = aes(x = age, y = status)) +
geom_boxplot()
Selanjutnya memberi warna berbeda untuk setiap box berdasarkan
kategorinya. Kita dapat menambahkan argumen fill
dengan
nilai berupa nama variabel dari kategori yang ingin kita gunkan untuk
perbandingan boxplot. Misalnya kita ingin membandingkan sebaran dari
variabel usia saat diagnosis (age) berdasarkan pengamatan akhir
(status) menggunakan boxplot dan menyesuaikan
warnanya berdasarkan kategori dari status. Hasilnya sebagai
berikut.
ggplot(data = Aids2, mapping = aes(x = age, y = status, fill = status)) +
geom_boxplot()
Untuk menghilangkan legend dari color kita dapat tambahkan
theme(legend.position = "none")
. Hasilnya sebagai
berikut.
ggplot(data = Aids2, mapping = aes(x = age, y = T.categ, fill = T.categ)) +
geom_boxplot() +
theme(legend.position = "none")
#MENGUBAH POSISI LEGEND KE KIRI
ggplot(data = diamonds, mapping = aes(x = carat, y = color, fill = color)) +
geom_boxplot() +
theme(legend.position = "left")
Plot ini dibentuk dengan menggabungkan antara Density Plot dengan boxplot. Hasilnya sebagai berikut.
ggplot(data = Aids2, mapping = aes(x = age,y="all")) +
geom_violin(fill="maroon",alpha=0.5) +
geom_boxplot(fill="navy",width=0.1)
Plot ini berguna untuk memeriksa apakah sebaran data (sebaran empirik) memiliki bentuk yang sama dengan sebaran tertentu yang dispesifikan (sebaran hipotetik). Misalnya kita ingin melihat pola sebaran usia saat diagnosis (age) apakah menyebar normal atau tidak.
library(ggplot2)
ggplot(data = Aids2, aes(sample = age)) +
stat_qq(col="lightblue3", cex=0.9) +
stat_qq_line(col="purple", lwd=1) #daya hipotetik (dibandingkan dengan sebaran normal)
Untuk membuat scatter plot menggunakan ggplot2
kita
dapat menggunakan geom_point()
.Misalnya kita ingin melihat
pola sebaran antara age dan death
ggplot(data = Aids2, mapping = aes(x = age, y = death)) +
geom_point()
Kita juga dapat memberikan warna untuk setiap titik. Misalnya warna masing-masing titik menyesuaikan dengan kategori pada variabel status
ggplot(data = Aids2, mapping = aes(x = age, y = death, color = status)) +
geom_point()
Plot ini digunakan untuk melihat trend data berdasarkan perubahan waktu. Artinya pada Line Chart cocok untuk data-data deret waktu.
Data yang digunakan yaitu data indikator ekonomi tahun 1959 - 1960. yang terdiri dari :
date
Tanggal
rgnp (Real Gross National Product) Produk National Bruto Riil
Menunjukkan pertumbuhan ekonomi setelah disesuaikan dengan inflasi.
pgnp (Nominal Gross National Product) Produk Nasional Bruto Nominal
Mengukur output ekonomi tanpa penyesuaian inflasi.
ulc (Unit Labor Cost) Biaya Tenaga Kerja per Unit Output
Mengukur biaya tenaga kerja relatif terhadap produksi.
gdfco (Gross Domestic Fixed Capital Formation) Pembentukan Modal tetap Bruto Domestik
Mengukur investasi dalam aset tetap seperti mesin, teknologi, dan infrastruktur.
gdf(Gross Domestic Fixed Investment) Investasi Tetap Domestik
Total Investasi dalam aset tetap.
gdfim (Gross Domestic Fixed Capital Goods) Impor Barang Modal Tetap
Mengukur impor barang modal seperti mesin dan alat produksi.
gdfcf (Gross Domestic Fixed Capital Formation as % of GDP) Investasi Tetap Bruto sebagai Persentasi dari PDB
Menunjukkan seberapa besar porsi investasi dibandingkan PDB.
gdfce (Gross Domestic Final Consumption Expenditure) Pengeluaran Konsumsi Akhir Domestik
Mengukur pengeluaran konsumsi rumah tangga dan pemerintah.
library(readxl)
data_ts <- read_excel("data_upah.xlsx")
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
data_ts$date <- as.Date(data_ts$date, format = "%Y-%m-%d")
str(data)
## function (..., list = character(), package = NULL, lib.loc = NULL, verbose = getOption("verbose"),
## envir = .GlobalEnv, overwrite = TRUE)
DT::datatable(data_ts)
head(data_ts)
## # A tibble: 6 × 9
## date rgnp pgnp ulc gdfco gdf gdfim gdfcf gdfce
## <date> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 1959-01-01 1606.4 1608.3 47.5 36.9 37.4 26.9 32.3 23.1
## 2 1959-04-01 1637 1622.2 47.5 37.4 37.5 27 32.2 23.4
## 3 1959-07-01 1629.5 1636.2 48.7 37.6 37.6 27.1 32.4 23.4
## 4 1959-10-01 1643.4 1650.3 48.8 37.7 37.8 27.1 32.5 23.8
## 5 1960-01-01 1671.6 1664.6 49.1 37.8 37.8 27.2 32.4 23.8
## 6 1960-04-01 1666.8 1679 49.6 38 38 27.4 32.8 23.9
Keterangan:
library: digunakan untuk mengaktifkan package
readxl: package yang digunakan untuk membaca file dengan format excel
dplyr: package yang digunakan untuk manipulasi data
lubridate: package yang digunakan untuk manipulasi dan konversi tanggal
str: digunakan untuk menampilkan struktur dataframe pada data
DT: digunakan untuk menampilkan tabel interaktif dari dataset
head: digunakan untuk menampilkan 6 baris pertama dari data
library(ggplot2)
ggplot(data_ts, aes(x = date, y = rgnp, group = 1)) +
geom_line(color = "navy", size = 1) +
geom_point(color = "red", size = 2) +
labs(title = "Line Chart of rgnp in 1980",
x = "Date",
y = "RGNP") +
theme_minimal()
Keterangan:
ggplot2: package yang digunakan untuk membuat berbagai jenis grafik
group: digunakan untuk menggambar 1 garis utuh untuk seluruh data
size: digunakan untuk mengatur ketebalan garis
geom_line: digunakan untuk membuat garis (line chart)
geom_point: digunakan untuk menambahkan titik pada setiap data
labs: digunakan untuk menambahkan judul dan label sumbu pada grafik
Untuk menambah estetika dapat dilakukan dengan mengarsir daerah di bawah plot deret waktu. Plot seperti ini disebut Area Plot. Hasilnya sebagai berikut.
ggplot(data_ts, aes(x = date, y = rgnp, group = 1)) + # Tambahkan group = 1
geom_line(color = "navy", size = 1) +
geom_point(color = "red", size = 2) +
geom_area(fill = "blue", alpha = 0.2)
labs(title = "Line Chart of rgnp in 1959",
x = "Date",
y = "RGNP") +
theme_minimal()
## NULL
Keterangan:
geom_area: digunakan untuk menambahkan area dibawah garis sebagai bayangan
fill: digunakan untuk memberikan warna pada area
alpha: digunakan untuk memberikan transparasi area agar tidak terlalu tebal
Pada plot ini dapat digunakan untuk membandingkan rgnp dengan pgnp.
ggplot(data = data_ts, aes(x = date)) +
geom_line(aes(y = rgnp, group = 1), lwd = 1.2, col = "navy") +
geom_line(aes(y = pgnp, group = 1), lwd = 1.2, col = "pink") +
labs(x = "Waktu", y = "Gross National Product") +
theme_minimal()
Untuk menambahkan nama kelompok digunakan perintah berikut.
data_ts$rgnp <- as.numeric(data_ts$rgnp)
data_ts$pgnp <- as.numeric(data_ts$pgnp)
ggplot(data = data_ts, aes(x = date)) +
geom_line(aes(y = rgnp, group = 1), lwd = 1.2, col = "navy") +
geom_line(aes(y = pgnp, group = 1), lwd = 1.2, col = "pink") +
scale_x_date(limits = c(min(data_ts$date), max(data_ts$date) + 100)) +
geom_text(aes(x = max(date), y = tail(rgnp, 1) + 30),
label = "RGNP", size = 5, color = "navy", hjust = -0.1) +
geom_text(aes(x = max(date), y = tail(pgnp, 1) + 30),
label = "PGNP", size = 5, color = "pink", hjust = -0.1) +
labs(x = "Waktu", y = "Gross National Product")
Keterangan:
as.numeric: digunakan untuk mengubah data menjadi tipe data numerik
scale_x_date: digunakan untuk mengatur batas sumbu X
hjust: digunakan untuk menggeser atau mengatur teks