Analisis Regresi Logistik untuk Memprediksi Jawaban Responden Exit Poll pada Pilkada Jawa Tengah 2024

Regresi Logistik

Library

library(rcompanion)
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice
library(readxl)
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.4.3
## corrplot 0.95 loaded
library(generalhoslem)
## Loading required package: reshape
## Loading required package: MASS
library(fastDummies)
library(viridis)
## Loading required package: viridisLite
library(tm)
## Loading required package: NLP
## 
## Attaching package: 'NLP'
## The following object is masked from 'package:ggplot2':
## 
##     annotate
library(wordcloud)
## Loading required package: RColorBrewer
library(RColorBrewer)
library(pROC)
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
## 
##     select
## The following object is masked from 'package:reshape':
## 
##     rename
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Data

library(dplyr)
data <- readxl::read_xlsx("C:/Users/ACER/Documents/Magang/Laporan Individu Magang/Untitled2.xlsx", sheet=2)
datum <- data %>% select('Pilihan', 'Gender', 'Agama', 'Suku', 'Pendidikan', 'Partai', 'Like_1', 'Like_2')

Peubah Dummy

datum$Pilihan <- as.factor(datum$Pilihan)
datum$Gender <- as.factor(datum$Gender)
datum$Agama <- as.factor(datum$Agama)
datum$Suku <- as.factor(datum$Suku)
datum$Pendidikan <- as.factor(datum$Pendidikan)
datum$Partai <- as.factor(datum$Partai)
head(datum,10)
## # A tibble: 10 × 8
##    Pilihan      Gender    Agama   Suku  Pendidikan  Partai      Like_1 Like_2
##    <fct>        <fct>     <fct>   <fct> <fct>       <fct>        <dbl>  <dbl>
##  1 Ahmad Taj    Laki-Laki Islam   Jawa  Di bawahnya PDIP/Hanura      4      4
##  2 Ahmad Taj    Perempuan Islam   Jawa  SLTA/S1/S2  PDIP/Hanura      4      2
##  3 Ahmad Taj    Laki-Laki Kristen Jawa  Di bawahnya Lainnya          4      2
##  4 Ahmad Taj    Perempuan Islam   Jawa  SLTA/S1/S2  Lainnya          4      2
##  5 Ahmad Taj    Laki-Laki Islam   Jawa  SLTA/S1/S2  Lainnya          4      2
##  6 Ahmad Taj    Laki-Laki Islam   Jawa  SLTA/S1/S2  Lainnya          4      4
##  7 Andika Hendi Perempuan Islam   Jawa  Di bawahnya PDIP/Hanura      2     12
##  8 Andika Hendi Perempuan Islam   Jawa  Di bawahnya PDIP/Hanura      3      6
##  9 Ahmad Taj    Laki-Laki Islam   Jawa  SLTA/S1/S2  Lainnya          4      4
## 10 Andika Hendi Laki-Laki Islam   Jawa  SLTA/S1/S2  PDIP/Hanura      2      5

Splitting Data

set.seed(123)
N <- 1733
Acak <- sample(N,N*20/100,  F)
trl <- datum[-Acak, ]
testrl <- datum[Acak, ]

Pemodelan

logmod = glm(Pilihan~., data=trl, family = binomial(link="logit"))
summary(logmod)
## 
## Call:
## glm(formula = Pilihan ~ ., family = binomial(link = "logit"), 
##     data = trl)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           -0.84267    0.22569  -3.734 0.000189 ***
## GenderPerempuan       -0.45719    0.15701  -2.912 0.003594 ** 
## AgamaKristen           0.45185    0.57708   0.783 0.433625    
## AgamaLainnya          -7.30486  535.41133  -0.014 0.989114    
## SukuLainnya           -5.73418   42.54105  -0.135 0.892777    
## SukuSunda              1.13895    0.59418   1.917 0.055255 .  
## PendidikanSLTA/S1/S2   0.23510    0.15872   1.481 0.138543    
## PartaiPDIP/Hanura      1.16324    0.17831   6.524 6.85e-11 ***
## Like_1                -1.12194    0.08098 -13.855  < 2e-16 ***
## Like_2                 1.21751    0.07942  15.330  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1864.6  on 1386  degrees of freedom
## Residual deviance: 1017.8  on 1377  degrees of freedom
## AIC: 1037.8
## 
## Number of Fisher Scoring iterations: 12
# Membuat model kosong (hanya intercept)
model_kosong <- glm(Pilihan ~ 1, data = trl, family = binomial(link = "logit"))

