Pengenalan Bahasa R
description
Transcript of Pengenalan Bahasa R
Pengenalan Bahasa RI 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
• 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
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.
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
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
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)
Memperoleh Bantuan (Help)
o Melihat code suatu fungsi, ketik nama fungsi tanpa parentheses/() or arguments:
> plot
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
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
))
> 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
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
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
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).
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).
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
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.
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
>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:
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.
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
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
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
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
Percabangan
if (logical expression) { statements} else { alternative statements}
else branch is optional{ } are optional with one statement
ifelse (logical expression, yes statement, no statement)
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
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"
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”)
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
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
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
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
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
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
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
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