Anda di halaman 1dari 12

CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO

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

CARA INSTALL PACKAGE:


1. JIKA INTERNET MUMPUNI
Ketik: > Choose CRAN mirror ()
2. JIKA INTERNET LEMOT
a. Download program secara manual, dengan format file *.tar.gz
b. Pada menu di program R, pilih packages->install package from local files->pilih lokasi file
tersimpan (zip file)

CARA MEMBUKA LIBRARY


Ketik: > Library (stats)

Apabila Menemui Kendala Dalam Sebuah Function


Ketik: > ?function -> akan muncul html yang berisi tentang function yang ditanyakan
Contoh: > ? lm

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

Residual standard error: 2.28 on 3 degrees of freedom


Multiple R-squared: 0.09302, Adjusted R-squared: -0.2093
F-statistic: 0.3077 on 1 and 3 DF, p-value: 0.6178

ARITMATIKA
Perintah Skalar Vector dan Matrik
Plus + +
Minus - -
Pekalian * %*%
Pembagian / solve ()
Transpose t ()
Akar sqrt

VEKTOR DAN MATRIK NOTE:


Vektor -> c ()
Matrik -> matrix (vector, ncol=, nrow=) Cara lain menulis vektor
Contoh: > x=c(1,2,3,4,5,6,7,8,9,10)
> vektor=c(3,5,1,1,0,2,4,2,3,2,9,4) > x=c(1:10)
> vektor > x=seq(from=1,to=10,by=1)
[1] 3 5 1 1 0 2 4 2 3 2 9 4 > x=seq(1,10,1)
Hasilnya akan sama:
>x
[1] 1 2 3 4 5 6 7 8 9 10
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO

> 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

Cara memanggil variabel dalam tabel:


> usia=data$usia;usia atau
[1] 33 34 20 35 15 30 16 30 56 70
> usia=data[,2];usia
[1] 33 34 20 35 15 30 16 30 56 70
> gaji=data$gaji atau
> gaji=data[,4];gaji
[1] 2.4 1.8 1.5 3.2 2.6 3.4 2.5 2.4 3.6 4.1
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO

Cara memanggil suatu variabel dengan syarat tertentu:


Contoh1:
Mencari usia 30 tahun keatas
> usia=data[,2];usia
[1] 33 34 20 35 15 30 16 30 56 70 NOTE:
> usiatua=data[usia>30,] atau
> usiatua=data[data$usia>30,];usiatua Arti tanda:
nama usia jk gaji tinggi ; -> menampilkan hasil setelah enter
1 A 33 L 2.4 176 != -> yang bukan/selain
2 B 34 P 1.8 156
4 D 35 P 3.2 158
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

list(rata=rata1,standar.deviasi=std1) #menampilkan output diberi nama rata dan standar.deviasi


}
PROGRAM R
> source("E:\\KULIAH_ITS\\KOMSTAT\\ contoh1.txt")
> contoh1(data)
$rata
[1] 33.9

$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

NOTEPAD save as varians.txt


varians=function(data)
{
n=length(data)
rata=mean(data)
xx=matrix(ncol=1,nrow=n)
for ( i in 1:n)
{
xx[i]=(data[i]-rata)^2
}
sumxx=sum(xx)
varian=sum(xx)/(n-1)
list(varians=varian)
}
CATATAN MATRIKULASI KOMPUTASI STATISTIK BY TAUFIQ FAJAR DEWANTO

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

NOTEPAD save as regresi.txt


B0B1=function(data1,data2)
{
nx=length(data1)
ny=length(data2)
rata1=mean(data1)
rata2=mean(data2)

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"
}
}

output=cbind(data,kategori) #fungsi menggabungkan 2 data kolom

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)

Cara kerja BOOTSTRAP:


1. Sampel sebanyak N
2. Mengambil random sebanyak n < N
3. Mengestimasi parameter dari no. 2 ->
4. Ulangi no. 2 dan no. 3 sebanyak R kali
5. Menghitung rata-rata dari estimator beserta CI

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

NOTEPAD save as korelasibootstrap.txt


korelasi =function(x,y,R,m)
{
n=length(x)
nomor=c(1:n)
kor=matrix(ncol=1,nrow=R)

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

> korelasi (usia,gaji,1000,5)


$korelasi.bootstrap
[1] 0.6633486

Contoh2:
Bootstrap Regresi -> Input (x,y,R,m)

NOTEPAD save as regresibootstrap.txt


bootreg=function(x,y,R,m)
{
n=length(x)
nomor=c(1:n)
b0=matrix(ncol=1,nrow=R)
b1=matrix(ncol=1,nrow=R)

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

NOTEPAD save as jacknife.txt


jacknife=function(data)
{
n=length(data)
rata=matrix(ncol=1,nrow=n)

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

Anda mungkin juga menyukai