# Membandingkan model penuh dan model kosong
anova_g <- anova(model_kosong, logmod, test = "Chisq")
print(anova_g)
## Analysis of Deviance Table
## 
## Model 1: Pilihan ~ 1
## Model 2: Pilihan ~ Gender + Agama + Suku + Pendidikan + Partai + Like_1 + 
##     Like_2
##   Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
## 1      1386     1864.6                          
## 2      1377     1017.8  9    846.8 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Menampilkan p-value
p_value <- anova_g$`Pr(>Chi)`[2]
if(p_value < 0.05){
  cat("Hasil: Uji G menunjukkan model regresi signifikan secara simultan (p-value =", round(p_value, 4), ").\n")
} else {
  cat("Hasil: Model regresi tidak signifikan secara simultan (p-value =", round(p_value, 4), ").\n")
}
## Hasil: Uji G menunjukkan model regresi signifikan secara simultan (p-value = 0 ).

Uji Simultan

nagelkerke(logmod)
## $Models
##                                                           
## Model: "glm, Pilihan ~ ., binomial(link = \"logit\"), trl"
## Null:  "glm, Pilihan ~ 1, binomial(link = \"logit\"), trl"
## 
## $Pseudo.R.squared.for.model.vs.null
##                              Pseudo.R.squared
## McFadden                             0.454137
## Cox and Snell (ML)                   0.456936
## Nagelkerke (Cragg and Uhler)         0.618069
## 
## $Likelihood.ratio.test
##  Df.diff LogLik.diff Chisq     p.value
##       -9      -423.4 846.8 1.7814e-176
## 
## $Number.of.observations
##            
## Model: 1387
## Null:  1387
## 
## $Messages
## [1] "Note: For models fit with REML, these statistics are based on refitting with ML"
## 
## $Warnings
## [1] "None"

p-value < 0.05 maka ada peubah yg berpengaruh

Uji Parsial

library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
Anova(logmod, type="II", test="Wald")
## Analysis of Deviance Table (Type II tests)
## 
## Response: Pilihan
##            Df    Chisq Pr(>Chisq)    
## Gender      1   8.4784   0.003594 ** 
## Agama       2   0.6133   0.735915    
## Suku        2   3.6922   0.157855    
## Pendidikan  1   2.1941   0.138543    
## Partai      1  42.5608  6.852e-11 ***
## Like_1      1 191.9527  < 2.2e-16 ***
## Like_2      1 235.0165  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Untuk uji simultan didapatkan p-value untuk peubah INCUMBENT, T5, INCUMBENT PE > 0,05. Artinya peubah tersebut tidak berpengaruh signifikan terhadap model. Peubah PCTKURSI berpengaruh signifikan

Prediksi

