Vous êtes sur la page 1sur 20

MATERI 2

FUNGSI DALAM R

STK372 KOMPUTASI STATISTIK II

© Agus Mohamad Soleh


Lingkup Variabel
 Bagaimana suatu variabel dikenali
 Variabel Global
 Variabel Lokal
 Variabel yang diciptakan di console adalah variabel global
 Variabel yang diciptakan dalam fungsi adalah objek variabel
lokal
Lingkup Variabel
g <- function() {
x <- 2
return(x)
}
f <- function() {
x <- 1
g()
return(x)
}

Berapa f()?
Operasi Himpunan
 R memiliki fungsi-fungsi himpunan:
 union(x,y)
 intersect(x,y)
 setdiff(x,y)
 setequal(x,y)
 c %in% y
 choose(n,k)
 combn(n,k)
Operasi Linier Aljabar
 Menghitung inner product: crossprod
crossprod(1:3,c(5,12,13))
[,1]
[1,] 68

 Perkalian Matriks: %*%


> a
[,1] [,2]
[1,] 1 2
[2,] 3 4
> b
[,1] [,2]
[1,] 1 -1
[2,] 0 1
> a %*% b
[,1] [,2]
[1,] 1 1
[2,] 3 1
Operasi Aljabar Linier
 Persamaan Linier : solve
X1 + X2 =2
-X1 + X2 = 4

Program:
a <- matrix(c(1,-1,1,1),2,2)
b <- c(2,4)
solve(a,b)
[1] -1 3
Fungsi-fungsi Matematik
 Terdapat banyak fungsi matematik:
 exp(): Exponential function, base e
 log(): Natural logarithm
 log10(): Logarithm base 10
 sqrt(): Square root
 abs(): Absolute value
 sin(), cos(), and so on: Trig functions
 min() and max(): Minimum value and maximum value within a
vector
 which.min() and which.max(): Index of the minimal element
and maximal element of a vector
Fungsi-fungsi Matematik
 Lanjutan… :
 pmin() and pmax(): Element-wise minima and maxima of
several vectors
 sum() and prod(): Sum and product of the elements of a vector
 cumsum() and cumprod(): Cumulative sum and product of the
elements of a vector
 round(), floor(), and ceiling(): Round to the closest integer, to
the closest integer below, and to the closest integer above
 factorial(): Factorial function
Fungsi-fungsi Matematik
exp(x^2) * (2 * x)
 Kalkulus
expression({
 Turunan : .expr2 <- exp(x^2)
D(expression(exp(x^2)),"x") .value <- .expr2
deriv(~exp(x^2),"x") .grad <- array(0,
c(length(.value), 1L),
eval list(NULL, c("x")))
 Integral : integrate .grad[, "x"] <- .expr2
* (2 * x)
integrate(function(x) x^2,0,1)
attr(.value, "gradient")
<- .grad
.value
})
Fungsi Sebaran Statistik
 Fungsi sebaran
statistik secara
konvensi:
 dsebaran : density or
probability mass
function (pmf)
 psebaran : cumulative
distribution function
(cdf)
 qsebaran : quantiles
 rsebaran : random
number generation
Optimisasi Numerik
 Mencari nilai minimum/maksimum suatu fungsi
 Metode:
 Golden section search
 Newton-Raphson
 Nelder-mead
 dll
Golden Section Search
 Mencari nilai minimum untuk fungsi variabel tunggal dari
suatu selang yang diketahui
 Misal:
 Langkah:

• Mulai dengan selang


[a,b] yang memuat
minimum
• Perkecil selang [a’,b’]
yang memuat
minimum
• Berhenti sampai |b’-
a’| lebih kecil dari nilai
tolerans
Golden Section Search
 Pemilihan: a’ dan b’
 Nilai antara [a,b] memiliki sifat golden ratio:
 Tentukan x1 dan x2

 Hitung f(x1) dan f(x2)


 Jika f(x1) > f(x2) maka [a’,b’] = [x1,b]
 Jika f(x1) < f(x2) maka [a’,b’] = [a, x2]
Golden Section
golden <- function (f, a, b, tol = 0.0000001) x1 <- b - ratio * (b - a)
{ f1 <- f(x1)
ratio <- 2 / (sqrt(5)+1) } else {
x1 <- b - ratio * (b - a) a <- x1
x2 <- a + ratio * (b - a) x1 <- x2
f1 <- f(x1) f1 <- f2
f2 <- f(x2) x2 <- a +ratio * (b - a)
while(abs(b - a) > tol) { f2 <- f(x2)
if (f2 > f1) { }
b <- x2 }
x2 <- x1 return((a + b) / 2)
f2 <- f1 }
 f <- function(x) {abs(x - 3.5) + (x - 2)ˆ2 }
Newton Raphson
 Jika suatu fungsi memiliki turunan dapat digunakan metode
Newton Raphson

 fungsi nlm dalam R mengimplementasikan Newton Raphson


 Tugas, cari nilai minimum menggunakan D/deriv/eval untuk
fungsi:
f(x) = 2x2 – 3x – 7
Fungsi optimisasi lain
 R memiliki banyak fungsi untuk optimisasi dari suatu fungsi,
diantaranya:
 optimize : variabel tunggal
 optim : variabel lebih dari satu
optimize / optimise
> f <- function (x, a) (x - a)^2
> xmin <- optimize(f, c(0, 1), tol = 0.0001, a =
1/3)
> xmin
$minimum
[1] 0.3333333

$objective
[1] 0
optim
fr <- function(x) { $par
[1] 1.000260 1.000506
x1 <- x[1]
x2 <- x[2] $value
100 * (x2 - x1 * x1)^2 + (1 [1] 8.825241e-08
- x1)^2
} $counts
function gradient
optim(c(-1.2,1), fr)
195 NA

$convergence
[1] 0

$message
NULL
AKHIR MATERI

Vous aimerez peut-être aussi