library(mosaic)
## Registered S3 method overwritten by 'mosaic':
##   method                           from   
##   fortify.SpatialPolygonsDataFrame ggplot2
## 
## The 'mosaic' package masks several functions from core packages in order to add 
## additional features.  The original behavior of these functions should not be affected by this.
## 
## Attaching package: 'mosaic'
## The following objects are masked from 'package:dplyr':
## 
##     count, do, tally
## The following object is masked from 'package:Matrix':
## 
##     mean
## The following object is masked from 'package:ggplot2':
## 
##     stat
## The following objects are masked from 'package:stats':
## 
##     binom.test, cor, cor.test, cov, fivenum, IQR, median, prop.test,
##     quantile, sd, t.test, var
## The following objects are masked from 'package:base':
## 
##     max, mean, min, prod, range, sample, sum

Optimasi adalah suatu proses untuk mencari kondisi yang optimum atau kondisi paling menguntungkan. Optimasi dapat berupa nilai maksimum ataupun nilai minimum tergantung pada penggunaannya.

Jika berkaitan dengan masalah keuntungan, maka keadaan optimum adalah keadaan yang memberikan keuntungan maksimum (maksimasi). Jika berkaitan dengan masalah pengeluaran/pengorbanan, maka keadaan optimum adalah keadaan yang memberikan pengeluaran/pengorbanan minimum (minimasi).

Fungsi yang akan diminimumkan atau dimaksimumkan disebut fungsi objektif (objective function). Secara umum, mencari nilai maksimum dan minimum dari suatu fungsi adalah dengan mencari titik-titik kritis dari fungsi, kemudian mensubstitusikan titik kritis tersebut ke turunan pertama dari fungsi. Nilai terbesar adalah nilai maksimum dan nilai terkecil adalah nilai minimum dari fungsi tersebut.

Nilai maksimum dan minimum ada yang bersifat global dan lokal. Secara umum, suatu nilai optimum merujuk pada nilai yang bersifat global yaitu nilai maksimum dan minimum dalam suatu fungsi di dalam suatu selang. Namun bisa jadi dalam selang tersebut, terdapat titik-titik kritis lainnya yang membuat nilai menjadi maksimum dan minimum di dalam bagian dari selang. Itulah yang disebut nilai maksimum dan minimum lokal.

Optimasi Numerik Metode pendugaan statistik umumnya membutuhkan nilai maksimum atau minimum seperti : * Metode Kuadrat Terkecil: Meminimumkan fungsi jumlah kuadrat sisaan * Metode Kemungkinan Maksimum: Memaksimumkan fungsi kemungkinan (likelihood)

Optimasi dibagi menjadi dua yaitu Optimasi Satu Variabel dan Optimasi Banyak Variabel

Optimasi Satu Variabel Optimasi satu variabel digunakan saat fungsi objektif hanya memiliki 1 variabel penjelas.

Metode yang digunakan :

• Metode golden section • Metode Newton

Metode Golden Section Golden section merupakan salah satu cara atau metode optimasi numerik yang dapat diterapkan untuk fungsi yang bersifat unimodal.

Ide dasar metode ini adalah memanfaatkan nilai yang lama sebagai nilai yang baru, secara iteratif. Sebagai akibatnya, rentang/ interval awal variabel yang dipilih semakin lama akan semakin menyempit, karena ada sebagian sub-interval variabel yang dieliminasi, hingga diperoleh tingkat konvergensi yang diinginkan.

Algoritma Golden Section (Untuk nilai minimum)

Tentukan selang [a, b] yang memuat nilai minimum. Dapat dilihat dengan menggunakan grafik fungsi

Perkecil selang menjadi [a’, b’] yang memuat nilai minimum atau maksimum. Kriteria pemilihan a’ dan b’ adalah nilai diantara a dan b, sesuai dengan golden ratio

a’ = a + d b’ = a - d

dengan d = R (b-a)

Tentukan x1 dan x2 x1 = b - (b-a)/R x2 = a + (b-a)/R

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]

Iterasi sampai |b’-a’| lebih kecil dari nilai tolerans

Catatan : Untuk nilai maksimum, gunakan algoritma kebalikannya.

Contoh :

Mencari nilai minimum dari f(x)=|x−3.5|+(x−2)2

f <- function (x) { abs(x -3.5) + (x -2) ^2}
curve(f)

Fungsi Max mencari nilai maksimum. Fungsi Min mencari nilai minimum. Fungsi Sum menghitung jumlah argumennya.

Mencari nilai maksimum dari f(x)=2sinx−x210 di dalam interval 0 sampai 4

g <- function (x) { 2 * sin(x) - (x^2/10)}
curve(g)

