Data

library(readxl)
Data_Bima <- read_excel("F:/Aaku Kuliah Renaldi/Semester 8 Skripsi/Sintaks R/Data/Data Bima.xlsx", 
    col_types = c("text", "numeric", "numeric", 
       "numeric", "numeric"))
Data_Bima
## # A tibble: 36 x 5
##    Waktu         Y    X1     X2     X3
##    <chr>     <dbl> <dbl>  <dbl>  <dbl>
##  1 43831    0.294  0.75  0      0     
##  2 43862    0.359  0.625 0.0206 0.0281
##  3 <NA>     0.354  0.5   0.685  0.159 
##  4 43922    0.292  0.5   1      0.0772
##  5 Mei-2020 0.188  0.5   0.550  0.170 
##  6 43983    0.138  0.375 0.217  0.140 
##  7 44013    0.0475 0.25  0.398  0.210 
##  8 Agu-2020 0      0.25  0.465  0.274 
##  9 44075    0.0216 0.25  0.523  0.283 
## 10 Okt-2020 0.0259 0.25  0.476  0.296 
## # i 26 more rows
summary(Data_Bima)
##     Waktu                 Y                 X1               X2        
##  Length:36          Min.   :0.00000   Min.   :0.0000   Min.   :0.0000  
##  Class :character   1st Qu.:0.04914   1st Qu.:0.0000   1st Qu.:0.2480  
##  Mode  :character   Median :0.12851   Median :0.0625   Median :0.3163  
##                     Mean   :0.27658   Mean   :0.2118   Mean   :0.3971  
##                     3rd Qu.:0.38499   3rd Qu.:0.3750   3rd Qu.:0.5229  
##                     Max.   :1.00000   Max.   :1.0000   Max.   :1.0000  
##        X3        
##  Min.   :0.0000  
##  1st Qu.:0.2886  
##  Median :0.4428  
##  Mean   :0.4737  
##  3rd Qu.:0.7258  
##  Max.   :1.0000

Kita lanjut melakukan visualisai data yaa

Jangan lupa untuk memanggil library

library(ggplot2)
library(MASS)
library(np)
## Warning: package 'np' was built under R version 4.4.2
## Nonparametric Kernel Methods for Mixed Datatypes (version 0.60-18)
## [vignette("np_faq",package="np") provides answers to frequently asked questions]
## [vignette("np",package="np") an overview]
## [vignette("entropy_np",package="np") an overview of entropy-based methods]
library(mgcv)
## Loading required package: nlme
## This is mgcv 1.9-1. For overview type 'help("mgcv-package")'.
library(randomForest)
## Warning: package 'randomForest' was built under R version 4.4.2
## randomForest 4.7-1.2
## Type rfNews() to see new features/changes/bug fixes.
## 
## Attaching package: 'randomForest'
## The following object is masked from 'package:ggplot2':
## 
##     margin
library(car)
## Loading required package: carData

Untuk melihat sebaran data dengan scatter plot Variabel Y dengan X1

model_linear1<-lm(Y~X1, data=Data_Bima)
plot(Data_Bima$X1, Data_Bima$Y, main="Plot untuk Deteksi Pola", pch=16)
abline(model_linear1, col="red", lwd=2)

Untuk melihat sebaran data dengan scatter plot Variabel Y dengan X2

model_linear1<-lm(Y~X2, data=Data_Bima)
plot(Data_Bima$X2, Data_Bima$Y, main="Plot untuk Deteksi Pola", pch=16)
abline(model_linear1, col="red", lwd=2)

Untuk melihat sebaran data dengan scatter plot Variabel Y dengan X3

model_linear1<-lm(Y~X3, data=Data_Bima)
plot(Data_Bima$X3, Data_Bima$Y, main="Plot untuk Deteksi Pola", pch=16)
abline(model_linear1, col="red", lwd=2)

Menurut babang Bima bahwa dari scatter plot dapat dilihat data tidak tersebar secara linear di garis regresi linear yang ada serta titik-titik data cendrung menyebar secara acak sehingga tidak membentuk suatu pola tertentu

Kernel Gaussian

ker<-function(x)
{
gauss<-(1/sqrt(2*pi))*exp((-1/2)*x^2)
return(gauss)
}

Mencari Bandwidth optimasi MSE

