pengenalan bahasa r

36
Pengenalan Bahasa R I G.A. Anom Yudistira E-mail: [email protected]

Upload: afram

Post on 12-Jan-2016

74 views

Category:

Documents


6 download

DESCRIPTION

Pengenalan Bahasa R. I G.A. Anom Yudistira E-mail: [email protected]. Websites. SimpleR www.math.csi.cuny.edu/Statistics/R/simpleR/Simple package, data, dan dokumen R www.r-project.org software;  cran.r-project.org dokumen; packages RNews. Bahasa R: Selayang Pandang. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Pengenalan Bahasa R

Pengenalan Bahasa RI G.A. Anom Yudistira

E-mail: [email protected]

Page 2: Pengenalan Bahasa R

Websites

• SimpleR www.math.csi.cuny.edu/Statistics/R/simpleR/Simple

– package, data, dan dokumen • R www.r-project.org

– software; cran.r-project.org– dokumen;– packages – RNews.

Page 3: Pengenalan Bahasa R

Bahasa R: Selayang Pandang

• Open source dan open development.• Merupakan sofware yang dirancangan dan

penyebarannya bersifat portable, extensible, dan scalable.

• Interoperability dengan bahasa lain: C, XML, FORTRAN.• Disediakan untuk berbagai metode statistik dan numerik.• Memiliki tools graphics dan visualisasi dengan kualitas

tinggi.• Memiliki user interface yang efektif, dan extensible • Didukung dengan creation, testing, dan distribusi

software dan data modul: packages. gratis

Page 4: Pengenalan Bahasa R

Pemrograman Berorientasi Objek (OOP)

Class • abstraksi software

mengenai objek dalam dunia nyata.

• refleksi dari bagaimana kita memandang objek dan informasi apa yang dikandungnya.

Method• fungsi melakukan aksi

terhadap data (objects). • aksi fungsi tergantung

pada class dari argumen-argumennya.

• sebuah fungsi generic dapat segera digunakan.

Page 5: Pengenalan Bahasa R

R antarmuka pengguna

• Pemrosesan baris perintah (command line processing)Klik R mulai> q() keluar; quit

• Graphik windows> X11() atau > window()> postscript()> dev.off()

• File path terhadap working directory> getwd()> setwd()

• meload a package library dengan library()• GUIs, tcltk

Page 6: Pengenalan Bahasa R

Memperoleh Bantuan (Help)o Detail tentang perintah spesifik yang namanya anda ketahui:

> ? t.test > help(t.test)

o Teladan penggunaan:> demo(graphics)> example(mean) mean> x <- c(0:10, 50) mean> xm <- mean(x) mean> c(xm, mean(x, trim = 0.1)) [1] 8.75 5.50

Page 7: Pengenalan Bahasa R

o Mesin pencari HTML membantu anda mencari topik tertentu:

> help.search(“mean”)

o Mencari perintah yang mengandung ekspresi atau nama objek tertentu:

> apropos("var") [1] "var.na" ".__M__varLabels:Biobase" [3] "varLabels" "var.test" [5] "varimax" "all.vars" [7] "var" "variable.names" [9] "variable.names.default" "variable.names.lm"

Memperoleh Bantuan (Help)

Page 8: Pengenalan Bahasa R

Memperoleh Bantuan (Help)

o Melihat code suatu fungsi, ketik nama fungsi tanpa parentheses/() or arguments:

> plot

Page 9: Pengenalan Bahasa R

R sebagai Calculator

> log2(32)

[1] 5

> print(sqrt(2))

[1] 1.414214

> pi

[1] 3.141593

> seq(0, 5, length=6)

[1] 0 1 2 3 4 5

> 1+1:10

[1] 2 3 4 5 6 7 8 9 10 11

Page 10: Pengenalan Bahasa R

R sebagai alat pembuat Graphics

> plot(sin(seq(0, 2*pi, length=100)))

0 20 40 60 80 100

-1.0

-0.5

0.0

0.5

1.0

Index

sin

(se

q(0

, 2 *

pi,

len

gth

= 1

00

))

Page 11: Pengenalan Bahasa R

> a <- 49> sqrt(a)[1] 7

