Instalasi Pakcages

Untuk dapat menggunakan fungsi-fungsi tertentu di R, kita memerlukan yang namanya Packages. Misal untuk melakukan anaisis runtuk waktu kita memerlukan package ‘tseries’. Untuk menginstal, menghapus dan mengupdate packages dapat menggunaka perintah seperti di bawah.

#install.packages("tseries")
detach()
#update.packages("tseries")

R command

Perintah R dapat ditulis baik secara langsung di R console maupun di R script. Untuk kemudahan, perintah sebaiknya dituliskan di R script sehingga hasil pekerjaan kita dapat disimpan tidak seperti di R command. Coba ketikan perintah tersebut di R command dan di R script.

testing <- 10
lg = log(pi)

Untuk memanggil hasil dari perintah di atas, kita tuliskan kembali nama variabelnya (testing atau warna). Setelah variable kita dapat menggunakan “<-” atau “=” sebagai pemisah dengan command yang ingin dieksekusi.

testing
## [1] 10
lg
## [1] 1.14473

Operasi matematika di R, pada umumnya sama seperti pada bahasa pemprograman lainnya yaitu -, +, * dan /.

10 + 5
## [1] 15
10/2
## [1] 5
10*5
## [1] 50
10-5
## [1] 5

Variabel di R

Vectors

Vektor adalah salah satu struktur data paling sederhana di R. Berikut adalah beberapa cara mengentri vektor di R.

x = 1:10
x
##  [1]  1  2  3  4  5  6  7  8  9 10
x2 = c(3,5,2,10)
x2
## [1]  3  5  2 10
length(x2)
## [1] 4
x3 <- seq(1, 10, 1)
x3
##  [1]  1  2  3  4  5  6  7  8  9 10
y = 2*x + x3 - 3
y
##  [1]  0  3  6  9 12 15 18 21 24 27
y[3]; y[1:4]; y[-1]
## [1] 6
## [1] 0 3 6 9
## [1]  3  6  9 12 15 18 21 24 27

Lists

Lists adalah bentuk umum dari vektor yang terdiri dari berbagai jenis tipe data.

x1 = seq (1,5,1)
x2 = c("merah", "kuning", "hijau")
x = list(numerik=x1, teks=x2, skalar=50)
x
## $numerik
## [1] 1 2 3 4 5
## 
## $teks
## [1] "merah"  "kuning" "hijau" 
## 
## $skalar
## [1] 50
x[[2]]; x$skalar
## [1] "merah"  "kuning" "hijau"
## [1] 50

Matriks

A = matrix(1:15, ncol = 5); A
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    4    7   10   13
## [2,]    2    5    8   11   14
## [3,]    3    6    9   12   15
B = matrix(1:15, nc=5, byrow = TRUE); B
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15
A[1,4]; A[,3]; A[3,]; A[1:2, 1:2]
## [1] 10
## [1] 7 8 9
## [1]  3  6  9 12 15
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
is.matrix(A)
## [1] TRUE

Operasi matrix di R sangatlah sederhana, misalnya perkalian matriks menggunakan perintah %*% atau invers matriks menggunakan solve(). Berikutlah adalah beberapa contoh operasi matriks.

A = matrix(c(1,1,1,2,3,2,3,4,5), nrow = 3, byrow = TRUE)
B = diag(3)
A%*%B
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    2    3    2
## [3,]    3    4    5
A-B; A+B; det(B)
##      [,1] [,2] [,3]
## [1,]    0    1    1
## [2,]    2    2    2
## [3,]    3    4    4
##      [,1] [,2] [,3]
## [1,]    2    1    1
## [2,]    2    4    2
## [3,]    3    4    6
## [1] 1
solve(A); diag(A); t(A)
##      [,1] [,2] [,3]
## [1,]  3.5 -0.5 -0.5
## [2,] -2.0  1.0  0.0
## [3,] -0.5 -0.5  0.5
## [1] 1 3 5
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    1    3    4
## [3,]    1    2    5

Data frames

Data frames adalah struktur data seperti matrix dimana setiap kolomnya dapat berisi tipe data yang berbeda.

tinggi = c(147, 132, 156, 167, 156, 140)
berat = c(50, 46, 47, 62, 58, 45)
gender = c("L","P","P","L","L","P")
H = data.frame(tinggi, berat, gender)
H
##   tinggi berat gender
## 1    147    50      L
## 2    132    46      P
## 3    156    47      P
## 4    167    62      L
## 5    156    58      L
## 6    140    45      P
str(H)
## 'data.frame':    6 obs. of  3 variables:
##  $ tinggi: num  147 132 156 167 156 140
##  $ berat : num  50 46 47 62 58 45
##  $ gender: Factor w/ 2 levels "L","P": 1 2 2 1 1 2
data("USArrests")
str(USArrests)
## 'data.frame':    50 obs. of  4 variables:
##  $ Murder  : num  13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ...
##  $ Assault : int  236 263 294 190 276 204 110 238 335 211 ...
##  $ UrbanPop: int  58 48 80 50 91 78 77 72 80 60 ...
##  $ Rape    : num  21.2 44.5 31 19.5 40.6 38.7 11.1 15.8 31.9 25.8 ...
summary(USArrests)
##      Murder          Assault         UrbanPop          Rape      
##  Min.   : 0.800   Min.   : 45.0   Min.   :32.00   Min.   : 7.30  
##  1st Qu.: 4.075   1st Qu.:109.0   1st Qu.:54.50   1st Qu.:15.07  
##  Median : 7.250   Median :159.0   Median :66.00   Median :20.10  
##  Mean   : 7.788   Mean   :170.8   Mean   :65.54   Mean   :21.23  
##  3rd Qu.:11.250   3rd Qu.:249.0   3rd Qu.:77.75   3rd Qu.:26.18  
##  Max.   :17.400   Max.   :337.0   Max.   :91.00   Max.   :46.00
tmp <- USArrests
attach(tmp)
mean(Murder)
## [1] 7.788
detach(tmp)
mean(tmp$Murder)
## [1] 7.788
with(tmp, mean(Murder))
## [1] 7.788

