Hubungan antar peubah numerik ada yang membentuk hubungan linear positif dan linear negatif. Plot yang menunjukkan pola menyebar, akan memiliki varians yang lebih besar dibandingkan dengan plot yang mengerucut. Artinya, korelasi yang dihasilkan plot dengan amatan mendekati garis linear akan lebih kuat dibandingkan dengan plot yang menyebar. Perlu juga diketahui bahwa korelasi nol kurang peka terhadap data dengan pola tidak linear, sehingga visualisasi data memang penting dilakukan. Hubungan antar peubah numerik pada praktikum ini akan dijelaskan menggunakan data mtcars.
data("mtcars")
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
disp <-mtcars$disp
hp <- mtcars$hp
plot(disp~hp)
# scatterplot Menggunakan Paket ggplot
library(ggplot2)
ggplot(mtcars) +
aes(x = hp, y = mpg) +
geom_point(colour = "#0c4c8a") +
theme_minimal()
Menambahkan garis regresi pada plot:
# Creating the plot
plot(disp~hp, pch = 19, col = "lightblue")
# Regression line
abline(lm(disp ~ hp), col = "red", lwd = 3)
Daripada memvisualisasikan hubungan antara hanya 2 variabel, kita seringkali ingin memvisualisasikan hubungan untuk beberapa pasang variabel. Hal ini dapat dilakukan dengan fungsi pairs ataupun menggunakan fungsi plot secara langsung pada data.
# multiple scatterplots
pairs(mtcars[, c("mpg", "hp", "wt")])
Gambar tersebut menunjukkan bahwa berat wt dan tenaga kuda hp berkorelasi positif, sedangkan mil per galon mpg tampaknya berkorelasi negatif dengan tenaga kuda hp dan berat wt.
# remove vs and am variables
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.0.5
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
data1 <- mtcars %>%
select(-vs, -am)
dataselect<-select(mtcars,cyl,mpg, disp, hp, drat, wt, qsec)
plot(dataselect)
## Correlogram/Heatmap
Ketika kita memplot data secara langsung, maka kita akan kesulitan menyimpulkan hubungan yang terbentuk karena plot yang terbentuk antar peubahnya terlalu kecil. Oleh karena itu, nilai korelasi dapat ditampilkan dengan angka maupun melalui heatmap.
library(corrplot)
## corrplot 0.92 loaded
library(RColorBrewer)
M <-cor(data1)
corrplot(M, type="upper", order="hclust",
col=brewer.pal(n=8, name="RdYlBu"))
corrplot(cor(data1),
method = "number",
type = "upper" # show only upper side
)
## circle + colorful number
corrplot(M, order = 'AOE', type = 'upper', tl.pos = 'd')
corrplot(M, add = TRUE, type = 'lower', method = 'number', order = 'AOE',
diag = FALSE, tl.pos = 'n', cl.pos = 'n')
Bubble Chart adalah tipe grafik yang memberikan tampilan 3 dimensi dari data yang berbentuk gelembung. Grafik gelembung adalah variasi dari grafik scatter chart dimana titik data diganti dengan gelembung dan dimensi tambahan dari data yang dipresentasikan dalam ukuran gelembung. Grafik gelembung tidak menggunakan kategori sumbu-sumbu horizontal dan vertikal yang merupakan sumbu nilai. Bubble Chart biasanya digunakan untuk membandingkan dan menunjukkan hubungan antara label atau lingkaran yang dikategorikan, dengan menggunakan posisi dan proporsi. Pembuatan bubble chart dapat dilakukan menggunakan paket plotly.
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
bubbleplot <- plot_ly(mtcars, x = ~wt, y = ~disp,
text = ~cyl, size = ~qsec,
color = ~cyl, sizes = c(10, 50),
marker =
list(opacity = 0.7,
sizemode = "diameter"))
bubbleplot <- bubbleplot%>%layout
bubbleplot
## No trace type specified:
## Based on info supplied, a 'scatter' trace seems appropriate.
## Read more about this trace type -> https://plotly.com/r/reference/#scatter
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode
## Warning: `line.width` does not currently support multiple values.
#Ilustrasi menggunakan data school earnings
library(plotly)
databubble <- read.csv("https://raw.githubusercontent.com/plotly/datasets/master/school_earnings.csv")
head(databubble,5)
## School Women Men Gap
## 1 MIT 94 152 58
## 2 Stanford 96 151 55
## 3 Harvard 112 165 53
## 4 U.Penn 92 141 49
## 5 Princeton 90 137 47
fig <- plot_ly(databubble, x = ~Women, y = ~Men, text = ~School, type = 'scatter', mode = 'markers',
marker = list(size = ~Gap, opacity = 0.5))
fig <- fig %>% layout(title = 'Perbedaan Penghasilan Berdasarkan Jenis Kelamin di Universitas',
xaxis = list(showgrid = FALSE),
yaxis = list(showgrid = FALSE))
fig
#Mengatur Warna Bubble Chart
library(plotly)
fig <- plot_ly(databubble, x = ~Women, y = ~Men, text = ~School, type = 'scatter', mode = 'markers',
marker = list(size = ~Gap, opacity = 0.5, color = 'rgb(255, 65, 54)'))
fig <- fig %>% layout(title = 'Gender Gap in Earnings per University',
xaxis = list(showgrid = FALSE),
yaxis = list(showgrid = FALSE))
fig
#Mapping gradasi warna
fig <- plot_ly(databubble, x = ~Women, y = ~Men, text = ~School, type = 'scatter', mode = 'markers', color = ~Gap, colors = 'Reds',
marker = list(size = ~Gap, opacity = 0.5))
fig <- fig %>% layout(title = 'Gender Gap in Earnings per University',
xaxis = list(showgrid = FALSE),
yaxis = list(showgrid = FALSE))
fig