PENGGUNAAN BIGLM DAN BIGANALYTICS DALAM R
Dosen Pengampu : Dr. Danardono, MPH
Vemmie Nastiti Lestar, S.Si., M.Sc
Disusun Oleh :
Nanda Noor Harkam Ansol (14/366258/PA/16236)
Angelia Trince Monekaka (14/366174//PA/16220)
Tri Mulyaningsih (14/366175/PA/16221)
Novika Purba (14/368612/PA/16296)
PROGRAM STUDI STATISTIKA DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2017
BAB I
PENDAHULUAN
1. Latar Belakang Masalah
Salah satu library di R yang cukup penting dan sangat sering digunakan adalah
lm(). Lm() digunakan untuk memfitting model-model linier seperti regresi linier, anava
satu arah, dan analisis covariansi. Meskipun penggunaan library lm dalam regresi linier
sangat umum dilakukan akan muncul permasalahan baru apabila data yang akan
dianalisis berukuran cukup besar. Hal ini dikarenakan apabila dalam analisis regresi
menggunakann library lm maka user harus menyertakan keseluruhan data sehingga
memori yang dibutuhkan cukup besar. Oleh karena itu, digunakanlah library biglm untuk
analisis regersi dengan data yang cukup besar.
Biglm menawarkan beberapa keuntungan diantaranya, biglm dalam analisis hanya
menyimpan data sebesar p2 dengan p adalah banyaknya variabel yang digunakan. Selain
itu biglm menawarkan fasilitas update. Fasilitas update dapat digunakan untuk
menganalisis regresi terhadap data yang telah dipartisi menjadi beberapa bagian. Idenya
adalah meregresikan data partisi tertentu kemudian setelah di analisis dan didapatkan
hasilnya akan digunakan fasilitas update dengan menambahkan data baru yang berasal
dari partisi yang lain. Dengan cara ini maka memori yang digunakan lebih kecil karena
gagasan dari fungsi biglm adalah menyimpan data ke dalam memori hanya pada saat di
running.
Big analytics merupakan package analisis yang digunakan untuk data berukuran
besar. Analisis yang terdapat pada package biganalytics diantaranya ada biglm.big.matrix,
bigglm.big.matrix, bigkmeans, binit, dan penerapan untuk big.matrix.objects.
2. Rumusan Masalah
a. Bagaimana perbedaan antara biglm dan lm?
b. Bagaimana penggunaan fasilitas update pada packages biglm?
c. Bagaimana perbedaan antara analisis pada matrix biasa dengan matrix menggunakan
package biganalytics?
3. Tujuan
a. Mengetahui penggunaan packages biglm dan biganalytics.
b. Mengetahui penggunaan fasilitas update pada biglm.
BAB II
LANDASAN TEORI
1. Package Biglm
Biglm membuat/menciptakan objek model linier hanya dengan menggunakan
memori p^2 untuk variabel p. Data ini dapat diperbarui dengan menggunakan lebih
banyak update data. Model ini memungkinkan untuk menjalankan regresi linear pada
data set yang lebih besar dari pada memorynya.
Dalam package biglm, terdapat fungsi bigglm, bigglm.data.frame,
bigglm.function, bigglm.RODBC, biglm.
Usage
biglm(formula, data, weights=NULL, sandwich=FALSE)
## S3 method for class 'biglm'
update(object, moredata,...)
## S3 method for class 'biglm'
vcov(object,...)
## S3 method for class 'biglm'
coef(object,...)
## S3 method for class 'biglm'
summary(object,...)
## S3 method for class 'biglm'
AIC(object,...,k=2)
## S3 method for class 'biglm'
deviance(object,...)
Arguments
Details
The model formula must not contain any data-dependent terms, as these will not be
consistent when updated. Factors are permitted, but the levels of the factor must be the
same across all data chunks(empty factor levels are ok). Offsets are allowed (since
version 0.8).
Value
An object of class biglm
2. Package Biganalytics
Package biganalytics diperlukan untuk objek big.matrix dari paket bigmemory.
Package biganalytics merupakan perluasan dari package bigmemory dengan variasi
analisis. Biganalytics menyediakan statistik ringkasan yang lebih jelas (melihat colmean,
dll ..), biganalytics menawarkan biglm.big.matrix, bigglm.big.matrix, bigkmeans, binit,
dan untuk objek big.matrix. Beberapa fungsi dapat digunakan dengan benda R
memberikan keuntungan dalam kecepatan dan efisiensi memori.
2.1 Library yang Terdapat pada Packages Biganalytics
big.matrix
Digunakan apply() untuk objek big.matrix
usage
apply(X, MARGIN, FUN, ...)
Arguments
X : a big.matrix object.
MARGIN : the margin. May be may only be 1 or 2, but otherwise
conforming to what you would expect from apply().
FUN : the function to apply.
... : other parameters to pass to the FUN parameter.
bigglm.big.matrix
Ini adalah pembungkus paket biglm Thomas Lumley, yang memungkinkannya
digunakan dengan data besar yang tersimpan dalam objek big.matrix
Usage
bigglm.big.matrix(formula, data, chunksize = NULL, ..., fc = NULL,
getNextChunkFunc = NULL) biglm.big.matrix(formula, data, chunksize =
NULL, ..., fc = NULL, getNextChunkFunc = NULL)
Arguments
formula : a model formula.
Data :a big.matrix.
Chunksize : an integer maximum size of chunks of data to process
iteratively.
Fc : either column indices or names of variables that are factors.
... : options associated with the biglm
getNextChunkFunc: a function which retrieves chunk data
bigkmeans
Analisis k-means dengan menghemat memori
Usage
bigkmeans(x, centers, iter.max = 10, nstart = 1, dist = "euclid")
Arguments
X : a big.matrix object.
Centers : a scalar denoting the number of clusters, or for k clusters, a k by ncol(x)
matrix.
iter.max : the maximum number of iterations.
Nstart : number of random starts, to be done in parallel if there is a registered
backend (see below).
Dist : the distance function. Can be "euclid" or "cosine".
Binit
Menghitung elemen yang muncul di bins dari satu atau dua variabel
Usage
binit(x, cols, breaks = 10)
Arguments
X : a big.matrix or a matrix.
Cols : a vector of column indices or names of length 1 or 2.
Breaks : a number of bins to span the range from the maximum to the minimum,
or a vector (1-variable case) or list of two vectors (2-variable case)
where each vector is a triplet of min, max, and number of bins.
BAB III
PEMBAHASAN
1. Implementasi Biglm dengan R
1.1 Perbandingan waktu eksekusi antara biglm dan lm
Untuk membandingkan waktu eksekusi antara biglm dan lm maka dilakukan
beberapa kali simulasi yaitu dari data berukuran kecil hingga berukuran cukup besar.
Data yang digunakan berasal dari pembangkitan data.
Syntax pembangkitan data:
x1=sample(1:4,1000000,TRUE)
x2=sample(25:61,1000000,TRUE)
x3=sample(567:1789000,1000000,TRUE)
y=-1.23+2.3*x1-0.98*x2+0.75*x3+rnorm(1000000,0,25)
Interpretasi data :
X1 adalah data kategorik yang terdiri dari 4 kategori
X2 adalah data berupa bilangan bulat positif yang berada diantara 24 dan 62
X3 adalah data berupa bilangan bulat positif yang berada diantara 566 dan 1789001
Y dibangkitkan dengan rumus regresi disertai penambahan error yang berdistribusi
normal dengan mean 0 dan variansi 25.
Pengukuran waktu
Dalam pengukuran waktu digunakan menu proc.time(). Dengan syntax :
ptm = proc.time()
model1=biglm(y~x1+x2+x3,data=data) syntax yang ingin kita ukur waktu
eksekusinya
proc.time()-ptm akan memunculkan waktu eksekusi
*Untuk output hasil eksekusi, kami tampilkan dalam lampiran.
Tabel 2.1 Hasil dari perbandingan lm dan biglm
Proc Time
Size lm biglm
10 0.01 0.03
100 0.01 0.05
1000 0.03 0.02
10000 0.06 0.05
100000 0.06 0.02
1000000 0.17 0.14
10000000 14.73 2.45
1.2 Penggunaan fasilitas update pada package biglm
Fasilitas update yang disediakan oleh package biglm memungkinkan kita
sebagai user untuk melakukan update data. Sebagai contoh kita melakukan analisis
regresi terhadap suatu set data dan mencari estimasi beta untuk masing-masing
variabel independen. Kemudian muncul data baru yang merupakan kelanjutan dari
data set sebelumnya. Dengan menggunakan fasilitas update, kita dapat mencari
estimasi beta yang baru tanpa harus melakukan estimasi terhadap keseluruhan data.
Dengan kata lain dapat lebih menghemat memori yang digunakan.
Berikut kami demonstrasikan penggunaan fasilitas update dipackage biglm.
Data yang kami gunakan sebagai demo memang belum bisa dikategorikan big, karena
disini kami hanya ingin menekankan penggunaan dari fasilitas update itu sendiri.
Deskripsi data
Data anime yang terdiri dari 4 variable yaitu :
Rating : menunjukkan kepopuleran suatu anime yang merupakan variable dependen
(y)
Type : jenis dari anime yang merupakan variabel kategorik
Episodes : merupakan jumlah episode
Members : jumlah anggota
a. Estimasi data awal
Data awal terdiri dari 10677 data
Syntax untuk estimasi awal
ff<-rating~type+episodes+members
a=biglm(ff,data)
summary(a)
Hasil estimasi beta untuk data awal
Output 3.1
b. Estimasi dengan menu update
Data update
Syntax estimasi dengan fasilitas update
b=update(a,dataupdate)
summary(b)
Hasil estimasi
Output 3.2
c. Perbandingan menu update dan cara konvensional
Perbandingan hasil estimasi
Cara konvensional adalah estimasi beta dengan melibatkan keseluruhan data.
Keseluruhan data
Hasil estimasi konvensiona; (dengan data keseluruhan)
Ternyata apabila dibandingkan maka hasil estimasi dari cara
konvensional sama dengan hasil dengan fasilitas update (output 3.2)
Perbandingan waktu eksekusi
Konvensional Fasilitas update
Dilihat dari waktunya terlihat bahwa fasilitas update lebih cepat dari
cara konvensional dengan kata lain, fasilitas update lebih menghemat memori
dan juga waktu dibandingkan dengan cara konvensional.
2. Implementasi Biganalytics dengan R
Implementasi biganalytics pada R kali ini lebih membahas tentang penggunaaanya pada
data yang berbentuk matrix.
Matrix tanpa biganalytics
Syntax :
data = matrix(sample(1:999999,100000,replace=TRUE),10000,10,
dimnames=list(NULL,c(“a”,”b”,”c”,”d”,”e”,”f”,”g”,”h”,”i”,”j”)))
data
Interpretasi
data = data berbentuk matrix
replace = data pada sampel bersifat pengembalian (TRUE) dan tidak bersifat
pengembalian (FALSE)
dimnames = memberi nama pada kolom maupun baris
Mencari nilai mean pada data matrix
Syntax :
Mean(data)
Output :
Apakah bisa mencari nilai mean pada kolom a?
Syntax :
Colmean(data,”a”)
Ouput :
Kesimpulan
Pada matrix biasa tanpa menggunakan biganalytics kita tidak dapat mengetahui nilai
mean untuk kolom “a”. berdasarkan hal tersebut, tentu akan menyulitkan peneliti
apabila peneliti ingin mengetahui untuk masing-masing kolom. Selanjutnya, kita akan
mencoba melakukan analisis pada matrix dengan menggunakan package biganalytics.
Matrix dengan biganalytics
Syntax :
Library(biganalytics)
data = as.big.matrix(matrix(sample(1:999999,100000,replace=TRUE),10000,10,
dimnames=list(NULL,c(“a”,”b”,”c”,”d”,”e”,”f”,”g”,”h”,”i”,”j”))))
data [,]
Interpretasi
data = data berbentuk matrix
as.big.matrix = fungsi dimana data tersebut didefiinisikan berupa matrix berukuran
besar
replace = data pada sampel bersifat pengembalian (TRUE) dan tidak bersifat
pengembalian (FALSE)
dimnames = memberi nama pada kolom maupun baris
Mencari nilai mean pada data matrix
Syntax :
Mean(data)
Output :
Apakah bisa mencari nilai mean pada kolom a?
Syntax :
Colmean(data,”a”)
Ouput :
Kesimpulan
Pada matrix dengan menggunakan biganalytics kita dapat mengetahui nilai mean
untuk kolom “a”. Berdasarkan hal tersebut, tentu akan memudahkan peneliti apabila
peneliti ingin mengetahui untuk masing-masing kolom.
Contoh :
mengetahui mean masing-masing kolom
Syntax :
Colmean(data)
Ouput :
mengetahui range masing-masing kolom
Syntax :
Biganalytics::apply(data,2,range)
Ouput :
Keterangan :
Data pada matrix tanpa package biganalytic maupun dengan biganalytics terlihat
berbeda (terlihat pada mean). Hal ini terjadi karena pengambilan sampel pada data
bersifat acak sehingga terdapat perbedaan dari data pada masing-masing matrix (tanpa
package maupun dengan package).
BAB III
KESIMPULAN
Berdasarkan analisis yang telah dilakukan, dapat diambil kesimpulan bahwa:
1. Biglm memiliki bebrapa kelebihan dibandingkan dengan lm apabila dilihat dari
waktu eksekusi dan memori yang digunakan.
2. Biglm menawarkan menu update sehingga memudahkan dalam estimasi apabila
dimiliki data baru.
3. Biganalytics memberikan fasilitas yang cukup penting dalam komputasi.
LAMPIRAN
1. Library lm dengan size : 10
2. Library biglm dengan size : 10
3. Library lm dengan size : 100
4. Library biglm dengan size : 100
5. Library lm dengan size : 1000
6. Library biglm dengan size : 1000
7. Library lm dengan size : 10000
8. Library biglm dengan size : 10000
9. Library lm dengan size : 100000
10. Library biglm dengan size : 100000
11. Library lm dengan size : 1000000
12. Library biglm dengan size : 1000000
13. Library lm dengan size : 10000000
14. Library biglm dengan size :
100000000
15. Data pada matrix tanpa package biglm
16. Data pada matrix dengan package biganalytics