> b <- "Saya sedang belajar R"> sub("Saya","Kamu",b)[1] "Kamu sedang belajar R"

> c <- (1+1==3)> c[1] FALSE> is.character(c)[1] "FALSE"

numeric

character string

logical

Variabel

Page 12: Pengenalan Bahasa R

Missing ValuesPeubah setiap tipe data (numeric, character, logical) dapat mempunyai nilai NA: not available. o NA tidak sama dengan 0o NA tidak sama dengan “”o NA tidak sama dengan FALSEo NA tidak sama dengan NULL

Opersi-operasi yang melibatkan NA bisa saja menghasilkan NA atau tidak:

> NA==1[1] NA> 1+NA[1] NA> max(c(NA, 4, 7))[1] NA> max(c(NA, 4, 7), na.rm=T)[1] 7

> NA | TRUE[1] TRUE> NA & TRUE[1] NA

Page 13: Pengenalan Bahasa R

Vektorvektor: suatu kumpulan data terurut dengan tipe sama> a <- c(1,2,3)> a*2[1] 2 4 6

Teladan: Nilai UTS statistik dan probabilitas kelas 02PBT adalah sebuah vektor numeric

Pada R, sebuah vektor bisa saja hanya memilki sebuah nilai tunggal.

Tipe-tipe vektor lain: character strings, logical

Page 14: Pengenalan Bahasa R

Matriks dan Array

matrix: table data berbentuk segi empat dengan tipe sama

Teladan: > mat <- matrix(1:10, nrow=5, ncol=2)

array: 3-,4-,.. matrix dimensional

Teladan: nilai-nilai foreground and background merah dan hijau untuk 20000 spots pada 120 arrays adalah array 4 x 20000 x 120 (3D).

Page 15: Pengenalan Bahasa R

Himpunan (list)

list: kumpulan data terurut dari sembarang tipe.

Teladan:> doe <- list(name="john",age=28,married=F)> doe$name[1] "john“> doe$age[1] 28> doe[[3]][1] FALSE

Elemen-elemen vektor diakses dengan nilai indexnya (integer) sedangkan elemen-elemen list oleh $nama (suatu character string).

Page 16: Pengenalan Bahasa R

Data Frame

data frame: tabel segiempat dengan baris-baris dan kolom-kolom; data didalam setiap kolom harus bertipe sama (mis. angka, text, logikal), tetapi kolom berbeda bisa saja bertipe tidak sama.

Teladan:> a <-data.frame(localization,tumorsize,progress,row.names=patients)> a localization tumorsize progressXX348 proximal 6.3 FALSEXX234 distal 8.0 TRUEXX987 proximal 10.0 FALSE

Page 17: Pengenalan Bahasa R

Apa tipe data saya?

class Class from which object inherits(vector, matrix, function, logical, list, … )

mode Numeric, character, logical, …storage.mode

typeofMode used by R to store object (double, integer, character, logical, …)

is.function Logical (TRUE if function)is.na Logical (TRUE if missing)names Names associated with objectdimnames Names for each dim of arrayattributes Names, class, etc.

Page 18: Pengenalan Bahasa R

SubsettingElemen-elemen individual sebuah vektor, matriks, array or data frame diakses dengan “[ ]” dengan menentukan nilai indeksnya, atau namanya

> a localization tumorsize progressXX348 proximal 6.3 0XX234 distal 8.0 1XX987 proximal 10.0 0

> a[3, 2][1] 10

> a["XX987", "tumorsize"][1] 10

> a["XX987",] localization tumorsize progressXX987 proximal 10 0

Page 19: Pengenalan Bahasa R

>a localization tumorsize progressXX348 proximal 6.3 0XX234 distal 8.0 1XX987 proximal 10.0 0

> a[c(1,3),] localization tumorsize progressXX348 proximal 6.3 0XX987 proximal 10.0 0

> a[-c(1,2),]localization tumorsize progressXX987 proximal 10.0 0

> a[c(T,F,T),] localization tumorsize progressXX348 proximal 6.3 0XX987 proximal 10.0 0

> a$localization[1] "proximal" "distal" "proximal"

> a$localization=="proximal"[1] TRUE FALSE TRUE

> a[ a$localization=="proximal", ] localization tumorsize progressXX348 proximal 6.3 0XX987 proximal 10.0 0