predi <- predict(logmod, newdata = testrl[,-1], type = "response")
predi
##            1            2            3            4            5            6 
## 9.234056e-01 2.854538e-01 7.520201e-04 9.437585e-01 9.234056e-01 1.911139e-01 
##            7            8            9           10           11           12 
## 2.409062e-03 1.905308e-03 1.828648e-01 3.868961e-01 9.963771e-01 7.864321e-03 
##           13           14           15           16           17           18 
## 7.361012e-03 9.781749e-01 7.186874e-01 3.147422e-01 5.279173e-05 6.296291e-08 
##           19           20           21           22           23           24 
## 5.611110e-01 3.381061e-02 3.868961e-01 9.333538e-01 9.954213e-01 3.868961e-01 
##           25           26           27           28           29           30 
## 3.868961e-01 1.828648e-01 6.296291e-08 4.204680e-01 2.854538e-01 5.238162e-02 
##           31           32           33           34           35           36 
## 9.996816e-01 2.854538e-01 4.439171e-01 1.007114e-01 4.439171e-01 8.869438e-01 
##           37           38           39           40           41           42 
## 6.535717e-02 9.878637e-01 9.965678e-01 1.421105e-02 8.453100e-01 2.450186e-04 
##           43           44           45           46           47           48 
## 1.007114e-01 2.854538e-01 9.996065e-01 4.439171e-01 5.509151e-01 7.969935e-01 
##           49           50           51           52           53           54 
## 8.675039e-01 3.868961e-01 9.975877e-01 6.896394e-01 8.093265e-03 6.596102e-01 
##           55           56           57           58           59           60 
## 3.741047e-01 6.179300e-01 9.878637e-01 4.148064e-01 5.509151e-01 9.860718e-01 
##           61           62           63           64           65           66 
## 2.226477e-02 1.704679e-01 6.591933e-05 2.854538e-01 4.439171e-01 4.204680e-01 
##           67           68           69           70           71           72 
## 9.963771e-01 3.741047e-01 9.860718e-01 2.854538e-01 1.007114e-01 4.439171e-01 
##           73           74           75           76           77           78 
## 9.860718e-01 1.911139e-01 2.481109e-01 2.854538e-01 5.238162e-02 6.272300e-02 
##           79           80           81           82           83           84 
## 1.768262e-02 2.063259e-01 5.269046e-01 5.827814e-03 2.318187e-02 1.895453e-05 
##           85           86           87           88           89           90 
## 1.768262e-02 7.295280e-01 3.357106e-01 2.682870e-02 5.238162e-02 6.179300e-01 
##           91           92           93           94           95           96 
## 9.584285e-01 6.535717e-02 6.252086e-01 6.688219e-01 3.357106e-01 8.186362e-01 
##           97           98           99          100          101          102 
## 3.357106e-01 2.444310e-02 2.854538e-01 5.827814e-03 5.827814e-03 9.999189e-01 
##          103          104          105          106          107          108 
## 6.535717e-02 2.063259e-01 5.827814e-03 8.493132e-01 1.573754e-01 2.224159e-01 
##          109          110          111          112          113          114 
## 7.603710e-01 1.480144e-02 5.238162e-02 1.768262e-02 3.644848e-01 4.439171e-01 
##          115          116          117          118          119          120 
## 1.327909e-03 1.075437e-06 6.179300e-01 3.357106e-01 1.573754e-01 1.151173e-01 
##          121          122          123          124          125          126 
## 3.933845e-04 8.721797e-01 4.305644e-01 5.851363e-01 1.165911e-02 3.973725e-01 
##          127          128          129          130          131          132 
## 5.238162e-02 2.854538e-01 7.857845e-04 1.704679e-01 3.868961e-01 3.644848e-01 
##          133          134          135          136          137          138 
## 2.745146e-01 2.663658e-01 7.361012e-03 6.081322e-01 9.654996e-01 2.854538e-01 
##          139          140          141          142          143          144 
## 7.102619e-01 1.767736e-01 1.573754e-01 4.439171e-01 4.425715e-06 1.561401e-02 
##          145          146          147          148          149          150 
## 1.911139e-01 6.306579e-01 6.535717e-02 3.707572e-02 3.381061e-02 6.081322e-01 
##          151          152          153          154          155          156 
## 1.126728e-02 6.688219e-01 2.715695e-05 9.486214e-01 7.295280e-01 9.584285e-01 
##          157          158          159          160          161          162 
## 3.868961e-01 4.239170e-02 6.596102e-01 5.827814e-03 2.095989e-03 8.453100e-01 
##          163          164          165          166          167          168 
## 9.954213e-01 3.868961e-01 3.868961e-01 8.922724e-01 3.868961e-01 1.151173e-01 
##          169          170          171          172          173          174 
## 1.301110e-01 9.967062e-01 7.186874e-01 6.807304e-01 4.644565e-02 1.238327e-02 
##          175          176          177          178          179          180 
## 4.239170e-02 9.912096e-04 1.451126e-01 4.439171e-01 9.358776e-01 6.807304e-01 
##          181          182          183          184          185          186 
## 2.854538e-01 6.535717e-02 6.596102e-01 1.911139e-01 3.520089e-01 9.878637e-01 
##          187          188          189          190          191          192 
## 4.672588e-03 9.011206e-01 8.093265e-03 9.999472e-01 5.509151e-01 7.969935e-01 
##          193          194          195          196          197          198 
## 3.868961e-01 8.323964e-01 4.239170e-02 5.611110e-01 6.688219e-01 2.455721e-07 
##          199          200          201          202          203          204 
## 1.057341e-01 4.439171e-01 8.522740e-01 1.238327e-02 2.854538e-01 6.591933e-05 
##          205          206          207          208          209          210 
## 3.381061e-02 7.295280e-01 6.023404e-04 6.473220e-01 3.697267e-03 1.193921e-01 
##          211          212          213          214          215          216 
## 3.357106e-01 1.841454e-02 9.271568e-01 1.561401e-02 1.238327e-02 1.557333e-02 
##          217          218          219          220          221          222 
## 5.202452e-03 6.081322e-01 3.381061e-02 9.742613e-01 3.868961e-01 3.381061e-02 
##          223          224          225          226          227          228 
## 1.942155e-02 1.413157e-01 2.224159e-01 8.922724e-01 2.854538e-01 1.126728e-02 
##          229          230          231          232          233          234 
## 8.721797e-01 4.439171e-01 9.384652e-01 5.086670e-02 1.451126e-01 2.558961e-01 
##          235          236          237          238          239          240 
## 5.611110e-01 3.868961e-01 8.120188e-01 9.234056e-01 9.954213e-01 5.570765e-01 
##          241          242          243          244          245          246 
## 4.439171e-01 9.584285e-01 5.611110e-01 9.584285e-01 9.929438e-01 9.854930e-01 
##          247          248          249          250          251          252 
## 3.856312e-01 7.144348e-02 1.057341e-01 7.186874e-01 6.807304e-01 9.011206e-01 
##          253          254          255          256          257          258 
## 3.707572e-02 1.301110e-01 2.224159e-01 5.238162e-02 5.238162e-02 5.611110e-01 
##          259          260          261          262          263          264 
## 8.975357e-07 7.144348e-02 4.239170e-02 9.953093e-01 6.688219e-01 4.239170e-02 
##          265          266          267          268          269          270 
## 3.357106e-01 9.274441e-01 4.439171e-01 6.688219e-01 7.361012e-03 2.945029e-01 
##          271          272          273          274          275          276 
## 3.868961e-01 3.868961e-01 9.703177e-02 1.151173e-01 3.868961e-01 3.933845e-04 
##          277          278          279          280          281          282 
## 6.272300e-02 3.520089e-01 3.381061e-02 2.245124e-06 7.361012e-03 4.426004e-01 
##          283          284          285          286          287          288 
## 7.902288e-01 3.933845e-04 2.854538e-01 1.841454e-02 2.854538e-01 1.573754e-01 
##          289          290          291          292          293          294 
## 1.767736e-01 8.265547e-01 1.911139e-01 1.335418e-04 6.688219e-01 6.378362e-01 
##          295          296          297          298          299          300 
## 4.672588e-03 4.644565e-02 5.238162e-02 5.238162e-02 4.978687e-01 3.357106e-01 
##          301          302          303          304          305          306 
## 6.989678e-01 5.238162e-02 6.179300e-01 4.439171e-01 3.357106e-01 2.854538e-01 
##          307          308          309          310          311          312 
## 5.611110e-01 4.228426e-02 9.873253e-01 3.967382e-01 5.271722e-01 9.703177e-02 
##          313          314          315          316          317          318 
## 3.357106e-01 5.611110e-01 4.439171e-01 1.734115e-01 7.187854e-07 9.358776e-01 
##          319          320          321          322          323          324 
## 1.301110e-01 1.837277e-09 7.295280e-01 9.970967e-01 8.827354e-01 5.733372e-02 
##          325          326          327          328          329          330 
## 3.357106e-01 8.975357e-07 6.596102e-01 4.064289e-02 3.357106e-01 9.954213e-01 
##          331          332          333          334          335          336 
## 8.522740e-01 5.744282e-01 9.501089e-01 9.999999e-01 3.037566e-03 2.444310e-02 
##          337          338          339          340          341          342 
## 6.596102e-01 9.298976e-01 6.688219e-01 8.398317e-01 5.744282e-01 9.526194e-01 
##          343          344          345          346 
## 6.179300e-01 4.672588e-03 9.584285e-01 4.439171e-01
library(ResourceSelection)
## Warning: package 'ResourceSelection' was built under R version 4.4.3
## ResourceSelection 0.3-6   2023-06-27
# Konversi label aktual ke numerik
testrl$Pilihan_numeric <- as.numeric(testrl$Pilihan) - 1

