Korelasi linear Pearson dan Fungsi Autokorelasi (ACF) – PACF

By | December 8, 2022
Print Friendly, PDF & Email
2,696 Views

Korelasi merupakan hubungan antara satu variabel dengan variabel lainnya. Korelasi Pearson digunakan untuk mengukur hubungan linear yang terjadi diantar dua variabel dengan nilai berkisar -1 sampai dengan +1, jika nilai tersebut mendekat 0 maka terjadi hubungan linear yang lemah. Hubungan linear +1 bersifat berbanding lurus, sebaliknya hubungan linear -1 jika berbanding lurus terbalik.

Nilai koefisien yang bernilai positif menunjukkan hubungan antar variabel yang bersifat positif, yakni jika satu variabel meningkat nilainya, variabel lainnya juga akan meningkat nilainya. Sedangkan nilai koefisien yang bernilai negatif menunjukkan hubungan antar variabel yang bersifat negatif, yakni jika satu variabel meningkat nilainya, variabel lainnya akan menurun nilainya, dan sebaliknya. Bila suatu koefisien bernilai nol, berarti antar variabel-variabel tersebut tidak memiliki hubungan, yakni jika terjadi peningkatan/penurunan terhadap suatu variabel, variabel lainnya tidak akan terpengaruh oleh perubahan nilai tersebut.

Korelasi linear Pearson

Nilai korelasi Pearson digunakan untuk menguji sebuah linearitas sebuah data sehingga jika data tersebut mempunyai hubungan yang linear maka akan sangat baik digunakan perhitungan regresi linear. Rumus umum untuk menghitung nilai koefisien linear pearson yaitu

    \[r=\frac{\sum{(X-\bar X)(Y-\bar Y)}}{\sqrt{\sum{(X-\bar{X})^2}}\sqrt{\sum{(Y-\bar Y)}^2}}\]

Contoh perhitungan nilai korelasi Pearson bisa ditulis secara sendiri ataupun menggunakan function yang sudah ada di R yaitu cor. Misalkan kita punya data berikut yang terdiri dari variabel X dan Y

   X  Y
1  3  6
2  4  9
3  6 20
4  7 34
5 12 45
6 30 90

Dengan rumus diatas kalian bisa menghitung nilai r sebagai berikut

bmg<-read.csv('bmg.csv') #baca data 
head(bmg) #tampilkan
pembilang = sum((bmg$X-mean(bmg$X))*(bmg$Y-mean(bmg$Y)))
penyebut = sqrt(sum((bmg$X-mean(bmg$X))^2))*sqrt(sum((bmg$Y-mean(bmg$Y))^2))
r = pembilang/penyebut
print(r)

Hasilnya

0.9773274

Kalian bisa koq menggunakan function di R dengan perintah cor

bmg<-read.csv('bmg.csv') #baca data 
head(bmg) #tampilkan
r = cor(bmg$X,bmg$Y,method='pearson')
print(r)

hasil

0.9773274

Fungsi Autokorelasi (ACF)

Koefisien autokorelasi memiliki makna yang hampir sama dengan koefisien korelasi, yakni hubungan antara dua/lebih variabel. Pada korelasi, hubungan tersebut merupakan dua variabel yang berbeda pada waktu yang sama, sedangkan pada autokorelasi, hubungan tersebut merupakan dua variabel yang sama dalam rentang waktu yang berbeda biasanya digunakan pada time series sehingga adanya lag sebagai variabel yang lainnya.

  • y
  • y_t = lag(y,k)
  • \bar{y} adalah mean
  • dengan k adalah nilai lag nya

Autokorelasi dapat dihitung menggunakan fungsi autokorelasi (AutoCorrelation Function), ACF(k), yang dapat dinotasikan sebagai berikut:

    \[ ACF(k) = \frac{\sum{_{t=1+k}^n}(Y_t-\bar{Y}){(Y_{t-k}-\bar{Y})}}{\sum{_{t-1}^{n}(Y_t-\bar{Y})^2}} \]