subset baris-baris dengan vektor indeks

subset baris-baris dg. Vektor logikal

subset kolom-kolom

Hasil pembandingan dalam vektor logikal

subset baris-baris yang dipilih

Teladan:

Page 20: Pengenalan Bahasa R

Fungsi dan Operator

Fungsi melakukan sesuatu terhadap data“Input”: argumen-argumen fungsi (0,1,2,…)“Output”: hasil fungsi

Teladan:add <- function(a,b) {

result <- a+b return(result) }

Operator: Penulisan cepat untuk fungsi-fungsi yang sering digunakan dengan satu atau dua argument.

Page 21: Pengenalan Bahasa R

Operator-operator yang sering digunakan<- Assign

+ Sum

- Difference

* Multiplication

/ Division

^ Exponent

%% Mod

%*% Dot product

%/% Integer division

%in% Subset

| Or

& And

< Less

> Greater

<= Less or =

>= Greater or =

! Not

!= Not equal

== Is equal

Page 22: Pengenalan Bahasa R

Fungsi-fungsi yang sering digunakan

c Concatenate

cbind,rbind

Concatenate vectors

min Minimum

max Maximum

length # values

dim # rows, cols

floor Max integer in

which TRUE indices

table Counts

summary Generic stats

Sort, order, rank

Sort, order, rank a vector

print Show value

cat Print as char

paste c() as char

round Round

apply Repeat over rows, cols

Page 23: Pengenalan Bahasa R

Fungsi-fungsi Statistik

rnorm, dnorm, pnorm, qnorm

Normal distribution random sample, density, cdf and quantiles

lm, glm, anova Model fitting

loess, lowess Smooth curve fitting

sample Resampling (bootstrap, permutation)

.Random.seed Random number generation

mean, median Location statistics

var, cor, cov, mad, range

Scale statistics

svd, qr, chol, eigen

Linear algebra

Page 24: Pengenalan Bahasa R

Fungsi-fungsi Grafik

plot Generic plot eg: scatter

points Add points

lines, abline Add lines

text, mtext Add text

legend Add a legend

axis Add axes

box Add box around all axes

par Plotting parameters (lots!)

colors, palette Use colors

Page 25: Pengenalan Bahasa R

Percabangan

if (logical expression) { statements} else { alternative statements}

else branch is optional{ } are optional with one statement

ifelse (logical expression, yes statement, no statement)

Page 26: Pengenalan Bahasa R

Loops

Bila perintah yang sama diperlukan beberapa kali; untuk semua elemen dalam sebuah list; semua kolom dalam sebuah array; dsb.

for(i in 1:10) { print(i*i)}

i<-1while(i<=10) { print(i*i) i<-i+sqrt(i)}

Lihat juga: repeat, break, next

Page 27: Pengenalan Bahasa R

Expressi RegularPerintah untuk pencocokan text dan replacement yang juga tersedia dalam bentuk yang sama dengan kebanyakan bahasa pemrograman (Perl, Unix shells, Java)

> a <- c("CENP-F","Ly-9", "MLN50", "ZNF191", "CLH-17")

> grep("L", a)[1] 2 3 5

> grep("L", a, value=T)[1] "Ly-9" "MLN50" "CLH-17"

> grep("^L", a, value=T)[1] "Ly-9"

> grep("[0-9]", a, value=T)[1] "Ly-9" "MLN50" "ZNF191" "CLH-17"

> gsub("[0-9]", "X", a)[1] "CENP-F" "Ly-X" "MLNXX" "ZNFXXX" "CLH-XX"

Page 28: Pengenalan Bahasa R

Menyimpan Data

Setiap objek R dapat disimpan dan dipanggil kembali dari sebuah file dengan menggunakan perintah:“save” and “load”.

Menggunkan standard XDR (external data representation) dari Sun Microsystems dan mempunyai keseuaian terhadap MS-Windows, Unix, Mac.

> save(x, file=“x.Rdata”)> load(“x.Rdata”)

Page 29: Pengenalan Bahasa R

Importing dan Exporting Data

Ada banyak cara untuk mengambil dan mengirim data.

Kebanyakan program (seperti Excel), disimpan dalam bentuk tabel segiempat berbentuk tab-delimited text files.