# Uji Hosmer-Lemeshow
hoslem.test(testrl$Pilihan_numeric, predi, g = 10)
## 
##  Hosmer and Lemeshow goodness of fit (GOF) test
## 
## data:  testrl$Pilihan_numeric, predi
## X-squared = 143.16, df = 8, p-value < 2.2e-16
prek <- ifelse(predi > 0.5, 'Andika Hendi', 'Ahmad Taj')
prek
##              1              2              3              4              5 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" "Andika Hendi" 
##              6              7              8              9             10 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             11             12             13             14             15 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" "Andika Hendi" 
##             16             17             18             19             20 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##             21             22             23             24             25 
##    "Ahmad Taj" "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##             26             27             28             29             30 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             31             32             33             34             35 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             36             37             38             39             40 
## "Andika Hendi"    "Ahmad Taj" "Andika Hendi" "Andika Hendi"    "Ahmad Taj" 
##             41             42             43             44             45 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##             46             47             48             49             50 
##    "Ahmad Taj" "Andika Hendi" "Andika Hendi" "Andika Hendi"    "Ahmad Taj" 
##             51             52             53             54             55 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##             56             57             58             59             60 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj" "Andika Hendi" "Andika Hendi" 
##             61             62             63             64             65 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             66             67             68             69             70 
##    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##             71             72             73             74             75 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##             76             77             78             79             80 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             81             82             83             84             85 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             86             87             88             89             90 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##             91             92             93             94             95 
## "Andika Hendi"    "Ahmad Taj" "Andika Hendi" "Andika Hendi"    "Ahmad Taj" 
##             96             97             98             99            100 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            101            102            103            104            105 
##    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            106            107            108            109            110 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##            111            112            113            114            115 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            116            117            118            119            120 
##    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            121            122            123            124            125 
##    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##            126            127            128            129            130 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            131            132            133            134            135 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            136            137            138            139            140 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##            141            142            143            144            145 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            146            147            148            149            150 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##            151            152            153            154            155 
##    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi" "Andika Hendi" 
##            156            157            158            159            160 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##            161            162            163            164            165 
##    "Ahmad Taj" "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            166            167            168            169            170 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##            171            172            173            174            175 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            176            177            178            179            180 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" "Andika Hendi" 
##            181            182            183            184            185 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            186            187            188            189            190 
## "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi" 
##            191            192            193            194            195 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##            196            197            198            199            200 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            201            202            203            204            205 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            206            207            208            209            210 
## "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            211            212            213            214            215 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            216            217            218            219            220 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi" 
##            221            222            223            224            225 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            226            227            228            229            230 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##            231            232            233            234            235 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##            236            237            238            239            240 
##    "Ahmad Taj" "Andika Hendi" "Andika Hendi" "Andika Hendi" "Andika Hendi" 
##            241            242            243            244            245 
##    "Ahmad Taj" "Andika Hendi" "Andika Hendi" "Andika Hendi" "Andika Hendi" 
##            246            247            248            249            250 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##            251            252            253            254            255 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            256            257            258            259            260 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            261            262            263            264            265 
##    "Ahmad Taj" "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            266            267            268            269            270 
## "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            271            272            273            274            275 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            276            277            278            279            280 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            281            282            283            284            285 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            286            287            288            289            290 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##            291            292            293            294            295 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" "Andika Hendi"    "Ahmad Taj" 
##            296            297            298            299            300 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            301            302            303            304            305 
## "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            306            307            308            309            310 
##    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##            311            312            313            314            315 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##            316            317            318            319            320 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            321            322            323            324            325 
## "Andika Hendi" "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            326            327            328            329            330 
##    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##            331            332            333            334            335 
## "Andika Hendi" "Andika Hendi" "Andika Hendi" "Andika Hendi"    "Ahmad Taj" 
##            336            337            338            339            340 
##    "Ahmad Taj" "Andika Hendi" "Andika Hendi" "Andika Hendi" "Andika Hendi" 
##            341            342            343            344            345 
## "Andika Hendi" "Andika Hendi" "Andika Hendi"    "Ahmad Taj" "Andika Hendi" 
##            346 
##    "Ahmad Taj"
library(caret)
conf_matrix <- confusionMatrix(factor(prek), testrl$Pilihan)
print(conf_matrix)
## Confusion Matrix and Statistics
## 
##               Reference
## Prediction     Ahmad Taj Andika Hendi
##   Ahmad Taj          181           42
##   Andika Hendi        25           98
##                                           
##                Accuracy : 0.8064          
##                  95% CI : (0.7607, 0.8467)
##     No Information Rate : 0.5954          
##     P-Value [Acc > NIR] : < 2e-16         
##                                           
##                   Kappa : 0.5901          
##                                           
##  Mcnemar's Test P-Value : 0.05062         
##                                           
##             Sensitivity : 0.8786          
##             Specificity : 0.7000          
##          Pos Pred Value : 0.8117          
##          Neg Pred Value : 0.7967          
##              Prevalence : 0.5954          
##          Detection Rate : 0.5231          
##    Detection Prevalence : 0.6445          
##       Balanced Accuracy : 0.7893          
##                                           
##        'Positive' Class : Ahmad Taj       
## 

