library(readr)
data <- read.csv("C:/Users/LENOVO/OneDrive/Documents/saham_idx.csv")
data
##            t Periode   Saham
## 1  11/1/2020       1  883.06
## 2  12/1/2020       2  934.89
## 3   1/1/2021       3  911.98
## 4   2/1/2021       4  944.75
## 5   3/1/2021       5  902.79
## 6   4/1/2021       6  893.73
## 7   5/1/2021       7  888.65
## 8   6/1/2021       8  844.85
## 9   7/1/2021       9  823.04
## 10  8/1/2021      10  866.49
## 11  9/1/2021      11  894.68
## 12 10/1/2021      12  952.59
## 13 11/1/2021      13  930.98
## 14 12/1/2021      14  931.41
## 15  1/1/2022      15  939.63
## 16  2/1/2022      16  985.54
## 17  3/1/2022      17 1022.99
## 18  4/1/2022      18 1085.44
## 19  5/1/2022      19 1056.78
## 20  6/1/2022      20  991.94
## 21  7/1/2022      21  978.63
## 22  8/1/2022      22 1022.82
## 23  9/1/2022      23 1011.48
## 24 10/1/2022      24 1014.12
## 25 11/1/2022      25 1008.28
## 26 12/1/2022      26  937.18
## 27  1/1/2023      27  936.49
## 28  2/1/2023      28  942.97
## 29  3/1/2023      29  937.68
## 30  4/1/2023      30  961.75
## 31  5/1/2023      31  949.67
## 32  6/1/2023      32  954.24
x <- data$Periode
y <- data$Saham
model<-lm(y~x)
plot(model$residuals)

plot(model,1)

plot(model,2)

library(wavelets)
wav <- function(wave, nlv){
    mra_value <- mra(y, filter = wave, n.levels = nlv)
    
    # MSE
    pendekatan <-  c(1:(nlv-1))
    mse <-  NULL
    for(i in (nlv-1):1){
      m = unlist(mra_value@S[i])
      mu = mean((y-m)^2)
      mse = c(mse,mu)
    }
    mse_value = data.frame(pendekatan, mse)
    cat('===============',wave,'=============== \n')
    print(mse_value)
    cat('Untuk wavelet',wave,
        'nilai mse terkecilnya =',min(mse_value$mse),
        'pada pendekatan ke-',which.min(mse_value$mse),'\n')
    
    # Grafik
    plot(x,y,xlab = 'Periode',ylab = 'Saham', main = wave,type = 'o')
    lines(x,mra_value@S$S4, col = 'green')
    lines(x,mra_value@S$S3, col = 'magenta')
    lines(x,mra_value@S$S2, col = 'blue')
    lines(x,mra_value@S$S1, col = 'red')
    legend('topleft',
           legend = c('Pendekatan 1','Pendekatan 2','Pendekatan 3','Pendekatan 4'),
           fill = c('green','magenta','blue','red'))
}
nlv = log(length(y),2)
wave<- c("haar", "d4", "c6", "la8", "bl14")
tugas <- function(){
  for(i in wave){
    wav(i,nlv)
  }
}
tugas()
## =============== haar =============== 
##   pendekatan       mse
## 1          1 1812.5989
## 2          2 1180.9821
## 3          3  785.6744
## 4          4  451.1179
## Untuk wavelet haar nilai mse terkecilnya = 451.1179 pada pendekatan ke- 4

## =============== d4 =============== 
##   pendekatan       mse
## 1          1 1242.4494
## 2          2  632.8797
## 3          3  593.6188
## 4          4  301.7571
## Untuk wavelet d4 nilai mse terkecilnya = 301.7571 pada pendekatan ke- 4

## =============== c6 =============== 
##   pendekatan       mse
## 1          1 1734.7933
## 2          2  949.5436
## 3          3  723.3291
## 4          4  269.4271
## Untuk wavelet c6 nilai mse terkecilnya = 269.4271 pada pendekatan ke- 4

## =============== la8 =============== 
##   pendekatan       mse
## 1          1 1300.2082
## 2          2  987.9061
## 3          3  693.2655
## 4          4  238.6151
## Untuk wavelet la8 nilai mse terkecilnya = 238.6151 pada pendekatan ke- 4

## =============== bl14 =============== 
##   pendekatan       mse
## 1          1 1602.0577
## 2          2 1021.6107
## 3          3  644.2742
## 4          4  174.8934
## Untuk wavelet bl14 nilai mse terkecilnya = 174.8934 pada pendekatan ke- 4

H <- 451.1179
D <- 301.7571
C <- 269.4271
LA <- 238.6151
BL <- 174.8934
wavelet <- c('Haar', 'Daubechies', 'Coiflet', 'Least Asymetric', 'Best Localized')
best_mse <- c(H, D, C, LA, BL)
banding <- data.frame(wavelet,best_mse)
print(banding)
##           wavelet best_mse
## 1            Haar 451.1179
## 2      Daubechies 301.7571
## 3         Coiflet 269.4271
## 4 Least Asymetric 238.6151
## 5  Best Localized 174.8934
cat('Maka model terbaiknya adalah Wavelet',which.min(banding$best_mse),
    'dengan nilai mse sebesar',min(banding$best_mse))
## Maka model terbaiknya adalah Wavelet 5 dengan nilai mse sebesar 174.8934