> x <- read.delim(“filename.txt”)

Lihat juga: read.table, read.csv, scan

> write.table(x, file=“x.txt”, sep=“\t”)

Lihat juga: write.matrix, write

Page 30: Pengenalan Bahasa R

Importing dan Exporting Data

• Mengambil data dari format minitab, SAS, STATA dapat dilakukan dengan menggunakan package foreign

> library(foreign)

> read.mtp(“file.mtp”) # format minitab

Page 31: Pengenalan Bahasa R

Simulasi

• Teorema Limit Pusat> n<-10; p<-.25; S<-rbinom(100,n,p)

> X<-(S-n*p)/sqrt(n*p*(1-p)) # ada 100 angka acak

> hist(X,prob=TRUE)

> xval=seq(-3,3,.01)

> points(xval,dnorm(xval),type="l")Histogram of X

X

De

nsity

-2 -1 0 1 2 3

0.0

0.2

0.4

0.6

Page 32: Pengenalan Bahasa R

Simulasi

• 200 sampel diambil dari populasi N(10,5) masing-masing berukutan 100

> samp<-numeric(0)

> mu<-10;sigma<-5

> for (i in 1:200) {

+ x<-rnorm(100,mu,sigma) # bangkikan 100 data

+ samp[i]<-(mean(x)-mu)/(sigma/sqrt(100))

+ }

> hist(samp,prob=T,col=gray(0.85))

> xval=seq(-3,3,.01)

> points(xval,dnorm(xval),type="l")

Histogram of samp

samp

De

nsity

-4 -3 -2 -1 0 1 2 3

0.0

0.1

0.2

0.3

Page 33: Pengenalan Bahasa R

QQ-Plot

• Plot quantil-quantil adalah plot yang lebih baik digunakan untuk memutuskan apakah suatu data acak teraproksimasi normal

> par(mfrow=c(1,4))> x<-rnorm(100);qqnorm(x,main="normal(0,1)"); qqline(x)> x<-rnorm(100,10,15);qqnorm(x,main="normal(10,15)")> qqline(x)> x<-rexp(100,1/10);qqnorm(x,main="exponensial mu=10")> qqline(x)> x<-runif(100);qqnorm(x,main="uniform(0,1)"); qqline(x)

-2 0 2

-2

-1

01

2

normal(0,1)

Theoretical Quantiles

Sam

ple

Quantile

s

-2 0 2

-20

-10

010

20

30

40

normal(10,15)

Theoretical Quantiles

Sam

ple

Quantile

s

-2 0 2

010

20

30

40

exponensial mu=10

Theoretical Quantiles

Sam

ple

Quantile

s

-2 0 2

0.0

0.2

0.4

0.6

0.8

1.0

uniform(0,1)

Theoretical Quantiles

Sam

ple

Quantile

s

Page 34: Pengenalan Bahasa R

Statistik Inferensia

> library(Devore6) # panggil package Devore6

> xmp07.06 # lihat datanya> names(xmp07.06) # apa saja variabelnya

> with(xmp07.06,mean(Voltage)+

+ c(1,-1)*qnorm(0.025)*

+ sd(Voltage)/sqrt(length(Voltage)))

[1] 53.22859 56.18807

Page 35: Pengenalan Bahasa R

Statistik Inferensia

• Uji t> with(xmp07.06,t.test(Voltage))

One Sample t-test

data: Voltage

t = 72.4631, df = 47, p-value < 2.2e-16

alternative hypothesis: true mean is not equal to 0

95 percent confidence interval:

53.18950 56.22716

sample estimates:

mean of x

54.70833

Page 36: Pengenalan Bahasa R

Statistik Inferensia• Selang kepercayaan untuk ragam> with(xmp07.15,(length(voltage)-1)*+ var(voltage)/qchisq(c(0.975,0.025),+ df=length(voltage)-1))[1] 76171.31 318079.76> with(xmp08.08,t.test(DCP,mu=30,alt="less")) One Sample t-testdata: DCP t = -0.7282, df = 51, p-value = 0.2349alternative hypothesis: true mean is less than 30 95 percent confidence interval: -Inf 31.61088 sample estimates:mean of x 28.76154