Anda di halaman 1dari 3

Menghitung Standar Deviasi, Variance, Correlation, dan

Covariance dengan R

Arie Dipareza Syafei 23 Feb 2013

Sekarang kita akan membahas perintah statistik yang paling sederhana yaitu standar deviasi, varian, korelasi,
dan kovarian.

Berikut adalah rumusan standar deviasi, varian, korelasi, dan kovarian

Sampel varian yang digunakan dalam R

2
Jika varian adalah s maka standar deviasi adalah s.

Formula kovarian dalam R

Formula korelasi

Sx adalah standar deviasi sampel untuk data x dan Sy adalah standar deviasi sampel untuk data y.

Kita akan menggunakan kembali data no_q.csv. Data yang akan digunakan adalah data kualitas udara NO mulai
Februari 2001 hingga September 2002.

setwd(c:\path folder_anda")
no.q <- read.csv("no_q.csv", header=TRUE)
attach(no.q)

head(no.q)
tgl day id year month season station no.1 no2.1 no.2 no2.2 no.3 no2.3
1 1 32 32 2001 Feb-01 wet 1 43.74 56.03 63.59 53.40 NA NA
2 2 33 33 2001 Feb-01 wet 1 30.98 35.04 35.11 32.15 NA NA
3 3 34 34 2001 Feb-01 wet 1 29.15 33.28 31.11 30.63 NA NA
4 4 35 35 2001 Feb-01 wet 1 28.69 27.58 16.62 19.19 NA NA
5 5 36 36 2001 Feb-01 wet 1 23.22 27.62 28.75 28.08 NA NA
6 6 37 37 2001 Feb-01 wet 1 21.33 25.16 20.13 23.47 4.17 10.34
no.4 no2.4 no.5 no2.5 days mon tues wed thurs fri sat sun zones
1 54.74 37.22 22.1 37.86 THURSDAY 0 0 0 1 0 0 0 city_center
2 38.82 21.82 NA NA FRIDAY 0 0 0 0 1 0 0 city_center
3 NA NA NA NA SATURDAY 0 0 0 0 0 1 0 city_center
4 12.22 17.45 NA NA SUNDAY 0 0 0 0 0 0 1 city_center
5 23.05 19.89 NA NA MONDAY 0 0 0 0 0 0 0 city_center
6 19.38 19.44 NA NA TUESDAY 0 1 0 0 0 0 0 city_center
suburban center highway trading wet dry workdays weekends staday years
1 0 0 0 0 0 0 1 0 workdays 1
2 0 0 0 0 0 0 1 0 workdays 1
3 0 0 0 0 0 0 0 0 weekends 1
4 0 0 0 0 0 0 0 0 weekends 1

1
5 0 0 0 0 0 0 1 0 workdays 1
6 0 0 0 0 0 0 1 0 workdays 1

Kita melakukan perintah standar deviasi, varian, korelasi, dan kovarian dengan perintah sd(), var(), cor(), dan
cov().

sd(no.q$no.1)
[1] NA
> var(no.q$no.1)
[1] NA
> cor(no.q$no.1, no.q$no.2)
[1] NA
> cov(no.q$no.1, no.q$no.2)
[1] NA

Kita lihat hasilnya adalah NA untuk semua perintah. Kenapakah itu?

Perintah sd() dan perintah var() sensitif terhadap data hilang. Dengan mudah kita cek apakah benar ada data
hilang (NA) untuk konsentrasi NO di stasiun 1 dengan kode berikut.

no.q$no.1[no.q$no.1=="NA"]
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

Dan ternyata terdapat data hilang pada stasiun 1. Setelah kita cek lagi, ada 21 data hilang.

length(no.q$no.1[no.q$no.1=="NA"])
[1] 21

Sementara untuk data di stasiun 2, ada 34 data hilang.

no.q$no.2[no.q$no.2=="NA"]
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[26] NA NA NA NA NA NA NA NA NA
length(no.q$no.2[no.q$no.2=="NA"])
[1] 34

Nah, agar kita dapat menggunakan perintah sd() dan var(), maka kita harus mengabaikan dulu data hilang ini.
Masalahnya adalah, apakah mengabaikan data hilang ini akan menyebabkan analisa statistik kita menjadi tidak
valid? Kalau iya, maka kita harus cari cara untuk menangani data hilang ini, bisa dengan missing value
imputation, atau dihilangkan seluruhnya. Tapi sebaliknya, jika memang tidak apa-apa kita mengabaikan data
hilang ini, maka kita bisa meneruskan proses sd() dan var() dengan kode di bawah ini:

sd(no.q$no.1, na.rm=T)
[1] 8.941016
var(no.q$no.1, na.rm=T)
[1] 79.94177

Nilai standar deviasi dari konsentrasi NO di stasiun 1 adalah 8.941, sedangkan nilai sample variance-nya adalah
79.942. Adapun perintah cor() dan cov() tetap tidak bisa berjalan.

x <- no.q$no.1
y <- no.q$no.2

cor(x,y)
[1] NA

cov(x,y)
[1] NA

Untuk menjalankan perintah cor() dan cov(), maka kita harus menangani data hilang. Bisa dengan
menghilangkannya, atau mengisi data hilang tersebut. Kita ambil opsi terakhir, karena kita sudah memberikan
salah satu contoh mengisi data hilang, yang dapat dilihat pada link berikut:

2
http://envirodiary.com/id/mengisi-data-hilang-dengan-aregimpute.php

Kalau diikuti semua langkah pada panduan tersebut, kita akan menghasilkan obyek x.no.na.

no.q2 <- x.no.na

Kita buat obyek baru dengan data dari x.no.na.

head(no.q2)
tgl day id year month season station no.1 no2.1 no.2 no2.2 no.3 no2.3
1 1 32 32 2001 Feb-01 wet 1 43.74 56.03 63.59 53.40 17.855 NA
2 2 33 33 2001 Feb-01 wet 1 30.98 35.04 35.11 32.15 15.202 NA
3 3 34 34 2001 Feb-01 wet 1 29.15 33.28 31.11 30.63 11.968 NA
4 4 35 35 2001 Feb-01 wet 1 28.69 27.58 16.62 19.19 7.935 NA
5 5 36 36 2001 Feb-01 wet 1 23.22 27.62 28.75 28.08 6.945 NA
6 6 37 37 2001 Feb-01 wet 1 21.33 25.16 20.13 23.47 4.170 10.34
no.4 no2.4 no.5 no2.5 days mon tues wed thurs fri sat sun zones
1 54.74 37.22 22.100 37.86 THURSDAY 0 0 0 1 0 0 0 city_center
2 38.82 21.82 14.275 NA FRIDAY 0 0 0 0 1 0 0 city_center
3 29.02 NA 13.697 NA SATURDAY 0 0 0 0 0 1 0 city_center
4 12.22 17.45 7.806 NA SUNDAY 0 0 0 0 0 0 1 city_center
5 23.05 19.89 13.601 NA MONDAY 0 0 0 0 0 0 0 city_center
6 19.38 19.44 10.291 NA TUESDAY 0 1 0 0 0 0 0 city_center
suburban center highway trading wet dry workdays weekends staday years
1 0 0 0 0 0 0 1 0 workdays 1
2 0 0 0 0 0 0 1 0 workdays 1
3 0 0 0 0 0 0 0 0 weekends 1
4 0 0 0 0 0 0 0 0 weekends 1
5 0 0 0 0 0 0 1 0 workdays 1
6 0 0 0 0 0 0 1 0 workdays 1
Setelah kita punya data lengkap, barulah kita jalankan perintah cov() dan var().

x <- no.q2$no.1
y <- no.q2$no.2

cor(x,y)
[1] 0.7424502
cov(x,y)
[1] 67.71803

Kita dapatkan nilai korelasinya adalah 0.742 dan nilai kovariannya adalah 67.718.

Nilai kovarian dari dua variabel x dan y menunjukkan bagaimana keduanya terkait secara linier. Kovarian positif
mengindikasikan hubungan linier positif, sebaliknya nilai negatif menunjukkan hubungan negatif. Nilai 67.718
menunjukkan bahwa konsentrasi NO di stasiun 1 memiliki hubungan posifit secara linier dengan konsentrasi
NO di stasiun 2.

Inspired Reference:
Teetor P. 2011. R Cookbook. O.Reilly, USA
http://www.r-tutor.com/elementary-statistics/numerical-measures/

Anda mungkin juga menyukai