KOMPUTASI STATISTIK
DIAJAR OLEH: HERI KUSWANTO
Bahan referensi dapat dicari melalui google search dengan keyword R core developtment (www.r-
project.org) dan package dari program R, dengan keyword R core package (www.cran.r-project.org)
yang hingga saat ini sudah terdapat 8869 package di dalamnya.
INTRODUCTION ABOUT R
Istilah dalam program R:
LIBRARY: kumpulan dari package
PACKAGE: kumpulan dari function, dimana satu package memuat 15-20 function
FUNCTION: kumpulan dari syntax atau code
Hierarki:
library
package
function
syntax/code
VALUE
Merupakan output yang dihasilkan dari perintah
Contoh: Regresi
> datax= c(2,3,4,5,6)
> datay= c(7,4,3,2,6)
> datax #ketik->enter
[1] 2 3 4 5 6
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO
> datay
NOTE:
[1] 7 4 3 2 6
> regresi=lm(datay~datax) c(2,3,4,5,6)
> regresi
c -> lambang untuk vektor
Call: Program R sensitif dengan huruf besar
lm(formula = datay ~ datax) dan huruf kecil, jadi jangan sampai
salah
Coefficients: Jika muncul tanda +, bukan > maka ada
(Intercept) datax value yang kurang
6.0 -0.4 Ex:
> summary(regresi)
> f=c(1,2,3 -> kurang )
Call: +
lm(formula = datay ~ datax) +) -> ditambah )
>
Residuals:
1 2 3 4 5
1.8 -0.8 -1.4 -2.0 2.4
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.0000 3.0594 1.961 0.145
datax -0.4000 0.7211 -0.555 0.618
ARITMATIKA
Perintah Skalar Vector dan Matrik
Plus + +
Minus - -
Pekalian * %*%
Pembagian / solve ()
Transpose t ()
Akar sqrt
> matrik=matrix(vektor,ncol=3)
> matrik -> Tanda [...] menunjukkan posisi, yang akan dijelaskan dengan contoh dibawahnya:
[,1] [,2] [,3]
[1,] 3 0 3
[2,] 5 2 2
[3,] 1 4 9
[4,] 1 2 4
> matrik[2,3] -> 2 merupakan baris ke-2, 3 merupakan kolom ke-3
[1] 2
> matrik[2,]
[1] 5 2 2
> matrik[,3]
[1] 3 2 9 4
REPLICATE
rep(x,) -> replicates the values in x
> x<-1:3;x
[1] 1 2 3
> rep(x,length=10) -> replicates x sepanjang 10 kali
[1] 1 2 3 1 2 3 1 2 3 1
> rep(x,times=2) -> replicates x sebanyak 2 kali
[1] 1 2 3 1 2 3
> rep(x,each=2) -> replicates x setiap nilai masing-masing sebnyak 2 kali
[1] 1 1 2 2 3 3
Contoh:
1. 1,2,3,,99
> seq(1,99,1) #atau
> c(1:99)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
[55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
2. 1,3,5,7,,99
> seq(1,99,2)
[1] 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61
63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
3. 1,1/2,1/3,,1/10
> c(1/(1:10))
[1] 1.0000000 0.5000000 0.3333333 0.2500000 0.2000000 0.1666667 0.1428571 0.1250000
0.1111111 0.1000000
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO
4. 1,2,3,4,5,4,3,2,1,0
> a=1:5;a
[1] 1 2 3 4 5
> b=4:0;b
[1] 4 3 2 1 0
> c(a,b)
[1] 1 2 3 4 5 4 3 2 1 0
5. 1,1,1,2,2,2,3,3,3
> rep(c(1:3),each=3)
[1] 1 1 1 2 2 2 3 3 3
6. 1,8,27,64,125,216
> c((1:6)^3)
[1] 1 8 27 64 125 216
FILE
Jenis file yang digunakan dalam program R:
1. *.txt
Cara memanggilnya: > read.table(alamat penyimpanan file)
2. *.csv
Cara memanggilnya: > read.csv(alamat penyimpanan file, sep,, header=TRUE)
3. *.spss
Cara memanggilnya: > read.spss(alamat penyimpanan file, )
Contoh:
> data=read.csv("E://KULIAH_ITS//KOMSTAT//Data1.csv",sep=",",header=TRUE)
> data -> akan digunakan untuk contoh-contoh selanjutnya
nama usia jk gaji tinggi
1 A 33 L 2.4 176
2 B 34 P 1.8 156
3 C 20 L 1.5 169
4 D 35 P 3.2 158
5 E 15 L 2.6 172
6 F 30 L 3.4 182
7 G 16 L 2.5 158
8 H 30 P 2.4 163
9 I 56 P 3.6 160
10 J 70 L 4.1 172
Contoh2:
Mencari usia 30 tahun keatas dan berjenis kelamin laki-laki
> jk=data$jk;jk
[1] L P L P L L L P P L
Levels: L P
> lelakitua=data[usia>30&jk=="L",];lelakitua
nama usia jk gaji tinggi
1 A 33 L 2.4 176
10 J 70 L 4.1 172
WHICH
Digunakan untuk mencari data yang diinginkan pada kolom nomor urut
Contoh:
> a=which(usia>30);a
[1] 1 2 4 9 10 -> merujuk pada kolom nomor urut
> b=which(usia!=30);b
[1] 1 2 3 4 5 7 9 10
> c=which(jk!="P");c
[1] 1 3 5 6 7 10
FUNCTION
Sebaiknya dibuat di notepad dengan ekstensi *.txt, cara memanggil filenya adalah:
Pada menu di R pilih File -> pilih Source R code -> pilih lokasi penyimpanan.
Penamaan file dan lokasi penyimpanan dianjurkan tanpa spasi.
Namafunction = function(input)
{
list (output)
}
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO
Contoh:
NOTEPAD save as contoh1.txt
contoh1=function(data) #contoh1 adalah function, data adalah input
{
rata1=mean(data[,2]) #menghitung rata2 data usia
std1=sd(data[,2]) #menghitung stdev data usia
$standar.deviasi
[1] 17.30414
LOOPING
for (i in 1:n)
Contoh1:
Menghitung nilai var(x)
Sebelum membuat syntaxnya, kita harus memahami urutan logikanya terlebih dahulu
( )2
2 =
1
Urutan logika:
1. Menghitung jumlah data -> n
2. Menghitung jumlah rata-rata data ->
3. Untuk masing-masing data, hitunglah -> ( )2
4. Jumlah dari nomor 3. Dibagi dengan n-1
PROGRAM R
> source("E:\\KULIAH_ITS\\KOMSTAT\\ varians.txt")
> varians(usia)
$varians
[1] 299.4333
Contoh2:
Menghitung korelasi antara x dengan y
(, )
(, ) =
2 2
( ) ( )
1 1
( )( )
(, ) =
1
NOTEPAD save as korelasi.txt
korelasi=function(data1,data2)
{
nx=length(data1)
ny=length(data2)
rata1=mean(data1)
rata2=mean(data2)
xx=matrix(ncol=1,nrow=nx)
yy=matrix(ncol=1,nrow=ny)
xy=matrix(ncol=1,nrow=nx)
for (i in 1:nx)
{
xy[i]=(data1[i]-rata1)*(data2[i]-rata2)
xx[i]=(data1[i]-rata1)^2
yy[i]=(data2[i]-rata2)^2
}
sumxy=sum(xy)
sumxx=sum(xx)
sumyy=sum(yy)
korelasi=sumxy/(sqrt(sumxx)*sqrt(sumyy))
list(korelasi=korelasi)
}
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO
PROGRAM R
> source("E:\\KULIAH_ITS\\KOMSTAT\\korelasi.txt")
> usia
[1] 33 34 20 35 15 30 16 30 56 70
> gaji
[1] 2.4 1.8 1.5 3.2 2.6 3.4 2.5 2.4 3.6 4.1
> korelasi(usia,gaji)
$korelasi
[1] 0.7236516
Contoh3:
Koefisien regresi B0 dan B1
= 0 + 1 +
0 = 1
n
1 = 2
n 2
xx=matrix(ncol=1,nrow=nx)
xy=matrix(ncol=1,nrow=nx)
for (i in 1:nx)
{
xy[i]=(data1[i])*(data2[i])
xx[i]=(data1[i])^2
}
sumxy=sum(xy)
sumxx=sum(xx)
nxy=rata1*rata2*nx
nxx=rata1*rata1*nx
b1=(sumxy-nxy)/(sumxx-nxx)
bo=rata2-(b1*rata1)
list(B0=bo,B1=b1)
}
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO
PROGRAM R
> source("E:\\KULIAH_ITS\\KOMSTAT\\regresi.txt")
> B0B1(usia,gaji)
$B0
[1] 1.595848
$B1
[1] 0.03404579
> lm(gaji~usia)
Call:
lm(formula = gaji ~ usia)
Coefficients:
(Intercept) usia
1.59585 0.03405
CONDITIONAL
If(condition) if(condition)
{ {
} }
else else if(condition)
{ {
} }
else
{
}
Contoh:
NOTEPAD save as conditional.txt NOTE:
contoh=function(data)
{
n=length(data)
cbind (A,B) -> menggabungkan 2 data kolom
kategori=matrix(ncol=1,nrow=n)
A B A B
for(i in 1:n)
{ rbind (A,B) -> menggabungkan 2 data baris
if(data[i]>=25)
{ A
kategori[i]="dewasa" A B
}
else B
{
kategori[i]="remaja"
}
}
list(output=output)
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO
PROGRAM R
> source("E:\\KULIAH_ITS\\KOMSTAT\\conditional.txt")
> contoh(usia)
$output
data
[1,] "33" "dewasa"
[2,] "34" "dewasa"
[3,] "20" "remaja"
[4,] "35" "dewasa"
[5,] "15" "remaja"
[6,] "30" "dewasa"
[7,] "16" "remaja"
[8,] "30" "dewasa"
[9,] "56" "dewasa"
[10,] "70" "dewasa"
BOOTSTRAP
Bebas dari asumsi
Bisa digunakan untuk parameter/sampel kecil
Meminimkan bias (outlier)
Contoh1:
Bootstrap korelasi -> Input (x,y,R,m)
Langkahnya:
1. Hitung panjang x dan y -> n
2. Bangkitkan angka 1:n -> nomor
3. Lakukan pengambilan sampel sebanyak m dari n
4. Ekstak data x dan y pada posisi no. 3 -> xbaru dan ybaru
5. Hitung korelasi xbaru dan ybaru
6. Ulangi no.3 s.d no.5 sebanyak R kali
for (i in 1:R)
{
sampel=sample(nomor,m)
xbaru=x[sampel]
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO
ybaru=y[sampel]
kor[i]=cor(xbaru,ybaru)
}
bootcorr=mean(kor)
hist(kor) #memunculkan histogram
list(korelasi.bootstrap=bootcorr)
}
PROGRAM R
> source("E:\\KULIAH_ITS\\KOMSTAT\\korelasibootstrap.txt")
> par(mfrow=c(2,1)) #menampilkan 2 baris dalam 1 kolom
> korelasi (usia,gaji,1000,5)
$korelasi.bootstrap
[1] 0.6560011
Contoh2:
Bootstrap Regresi -> Input (x,y,R,m)
for (i in 1:R)
{
sampel=sample(nomor,m)
xbaru=x[sampel]
ybaru=y[sampel]
regresi=lm(ybaru~xbaru)
b0[i]=regresi$coefficients[1]
b1[i]=regresi$coefficients[2]
}
b0.bs=mean(b0)
b1.bs=mean(b1)
par(mfrow=c(1,2))
hist(b0)
hist(b1)
list(b0.bs=b0.bs,b1.bs=b1.bs)
}
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO
PROGRAM R
> source("E:\\KULIAH_ITS\\KOMSTAT\\regresibootstrap.txt")
> bootreg (usia,gaji,1000,5)
$b0.bs
[1] 1.662185
$b1.bs
[1] 0.03113553
JACKNIFE
Langkahnya:
1. Hitung panjang data -> n
2. Hitung perulangan ke-i dari sebanyak R
a. Ambil sampel tanpa melibatkan pengamatan ke-i
b. Hitung nilai parameter dari no.2a
for (i in 1:n)
{
databaru=data[-i]
rata[i]=mean(databaru)
}
rata_jk=mean(rata)
list(jacknife=rata_jk)
}
PROGRAM R
> source("E:\\KULIAH_ITS\\KOMSTAT\\jacknife.txt")
> jacknife (usia)
$jacknife
[1] 33.9
NOTE TAMBAHAN:
PROGRAM R bukanlah program yang user friendly, sedang R STUDIO semi user friendly
BOOTSRAP idealnya digunakan untuk data crossection, tidak bisa untuk data time series, kecuali dilakukan
treatmen terlebih dahulu
REPLIKASI semakin banyak dilakukan, hasilnya akan semakin bagus, karena dengan banyaknya replikasi dapat
mendekati distribusi normal