Seketika boss saya memberikan data, and he said :
tolong cek apakah ada pengaruh antara variable yang 1 dan yang lainnya? saya mau lihat ini ada korelasi apa nggak, seberapa kuat variablenya.
Baik pak, Itulah jawaban budak korporat, baik pak baik pak baik pak doang.
lalu mikir dong, ini mau di gimanakan yak, terlintas uji dalam statistik, namanya Uji Korelasi Mari kita bahas.
Jiah JAKSEL kwkwkk
Korelasi adalah suatu ukuran statistik yang digunakan untuk mengevaluasi sejauh mana dua variabel berkaitan satu sama lain. Dalam statistika, korelasi mengukur kekuatan dan arah hubungan antara dua variabel.
Ada tiga keywords yang penting pada definisi tersebut, yakni:
Variables, yakni dua variabel yang ingin dicek hubungannya.
Linear Strengh, menandakan seberapa kuat kedua variabel tersebut secara linear.
Direction, menandakan arah dari hubungan kedua variabel tersebut.
Ada hal penting yang perlu diperhatikan saat kita hendak melakukan analisa korelasi. Apa itu?
Pastikan kedua variabel yang akan kita uji secara logis dapat dihubungkan.
Kedua variabel tersebut harus berupa numerik.
Jadi, hanya data kuantitatif saja yang bisa dihitung korelasinya.
Korelasi adalah suatu nilai yang berada di selang angka -1 hingga 1. Nilai mutlak dari korelasi menandakan seberapa kuat hubungan kedua variabel secara linear.
Apa sih maksudnya?
Jika kita buat grafik sumbu x vs sumbu y, kekuatan kedua variabel (x,y) secara visual dapat dilihat dari seberapa mudah titik-titik yang ditimbulkan dibuat garis lurus. Semakin membentuk garis lurus sempurna, kita bisa katakan bahwa kedua variabel memiliki korelasi kuat. Begitupun sebaliknya.
Coba lihat kembali gambar di awal halaman!
Semakin menuju ke angka 1 atau -1 (ingat, yang dilihat nilai mutlaknya yah!), kedua variabel dalam sumbu kartesian membentuk garis lurus sempurna.
Pengelompokan kekuatan korelasi:
Low : 0.1 - 0.3
Medium : 0.3 - 0.5
High : 0.5 - 1.0
Kalau kita lihat kembali, nilai korelasi bisa bernilai positif atau negatif. +/- itu menunjukan arah hubungan kedua variabel tersebut.
Jika bernilai positif maka hubungan kedua variabel tersebut itu berbanding lurus. Contoh: x naik maka y juga naik.
Jika bernilai negatif maka hubungan kedua variabel tersebut itu berbanding lurus. Contoh: x naik maka y juga turun.
Ada beberapa uji Korelasi yang harus kita ketahui dan syaratnya bagaimana.
Korelasi ini digunakan jika data yang di gunakan jika data yang akan
di uji Berdistribusi normal.
Kebalikan dari Pearson, Distribusi dari
Spearman ini di gunakan ketika datanya yang akan kita cek
Tidak Berdistribusi normal.
Mengukuar antara dara Ordinal.Misalnya, variabel “frekuensi latihan fisik” dapat dibagi dalam beberapa kategori, seperti tidak pernah, jarang, kadang-kadang, sering, dan selalu.
Mengukur antara 1 variable Biner dan 1 variable Numerik.
Mengukur antara 2 varaible Biner ****
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.3 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(stats)
library(corrplot)
## corrplot 0.92 loaded
library(readr)
Data yang akan di gunakana adalah data set yang saya buat buat sendiri. klik di sini jika ingin mengambil ya..
Data_corelation = read.csv("D:/R/1 DATA SET/Korelatio test/Uji Korelasi.csv", header = T, sep = ";")
Data_corelation = Data_corelation %>% mutate(No = row_number())
Data_corelation = Data_corelation %>% select(No, everything())
head(Data_corelation, 6)
## No ID Store_id Store_Type Location_Type Region_Code Date Holiday
## 1 1 T1188341 171 S4 L2 R3 01/06/2019 0
## 2 2 T1188342 172 S1 L1 R1 01/06/2019 0
## 3 3 T1188343 173 S4 L2 R1 01/06/2019 0
## 4 4 T1188344 174 S1 L1 R4 01/06/2019 0
## 5 5 T1188345 170 S1 L1 R2 01/06/2019 0
## 6 6 T1188346 175 S4 L2 R1 01/06/2019 0
## Discount sales qty
## 1 No 12,605 195
## 2 No 19,279 118
## 3 No 16,480 119
## 4 No 16,742 181
## 5 No 12,233 174
## 6 No 12,007 165
Di atas saya coba otak atik datanyam biar keren, ada nomor tiap baris.
Selanjutnya memilih data yang akan kita korelasikan. ingat syarat korealsi tidak boleh ada data yang menggunakan teks. mari lihat data yang di gunakan.
str(Data_corelation)
## 'data.frame': 22265 obs. of 11 variables:
## $ No : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID : chr "T1188341" "T1188342" "T1188343" "T1188344" ...
## $ Store_id : int 171 172 173 174 170 175 176 169 14 177 ...
## $ Store_Type : chr "S4" "S1" "S4" "S1" ...
## $ Location_Type: chr "L2" "L1" "L2" "L1" ...
## $ Region_Code : chr "R3" "R1" "R1" "R4" ...
## $ Date : chr "01/06/2019" "01/06/2019" "01/06/2019" "01/06/2019" ...
## $ Holiday : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Discount : chr "No" "No" "No" "No" ...
## $ sales : chr " 12,605 " " 19,279 " " 16,480 " " 16,742 " ...
## $ qty : int 195 118 119 181 174 165 112 143 100 148 ...
Data di atas banyak sekali yang bertype character, sehingga akan kita ubah dulu menjadi data yang sesuai.
Data_corelation$Store_Type = as.factor(Data_corelation$Store_Type)
Data_corelation$Region_Code = as.factor(Data_corelation$Region_Code)
Data_corelation$Store_Type = as.factor(Data_corelation$Location_Type)
Data_corelation$Date = as.Date(Data_corelation$Date, format = "%m/%d/%y")
Data_corelation$Discount = as.factor(Data_corelation$Discount)
Data_corelation$Location_Type = as.factor(Data_corelation$Location_Type)
Data_corelation$sales = as.numeric(gsub(",", "", Data_corelation$sales))
Data setelah di edit
str(Data_corelation)
## 'data.frame': 22265 obs. of 11 variables:
## $ No : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID : chr "T1188341" "T1188342" "T1188343" "T1188344" ...
## $ Store_id : int 171 172 173 174 170 175 176 169 14 177 ...
## $ Store_Type : Factor w/ 5 levels "L1","L2","L3",..: 2 1 2 1 1 2 2 2 2 1 ...
## $ Location_Type: Factor w/ 5 levels "L1","L2","L3",..: 2 1 2 1 1 2 2 2 2 1 ...
## $ Region_Code : Factor w/ 4 levels "R1","R2","R3",..: 3 1 1 4 2 1 3 4 4 4 ...
## $ Date : Date, format: "2020-01-06" "2020-01-06" ...
## $ Holiday : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Discount : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ sales : num 12605 19279 16480 16742 12233 ...
## $ qty : int 195 118 119 181 174 165 112 143 100 148 ...
Data sudah oke, namun kita akan mengambil beberapa variable saja yang di butuhkan, sebap untuk menguji korelasi tidak semua data akan di uji. contoh nya adalah No dan ID ini sudah pasti independen, tidak ada pengaruh terhadap varible lainnya.
Data_corelation_final = Data_corelation %>% select(-No, -ID, -Date, -Store_id)
str(Data_corelation_final)
## 'data.frame': 22265 obs. of 7 variables:
## $ Store_Type : Factor w/ 5 levels "L1","L2","L3",..: 2 1 2 1 1 2 2 2 2 1 ...
## $ Location_Type: Factor w/ 5 levels "L1","L2","L3",..: 2 1 2 1 1 2 2 2 2 1 ...
## $ Region_Code : Factor w/ 4 levels "R1","R2","R3",..: 3 1 1 4 2 1 3 4 4 4 ...
## $ Holiday : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Discount : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ sales : num 12605 19279 16480 16742 12233 ...
## $ qty : int 195 118 119 181 174 165 112 143 100 148 ...
Data_corelation_final_sekali <- mutate_all(Data_corelation_final, as.numeric)
str(Data_corelation_final_sekali)
## 'data.frame': 22265 obs. of 7 variables:
## $ Store_Type : num 2 1 2 1 1 2 2 2 2 1 ...
## $ Location_Type: num 2 1 2 1 1 2 2 2 2 1 ...
## $ Region_Code : num 3 1 1 4 2 1 3 4 4 4 ...
## $ Holiday : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Discount : num 1 1 1 1 1 1 1 1 1 1 ...
## $ sales : num 12605 19279 16480 16742 12233 ...
## $ qty : num 195 118 119 181 174 165 112 143 100 148 ...
Selanjutnya adalah melihat korelasi dengan menggunakan berbagai
methode Korelasi yang mana setiap methode penggunaanya
tergantung setiap data.
pearson <- cor(Data_corelation_final_sekali, method = "pearson")
corrplot(pearson, method = "circle", type = "full", bg = "blue")
Spearman = cor(Data_corelation_final_sekali, method = "spearman")
corrplot(Spearman, method = "number", bg = "black", type = "full")
kendall = cor(Data_corelation_final_sekali, method = "kendall")
corrplot(kendall, method = "square", bg = "lightgreen")
library(polycor)
Pointbeserial = polyserial(Data_corelation_final_sekali$Discount, Data_corelation_final_sekali$Region_Code)
print(Pointbeserial)
## [1] -0.001916166
sangat kecil korelasinya.
Data_corelation_final_sekali_phi = table(Data_corelation_final$Discount, Data_corelation_final$Location_Type)
phi = chisq.test(Data_corelation_final_sekali_phi)
print(phi)
##
## Pearson's Chi-squared test
##
## data: Data_corelation_final_sekali_phi
## X-squared = 0.67629, df = 4, p-value = 0.9542
Jika nilai p sangat tinggi, dapat diartikan bahwa tidak ada bukti yang cukup untuk mendukung adanya hubungan antara variabel-variabel yang diuji.
library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## ######################### Warning from 'xts' package ##########################
## # #
## # The dplyr lag() function breaks how base R's lag() function is supposed to #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or #
## # source() into this session won't work correctly. #
## # #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop #
## # dplyr from breaking base R's lag() function. #
## # #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning. #
## # #
## ###############################################################################
##
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
##
## first, last
##
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
##
## legend
chart.Correlation(Spearman, histogram = TRUE, pch = 19)
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter