options(repos = c(CRAN = "https://cloud.r-project.org"))

install.packages("readxl")
## Installing package into 'C:/Users/Acer/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'readxl' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'readxl'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\Acer\AppData\Local\R\win-library\4.5\00LOCK\readxl\libs\x64\readxl.dll
## to C:\Users\Acer\AppData\Local\R\win-library\4.5\readxl\libs\x64\readxl.dll:
## Permission denied
## Warning: restored 'readxl'
## 
## The downloaded binary packages are in
##  C:\Users\Acer\AppData\Local\Temp\RtmpS8FkHG\downloaded_packages
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.2
data <- read_excel("D:/2025/IZIN BELAJAR/SEMESTER 2/ADK/data diolah.xlsx")
head(data)
## # A tibble: 6 × 8
##   status_pekerjaan  umur jenis_kelamin pendidikan status_perkawinan
##              <dbl> <dbl>         <dbl>      <dbl>             <dbl>
## 1                0     0             1          2                 0
## 2                2     0             0          1                 0
## 3                2     0             0          1                 1
## 4                2     0             0          1                 0
## 5                0     1             1          1                 0
## 6                0     1             0          1                 0
## # ℹ 3 more variables: wilayah_tempat_tinggal <dbl>, pendapatan <dbl>,
## #   hubungan_dengan_krt <dbl>
# Instal dan panggil paket yang diperlukan
install.packages(c("nnet", "dplyr", "car", "ggplot2"))
## Installing packages into 'C:/Users/Acer/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'nnet' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'nnet'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\Acer\AppData\Local\R\win-library\4.5\00LOCK\nnet\libs\x64\nnet.dll to
## C:\Users\Acer\AppData\Local\R\win-library\4.5\nnet\libs\x64\nnet.dll:
## Permission denied
## Warning: restored 'nnet'
## package 'dplyr' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'dplyr'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\Acer\AppData\Local\R\win-library\4.5\00LOCK\dplyr\libs\x64\dplyr.dll
## to C:\Users\Acer\AppData\Local\R\win-library\4.5\dplyr\libs\x64\dplyr.dll:
## Permission denied
## Warning: restored 'dplyr'
## package 'car' successfully unpacked and MD5 sums checked
## package 'ggplot2' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\Acer\AppData\Local\Temp\RtmpS8FkHG\downloaded_packages
library(nnet)     # untuk regresi logistik multinomial
## Warning: package 'nnet' was built under R version 4.5.2
library(dplyr)    # untuk manipulasi data
## Warning: package 'dplyr' was built under R version 4.5.2
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(car)      # untuk VIF (multikolinearitas)
## Warning: package 'car' was built under R version 4.5.2
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.2
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
library(ggplot2)  # opsional, untuk visualisasi
## Warning: package 'ggplot2' was built under R version 4.5.2
# --- Variabel Y: Status Pekerjaan ---
# 0 = informal, 1 = formal, 2 = tidak bekerja
data$status_pekerjaan <- factor(data$status_pekerjaan,
                                levels = c(0, 1, 2),
                                labels = c("Informal", "Formal", "Tidak_Bekerja"))

# --- Variabel X ---

# Jenis Kelamin: 1 = laki-laki, 0 = perempuan
data$jenis_kelamin <- factor(data$jenis_kelamin,
                             levels = c(0, 1),
                             labels = c("Perempuan", "Laki-laki"))

# Pendidikan: 1 = dasar, 2 = menengah, 0 = tinggi
data$pendidikan <- factor(data$pendidikan,
                          levels = c(0, 1, 2),
                          labels = c("Tinggi", "Dasar", "Menengah"))

# Status Perkawinan: 1 = belum kawin, 0 = kawin/pernah kawin
data$status_perkawinan <- factor(data$status_perkawinan,
                                 levels = c(0, 1),
                                 labels = c("Kawin/Pernah_Kawin", "Belum_Kawin"))

# Hubungan dengan KRT: 0 = KRT, 1 = bukan KRT
data$hubungan_dengan_krt <- factor(data$hubungan_dengan_krt,
                            levels = c(0, 1),
                            labels = c("KRT", "Bukan_KRT"))

# Wilayah: 1 = pedesaan, 0 = perkotaan
data$wilayah_tempat_tinggal <- factor(data$wilayah_tempat_tinggal,
                       levels = c(0, 1),
                       labels = c("Perkotaan", "Pedesaan"))

# Umur: 0 = produktif, 1 = tidak produktif
data$umur <- factor(data$umur,
                        levels = c(0, 1),
                        labels = c("Produktif", "Tidak Produktif"))

# Pendapatan: 1 = rendah, 2 = menengah, 0 = tinggi
data$pendapatan <- factor(data$pendapatan,
                          levels = c(0, 1, 2),
                          labels = c("Tinggi", "Rendah", "Menengah"))
# =====================================================
# 4. CEK DATA
# =====================================================
summary(data)
##       status_pekerjaan              umur         jenis_kelamin  
##  Informal     :34408   Produktif      :66055   Perempuan:38589  
##  Formal       :15794   Tidak Produktif: 9013   Laki-laki:36479  
##  Tidak_Bekerja:24866                                            
##     pendidikan             status_perkawinan wilayah_tempat_tinggal
##  Tinggi  : 6634   Kawin/Pernah_Kawin:59463   Perkotaan:39394       
##  Dasar   :47806   Belum_Kawin       :15605   Pedesaan :35674       
##  Menengah:20628                                                    
##     pendapatan    hubungan_dengan_krt
##  Tinggi  : 2106   KRT      :29013    
##  Rendah  :61516   Bukan_KRT:46055    
##  Menengah:11446
model_vif <- lm(as.numeric(pendapatan) ~ as.numeric(umur) + as.numeric(jenis_kelamin) + 
                  as.numeric(pendidikan) + as.numeric(status_perkawinan) + 
                  as.numeric(wilayah_tempat_tinggal) + as.numeric(hubungan_dengan_krt),
                data = data)