ROC

library(pROC)   
roc_curve <- roc(testrl$Pilihan, predi)
## Setting levels: control = Ahmad Taj, case = Andika Hendi
## Setting direction: controls < cases
auc <- auc(roc_curve)
plot(roc_curve, col = "lightblue", main = paste("Kurva ROC (AUC =", round(auc, 2), ")", sep = ""), col.main = "pink", lwd = 2)
legend("bottomright", legend = paste("AUC =", round(auc, 2)), col = "darkred", lty = 1, cex = 0.8)

# Membaca data baru dari sheet ke-3
data_baru <- readxl::read_xlsx("C:/Users/ACER/Documents/Magang/Laporan Individu Magang/Untitled2.xlsx", sheet=3)

# Menyeleksi peubah sesuai dengan model
data_baru <- data_baru %>% select('Gender', 'Agama', 'Suku', 'Pendidikan', 'Partai', 'Like_1', 'Like_2')
# Pastikan peubah memiliki tipe data yang sama dengan model
data_baru$Gender <- as.factor(data_baru$Gender)
data_baru$Agama <- as.factor(data_baru$Agama)
data_baru$Suku <- as.factor(data_baru$Suku)
data_baru$Pendidikan <- as.factor(data_baru$Pendidikan)
data_baru$Partai <- as.factor(data_baru$Partai)
# Prediksi probabilitas
prediksi_prob <- predict(logmod, newdata = data_baru, type = "response")