mse_LacalPolynomial_3Var<-function(X1,X2,X3,Y,band,width,p,u,v){
  #X1, X2, X3, dan Y: data; band: bandwidth minimum; width: bandwidth maksimum;
  #p: derajat; u: batas bawah pencarian grid untuk x0; v: lebar jarak pencarian grid untuk x0
X<-cbind(X1,X2,X3)  
n=nrow(X)
x0_1<-seq(min(X1)+u,max(X1)-u,by=v)
x0_2<-seq(min(X2)+u,max(X2)-u,by=v)
x0_3<-seq(min(X3)+u,max(X3)-u,by=v)
x0<-cbind(x0_1,x0_2,x0_3)
z=nrow(x0)
h=c(seq(band,width,by=1))
s=length(h)
for(j1 in 1: length(x0_1)){
  for(j2 in 1: length(x0_2)){
    for(j3 in 1: length(x0_3)){
      a<-matrix(rep(c(x0_1[j1],x0_2[j2],x0_3[j3]),n),ncol = 3, byrow = TRUE)
      X_x0<-X-a
      M=matrix(nrow = (z*s),ncol = 6)
      GCV<-matrix(nrow = s, ncol = 1)
      MSE<-matrix(nrow = s, ncol = 1)
      X_nol<-matrix(rep(x0, s),ncol = 3,byrow = TRUE)
      for (m in 1:s) {
        matrix_X<-matrix(0,ncol = p+1,nrow = n)
        for (i in 1:(p+1)) {
          matrix_X[,i]<-apply(X_x0,1,function(x)x[1]^(i-1)*x[2]^(0)*x[3]^(0))
        }
        W<-matrix(0,ncol = n, nrow = n)
        for (g in 1:n) {
          W[g,g]<-ker(sqrt(sum(X_x0[g,]^2))/h[m])
        }
        inverse<-solve(t(matrix_X)%*%W%*%matrix_X)
        beta<-inverse%*%t(matrix_X)%*%W%*%Y
        m_hat<-matrix_X%*%beta
        H_hat<-matrix_X%*%inverse%*%t(matrix_X)%*%W
        MSE[m]<-(t(Y-m_hat)%*%(Y-m_hat))/n
        I<-matrix(0,ncol = n, nrow = n)
        for (g in 1:n ) {
          I[g,g]<-1
        }
        GCV[m]<-(n^2*MSE[m])/(sum(diag(I-H_hat)))^2
      }
      R<-matrix(c(X_nol[,1],X_nol[,2],X_nol[,3],h, MSE, GCV), nrow = s)
      if(j1==1){
        M[1:s,]=R}
      else{
        M[(((j1-1)*s)+1):(j1*s),]=R}
    }
  }
}
sort.M<-M[order(M[,3]),]
s<-sort.M[1:10,]
cat("running program untuk order=",p+1,"\n")
cat("==============================================","\n")
cat("       x01  x02  x03   h    MSE      GCV   \n")
cat("==============================================","\n")
print(s)
cat("==============================================","\n")
}

mse_LacalPolynomial_3Var(Data_Bima$X1,Data_Bima$X2,Data_Bima$X3,Data_Bima$Y,0.1,10,1,0.1,1)
## running program untuk order= 2 
## ============================================== 
##        x01  x02  x03   h    MSE      GCV   
## ============================================== 
##       [,1] [,2] [,3] [,4]       [,5]       [,6]
##  [1,]  0.1  0.1  0.1  0.1 0.11341393 0.12714918
##  [2,]  0.1  0.1  0.1  1.1 0.07230949 0.08106669
##  [3,]  0.1  0.1  0.1  2.1 0.07107874 0.07968689
##  [4,]  0.1  0.1  0.1  3.1 0.07100011 0.07959874
##  [5,]  0.1  0.1  0.1  4.1 0.07098612 0.07958305
##  [6,]  0.1  0.1  0.1  5.1 0.07098218 0.07957864
##  [7,]  0.1  0.1  0.1  6.1 0.07098074 0.07957702
##  [8,]  0.1  0.1  0.1  7.1 0.07098011 0.07957632
##  [9,]  0.1  0.1  0.1  8.1 0.07097980 0.07957597
## [10,]  0.1  0.1  0.1  9.1 0.07097964 0.07957579
## ==============================================
mse_LacalPolynomial_3Var(Data_Bima$X1,Data_Bima$X2,Data_Bima$X3,Data_Bima$Y,0.1,10,2,0.1,1)
## running program untuk order= 3 
## ============================================== 
##        x01  x02  x03   h    MSE      GCV   
## ============================================== 
##       [,1] [,2] [,3] [,4]       [,5]       [,6]
##  [1,]  0.1  0.1  0.1  0.1 0.11222639 0.13355868
##  [2,]  0.1  0.1  0.1  1.1 0.06676015 0.07945009
##  [3,]  0.1  0.1  0.1  2.1 0.06631773 0.07892358
##  [4,]  0.1  0.1  0.1  3.1 0.06628672 0.07888667
##  [5,]  0.1  0.1  0.1  4.1 0.06628103 0.07887991
##  [6,]  0.1  0.1  0.1  5.1 0.06627942 0.07887798
##  [7,]  0.1  0.1  0.1  6.1 0.06627882 0.07887727
##  [8,]  0.1  0.1  0.1  7.1 0.06627856 0.07887696
##  [9,]  0.1  0.1  0.1  8.1 0.06627843 0.07887681
## [10,]  0.1  0.1  0.1  9.1 0.06627836 0.07887673
## ==============================================
mse_LacalPolynomial_3Var(Data_Bima$X1,Data_Bima$X2,Data_Bima$X3,Data_Bima$Y,0.1,10,3,0.1,1)
## running program untuk order= 4 
## ============================================== 
##        x01  x02  x03   h    MSE      GCV   
## ============================================== 
##       [,1] [,2] [,3] [,4]       [,5]       [,6]
##  [1,]  0.1  0.1  0.1  0.1 1.53641892 1.94453020
##  [2,]  0.1  0.1  0.1  1.1 0.06635554 0.08398123
##  [3,]  0.1  0.1  0.1  2.1 0.06588349 0.08338379
##  [4,]  0.1  0.1  0.1  3.1 0.06585207 0.08334403
##  [5,]  0.1  0.1  0.1  4.1 0.06584638 0.08333682
##  [6,]  0.1  0.1  0.1  5.1 0.06584476 0.08333478
##  [7,]  0.1  0.1  0.1  6.1 0.06584417 0.08333403
##  [8,]  0.1  0.1  0.1  7.1 0.06584391 0.08333370
##  [9,]  0.1  0.1  0.1  8.1 0.06584378 0.08333354
## [10,]  0.1  0.1  0.1  9.1 0.06584371 0.08333345
## ==============================================