Optimasi Banyak Variabel Algoritma Nelder-Mead adalah salah satu metode optimasi untuk fungsi yang memiliki lebih dari satu peubah.

R telah menyiapkan fungsi optimasi dengan salah satu algoritmanya adalah Nelder-Mead: * optimize atau optimise (satu peubah) * optim (lebih dari satu peubah)

Fungsi Optimize Digunakan untuk mendapatkan nilai minimum dari suatu fungsi dengan satu peubah.

Contoh : Mencari nilai maksimum dan minimum dari suatu fungsi f(x)=sin(x)+sin(2∗x)+cos(3∗x)

f3 <-function(x) sin(x) + sin(2*x) + cos(3*x)
curve(f3, from = 0, to = 2*pi)

optimize(f3, interval = c(0, 2*pi)) #minimum lokal
## $minimum
## [1] 3.033129
## 
## $objective
## [1] -1.054505
optimize(f3, interval = c(4, 2*pi)) #minimum global
## $minimum
## [1] 5.273383
## 
## $objective
## [1] -2.741405
optimize(f3, interval = c(0, 2*pi), maximum = T) #maksimum lokal
## $maximum
## [1] 4.0598
## 
## $objective
## [1] 1.096473
optimize(f3, interval = c(0, 1.5), maximum = T) #maksimum global
## $maximum
## [1] 0.3323289
## 
## $objective
## [1] 1.485871

Fungsi Optim Untuk mencari nilai minimum dari fungsi lebih dari satu peubah.

Contoh : Mencari nilai x1 dan x2 yang membuat f(x1,x2)=100(x2−x12)2+(1−x1)2

fr <- function (x) {
  x1 <- x[1]
  x2 <- x[2]
  100 * (x2 - x1 ^2) ^2
  (1 - x1)^2
}

optim (c( -1.2 ,1) , fr)
## $par
## [1]  1.0002837 -0.1642825
## 
## $value
## [1] 8.050091e-08
## 
## $counts
## function gradient 
##       47       NA 
## 
## $convergence
## [1] 0
## 
## $message
## NULL

Optimasi Fungsi Polinomial Mencari nilai minimum dari

f(x)=4x4−2x3−3x

f4 <-function(x) 4*x^4-2*x^3-3*x
curve(f4, from = -1, to = 1.5)

optim(par = c(-0.5), fn= f4)
## Warning in optim(par = c(-0.5), fn = f4): one-dimensional optimization by Nelder-Mead is unreliable:
## use "Brent" or optimize() directly
## $par
## [1] 0.728418
## 
## $value
## [1] -1.832126
## 
## $counts
## function gradient 
##       36       NA 
## 
## $convergence
## [1] 0
## 
## $message
## NULL

Optimasi dalam Regresi Linier Penerapan optimisasi dalam regresi linier adalah dalam pendugaan parameter dengan metode kuadrat terkecil dan MLE (Maximum Likelihood Estimation).

Metode Kuadrat Terkecil Contoh :

Lakukan pendugaan parameter regresi dengan meminimumkan jumlah kuadrat galat(residual sum of square) dari data berikut! Kemudian bandingkan hasilnya dengan output dari fungsi lm!

data5=data.frame(x=c(1,2,3,4,5,6),
y=c(1,3,5,6,8,12))

JKG <-function(data, b) {
  with(data, sum((b[1]+b[2]*x-y)^2))
}

hasil1 <-optim(par = c(1,1), fn = JKG, data = data5)
hasil2 <-lm(y~x, data = data5)

plot(data5)
abline(hasil1$par,col=4)

hasil1$par
## [1] -1.266302  2.028449
hasil2$coefficients
## (Intercept)           x 
##   -1.266667    2.028571
hasil1$value
## [1] 2.819048
sum(hasil2$residuals^2)
## [1] 2.819048

Maximum Likelihood Estimator (MLE) Metode ini merupakan metode yang paling sering digunakan untuk menduga parameter sebaran.

Contoh :

Jika x1,x2,……,xn berasal dari peubah acak X ~N(μ ;σ ), tentukan penduga μ dan σ menggunakan MLE.

negloglik <- function (para ,xd){
    nilai <- -1*sum ( dnorm (xd , mean = para [1] , sd= para [2] , log= TRUE ))
    return ( nilai )
    }


x <- rnorm (10 ,2 ,5)
hasil <- optim (c(1 ,1) ,negloglik ,xd=x)
hasil $par
## [1] 2.201318 6.118786
c( mean (x),sd(x)) # pembanding
## [1] 2.202515 6.448731

Untuk penduga parameter dengan MLE, selain dapat menggunakan fungsi optim(), R juga menyiapkan fungsi mle() pada package stats4.