# Prediksi Pilihan berdasarkan probabilitas (>0.5 untuk 'Andika Hendi', <=0.5 untuk 'Ahmad Taj')
prediksi_pilihan <- ifelse(prediksi_prob > 0.5, 'Andika Hendi', 'Ahmad Taj')

# Menampilkan hasil prediksi
prediksi_pilihan
##              1              2              3              4              5 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi" 
##              6              7              8              9             10 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             11             12             13             14             15 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##             16             17             18             19             20 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##             21             22             23             24             25 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##             26             27             28             29             30 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             31             32             33             34             35 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##             36             37             38             39             40 
##    "Ahmad Taj" "Andika Hendi" "Andika Hendi" "Andika Hendi"    "Ahmad Taj" 
##             41             42             43             44             45 
## "Andika Hendi"    "Ahmad Taj" "Andika Hendi" "Andika Hendi"    "Ahmad Taj" 
##             46             47             48             49             50 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" "Andika Hendi" "Andika Hendi" 
##             51             52             53             54             55 
## "Andika Hendi"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##             56             57             58             59             60 
##    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             61             62             63             64             65 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             66             67             68             69             70 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             71             72             73             74             75 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##             76             77             78             79             80 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##             81             82             83             84             85 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi" 
##             86             87             88             89             90 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##             91             92             93             94             95 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##             96             97             98             99            100 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            101            102            103            104            105 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" 
##            106            107            108            109            110 
## "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" 
##            111            112            113            114            115 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi" 
##            116            117            118            119            120 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            121            122            123            124            125 
##    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj"    "Ahmad Taj" 
##            126            127            128            129            130 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            131            132            133            134            135 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj" "Andika Hendi" 
##            136            137            138            139            140 
##    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            141            142            143            144            145 
## "Andika Hendi" "Andika Hendi" "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" 
##            146            147            148            149            150 
## "Andika Hendi"    "Ahmad Taj"    "Ahmad Taj" "Andika Hendi" "Andika Hendi" 
##            151 
##    "Ahmad Taj"
# Menyimpan hasil prediksi ke file Excel baru
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 4.4.3
data_hasil <- data_baru %>% mutate(Prediksi_Pilihan = prediksi_pilihan)
write.xlsx(data_hasil, "C:/Users/ACER/Documents/Magang/Laporan Individu Magang/Prediksi_Pilihan_Sheet3.xlsx", sheetName = "Hasil Prediksi Rahasia")