Fungsi, Perulangan dan Kondisi If

Perulangan seperti “for” sangat berguna dalam pemprograman.

ratarata <- function(x){
  mean = sum(x)/length(x)
  return(mean)
}
y = c(30, 42, 25, 30, 35)
ratarata(y)
## [1] 32.4
mean(y)
## [1] 32.4
maksmin <- function(x, y){
  if(x > y ) {
    maksimum = x
    minimum = y
  } else {
    maksimum = y
    minimum = x
  }
  list(maksimum=maksimum, minimum=minimum)
}
maksmin(30, 50)
## $maksimum
## [1] 50
## 
## $minimum
## [1] 30
varians <- function(x){
  n = length(x)
  xbar = ratarata(x)
  jumlah = 0
  for (i in 1:n) {
      jumlah = jumlah + (xbar - x[i])^2
    }
  varians = jumlah/(n-1)
  return(varians)
}
varians(y)
## [1] 41.3

Grafik

attach(tmp)
plot(tmp)

plot(Murder, Assault)

plot(Rape, type = 'l')
lines(Murder, col = 'blue')

#mengatur plot
plot(Rape, type = 'l', xlab = 'Kota', ylab='Cases', ylim=c(0,100))
lines(Murder, col = 'blue')
legend('topright', c("Rape","Murder"), col = c("black","blue"), lty=1)

boxplot(Assault)

hist(UrbanPop)

plot(USAccDeaths)

Membangkitkan Data

library(stats)
x <- rnorm(100, mean = 5, sd = 1)
y <- rpois(100, 5)
z <- rbinom(100, 1, 0.5)
hist(x, breaks = 20)

hist(y, breaks = 20)

head(z)
## [1] 0 1 1 0 1 0
set.seed(1234)
wdata = data.frame(
        sex = factor(rep(c("F", "M"), each=200)),
        weight = c(rnorm(200, 55), rnorm(200, 58)),
        height = c(rnorm(200, 170), rnorm(200, 160))
        )
head(wdata, 4)
##   sex   weight   height
## 1   F 53.79293 168.7732
## 2   F 55.27743 170.0362
## 3   F 56.08444 169.5786
## 4   F 52.65430 169.1006
boxplot(weight~sex, data=wdata)

Sekarang kita coba menggunakan grafik interaktif yang berasal dari package “ggplot2”.

#install.packages("ggplot2")
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.0.0
a <- ggplot(wdata, aes(x=weight)) 
a + geom_point(aes(y=height, fill=sex, col=sex))

a + geom_density(aes(col=sex, fill=sex))

a + geom_boxplot(aes(col=sex))

a + geom_line(aes(y=height, col=sex))

Korelasi dan Regresi

cor(tmp)
##              Murder   Assault   UrbanPop      Rape
## Murder   1.00000000 0.8018733 0.06957262 0.5635788
## Assault  0.80187331 1.0000000 0.25887170 0.6652412
## UrbanPop 0.06957262 0.2588717 1.00000000 0.4113412
## Rape     0.56357883 0.6652412 0.41134124 1.0000000
cor.test(Assault, Murder)
## 
##  Pearson's product-moment correlation
## 
## data:  Assault and Murder
## t = 9.2981, df = 48, p-value = 2.596e-12
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.6739512 0.8831110
## sample estimates:
##       cor 
## 0.8018733
library(corrplot)
## corrplot 0.84 loaded
corx <- cor(tmp)
corrplot(corx)

model <- lm(Murder ~ UrbanPop, data=tmp)
summary(model)
## 
## Call:
## lm(formula = Murder ~ UrbanPop, data = tmp)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -6.537 -3.736 -0.779  3.332  9.728 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  6.41594    2.90669   2.207   0.0321 *
## UrbanPop     0.02093    0.04333   0.483   0.6312  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.39 on 48 degrees of freedom
## Multiple R-squared:  0.00484,    Adjusted R-squared:  -0.01589 
## F-statistic: 0.2335 on 1 and 48 DF,  p-value: 0.6312
ggplot(tmp, aes(x=UrbanPop, y=Murder)) + geom_point() +
  geom_smooth(method = "lm", formula = y~x)