vif(model_vif)
##                   as.numeric(umur)          as.numeric(jenis_kelamin) 
##                           1.066580                           1.589119 
##             as.numeric(pendidikan)      as.numeric(status_perkawinan) 
##                           1.037208                           1.365864 
## as.numeric(wilayah_tempat_tinggal)    as.numeric(hubungan_dengan_krt) 
##                           1.009405                           1.829350
# Model regresi logistik multinomial
model_multinom <- multinom(status_pekerjaan ~ umur + jenis_kelamin + pendidikan +
                             status_perkawinan + wilayah_tempat_tinggal + pendapatan + hubungan_dengan_krt,
                           data = data)
## # weights:  33 (20 variable)
## initial  value 82470.627286 
## iter  10 value 64751.594469
## iter  20 value 63909.863875
## iter  30 value 61467.480631
## iter  40 value 61462.480332
## final  value 61462.473060 
## converged
# Ringkasan hasil regresi
summary(model_multinom)
## Call:
## multinom(formula = status_pekerjaan ~ umur + jenis_kelamin + 
##     pendidikan + status_perkawinan + wilayah_tempat_tinggal + 
##     pendapatan + hubungan_dengan_krt, data = data)
## 
## Coefficients:
##               (Intercept) umurTidak Produktif jenis_kelaminLaki-laki
## Formal           1.128862           -1.201636              0.1354436
## Tidak_Bekerja  -12.924540            1.259780             -0.8733672
##               pendidikanDasar pendidikanMenengah status_perkawinanBelum_Kawin
## Formal             -2.0613918         -1.1340132                    0.8041107
## Tidak_Bekerja      -0.5528157         -0.2846225                    1.4882636
##               wilayah_tempat_tinggalPedesaan pendapatanRendah
## Formal                            -0.5501251       -0.6767313
## Tidak_Bekerja                     -0.5905776       12.8671039
##               pendapatanMenengah hubungan_dengan_krtBukan_KRT
## Formal                 0.3943765                    0.1426083
## Tidak_Bekerja         -1.8818960                    0.7699403
## 
## Std. Errors:
##               (Intercept) umurTidak Produktif jenis_kelaminLaki-laki
## Formal         0.05949019          0.06077532             0.02845221
## Tidak_Bekerja 10.81747122          0.02823451             0.02403849
##               pendidikanDasar pendidikanMenengah status_perkawinanBelum_Kawin
## Formal             0.03756641         0.03806470                   0.03313429
## Tidak_Bekerja      0.04488721         0.04690337                   0.02774649
##               wilayah_tempat_tinggalPedesaan pendapatanRendah
## Formal                            0.02240317       0.05394177
## Tidak_Bekerja                     0.01911191      10.81743275
##               pendapatanMenengah hubungan_dengan_krtBukan_KRT
## Formal                0.05494408                   0.03017510
## Tidak_Bekerja        14.44221293                   0.02682864
## 
## Residual Deviance: 122924.9 
## AIC: 122964.9
# Uji signifikansi (p-value)
z <- summary(model_multinom)$coefficients / summary(model_multinom)$standard.errors
p_values <- (1 - pnorm(abs(z), 0, 1)) * 2
p_values
##               (Intercept) umurTidak Produktif jenis_kelaminLaki-laki
## Formal          0.0000000                   0           1.932182e-06
## Tidak_Bekerja   0.2321715                   0           0.000000e+00
##               pendidikanDasar pendidikanMenengah status_perkawinanBelum_Kawin
## Formal                      0       0.000000e+00                            0
## Tidak_Bekerja               0       1.292928e-09                            0
##               wilayah_tempat_tinggalPedesaan pendapatanRendah
## Formal                                     0        0.0000000
## Tidak_Bekerja                              0        0.2342514
##               pendapatanMenengah hubungan_dengan_krtBukan_KRT
## Formal              7.085443e-13                 2.289584e-06
## Tidak_Bekerja       8.963249e-01                 0.000000e+00
# Menghitung odds ratio
exp(coef(model_multinom))
##                (Intercept) umurTidak Produktif jenis_kelaminLaki-laki
## Formal        3.092135e+00           0.3007018              1.1450447
## Tidak_Bekerja 2.437495e-06           3.5246469              0.4175432
##               pendidikanDasar pendidikanMenengah status_perkawinanBelum_Kawin
## Formal              0.1272767          0.3217395                     2.234708
## Tidak_Bekerja       0.5753276          0.7522982                     4.429398
##               wilayah_tempat_tinggalPedesaan pendapatanRendah
## Formal                             0.5768776     5.082757e-01
## Tidak_Bekerja                      0.5540072     3.873577e+05
##               pendapatanMenengah hubungan_dengan_krtBukan_KRT
## Formal                 1.4834590                     1.153278
## Tidak_Bekerja          0.1523011                     2.159637
# Prediksi kategori status pekerjaan
prediksi <- predict(model_multinom, newdata = data)

# Buat confusion matrix
table(Prediksi = prediksi, Aktual = data$status_pekerjaan)
##                Aktual
## Prediksi        Informal Formal Tidak_Bekerja
##   Informal         23434   5879          7768
##   Formal            2262   5845           342
##   Tidak_Bekerja     8712   4070         16756