Misalkan diketahui data deret waktu sebagai berikut:2,3,2,5. Hitung secara manual penduga fungsi autokorelasi(ACF) untuk k=1 dan 2:

r_1= \{(3-3)(2-3)+(2-3)(3-3)+(5-3)(2-3)\}/\{(-1)^2+(0)^2+(-1)^2+(2)^2\} = -0.333

r_2= \{(2-3)(2-3)+(5-3)(3-3)\}/\{(-1)^2+(0)^2+(-1)^2+(2)^2\} = 0.167

Agak ribet cara hitungnya, berikut cara hitung manual pakai R, misalkan untuk lag k = 2

df3 = data.frame(yt=c(2,3,2,5))

df3 = df3 %>% mutate(ytk=lag(yt,2))
df3

df.buffer = df3 %>% na.omit()

y.mean = mean(df3$yt)

yt = df.buffer$yt
ytk = df.buffer$ytk

a = sum((yt - y.mean)*(ytk-y.mean))
b = sum((df3$yt-y.mean)^2)
nilai.acf = a/b 
nilai.acf

hasilnya

[1] 0.1666667

atau menggunakan function built in

acf(df3$yt,plot=FALSE)

hasilnya

Autocorrelations of series ‘df3$yt’, by lag

     0      1      2      3 
 1.000 -0.333  0.167 -0.333

Kalian harus memahami ya ACF karena berhubungan dengan Autokorelasi yang berguna pada proses time series ARIMA, nah kalian bisa baca Dasar dan Pengertian Auto Regresi

Berikut adalah time series pemakaian konsumsi listrik, kita akan menguji autkorelasi pada LANDED_PROPERTIES

Konsumsi Listrik

See also  Install R dan RStudio di Ubuntu
Generated by wpDataTables

Berikut hal yang perlu diatur karena angka dan tanggal diatas masih format string

library(ggplot2)
library(dplyr)
library(lubridate)

df = read.csv("Konsumsi Listrik.csv")
#ubah karakter jadi numeric
df = df %>% mutate(landed_properties = str_replace(landed_properties,",00",""))
df = df %>% mutate(landed_properties = str_replace(landed_properties,".",""))
df$landed_properties = as.numeric(df$landed_properties)
#ubah jadi format tanggal
df$month = lubridate::dmy(df$month)

ggplot() +
    geom_line(data = df, aes(x=month, y =landed_properties,group=1))+
    labs(title="time series konsumesi listrik",
         subtitle="landed properties",
         x = "bulan",
         y = "konsumsi listrik",
         caption = "www.softscients.com")

Kita akan menggunakan fungsi ACF untuk melihat nilai ACF pada setiap lag nya.

acf(df$landed_properties)

berikut tampilan grafik ACF nya

kalian bisa lihat garis biru adalah rerata nilai korelasi nya, yang paling tinggi dan terdekat yaitu pada k = 7 dengan nilai nya (bisa kita hitung manual dengan cara diatas) yaitu 0.18

k = 7
h = data.frame(month=df$month,y=df$landed_properties)
h = h %>% mutate(yt=lag(y,k)) %>% na.omit()
cor(h$y,h$yt)

hasilnya

0.1854704

artinya tidak ada korelasi karena terlalu kecil, untuk menghitung secara statistik seberapa kuat korelasinya, bisa kalian pelajari Dasar dan Pengertian Auto Regresi

 

PACF – partial ACF

PACF atau Autokorelasi parsial digunakan untuk mengukur derajat asosiasi antara Yt dan Yt-k, ketika efek dari rentang/jangka waktu (time lag) dihilangkan. Penjelasan PACF cukup rumit karena berhubungan dengan regresi linar,  jadi kita langsung gunakan function built in pacf(). Understanding Partial Auto-correlation And The PACF

pacf(df$landed_properties)

batang PACF keluar batas pada lag 7 dan 14

 

 

Leave a Reply