Studi Kasus Membangkitkan Data

Kasus Simulasi Pendapatan Karyawan

Simulasi pendapatan karyawan dalam periode bulanan.

Pendapatan karyawan bulanan dimodelkan dengan distribusi normal.

Parameter yang ditentukan yaitu Rp5.000.000. dengan standar deviasi Rp1.000.000.

set.seed(123)
n_employees <- 300
mean_income <- 5000000
sd_income <- 1000000
income_data <- rnorm(n_employees, mean = mean_income, sd = sd_income)
income_data
##   [1] 4439524 4769823 6558708 5070508 5129288 6715065 5460916 3734939 4313147
##  [10] 4554338 6224082 5359814 5400771 5110683 4444159 6786913 5497850 3033383
##  [19] 5701356 4527209 3932176 4782025 3973996 4271109 4374961 3313307 5837787
##  [28] 5153373 3861863 6253815 5426464 4704929 5895126 5878133 5821581 5688640
##  [37] 5553918 4938088 4694037 4619529 4305293 4792083 3734604 7168956 6207962
##  [46] 3876891 4597115 4533345 5779965 4916631 5253319 4971453 4957130 6368602
##  [55] 4774229 6516471 3451247 5584614 5123854 5215942 5379639 4497677 4666793
##  [64] 3981425 3928209 5303529 5448210 5053004 5922267 7050085 4508969 2690831
##  [73] 6005739 4290799 4311991 6025571 4715227 3779282 5181303 4861109 5005764
##  [82] 5385280 4629340 5644377 4779513 5331782 6096839 5435181 4674068 6148808
##  [91] 5993504 5548397 5238732 4372094 6360652 4399740 7187333 6532611 4764300
## [100] 3973579 4289593 5256884 4753308 4652457 4048381 4954972 4215096 3332058
## [109] 4619773 5918997 4424653 5607964 3382117 4944438 5519407 5301153 5105676
## [118] 4359294 4150296 3975871 5117647 4052525 4509443 4743908 6843862 4348050
## [127] 5235387 5077961 4038143 4928692 6444551 5451504 5041233 4577503 2946753
## [136] 6131337 3539360 5739948 6909104 3556107 5701784 4737803 3427856 3485332
## [145] 3398464 4469093 3538244 5687917 7100109 3712970 5787739 5769042 5332203
## [154] 3991623 4880547 4719605 5562990 4627561 5976973 4625419 6052711 3950823
## [163] 3739845 8241040 4583142 5298228 5636570 4516219 5516862 5368965 4784619
## [172] 5065293 4965933 7128452 4258664 3904004 5037788 5310481 5436523 4541635
## [181] 3936674 6263185 4650350 4134487 4763720 4802824 6109920 5084737 5754054
## [190] 4500708 5214445 4675314 5094584 4104637 3689198 6997213 5600709 3748729
## [199] 4388834 3814520 7198810 6312413 4734855 5543194 4585660 4523753 4211397
## [208] 4405383 6650907 4945972 5119245 5243687 6232476 4483936 4007493 6675697
## [217] 4558837 4276934 3763727 3715284 4426027 5617986 6109848 5707588 4636343
## [226] 5059750 4295404 4282782 5884650 3984407 6955294 4909680 5214539 4261472
## [235] 4425611 3682984 4817075 5418982 5324304 4218464 4211378 4497801 6496061
## [244] 3862696 4820948 6902362 4899025 3640159 4335231 5485460 4624397 4438124
## [253] 4656083 5090497 6598509 4911435 6080799 5630754 4886360 3467098 4478883
## [262] 4510130 5047154 6300199 7293079 6547581 4866849 3243473 4611220 5089207
## [271] 5845013 5962528 5684309 3604726 5849643 4553443 5174803 5074551 5428167
## [280] 5024675 3332525 5736496 5386027 4734348 5118145 5134039 5221019 6640846
## [289] 4780950 5168065 6168384 6054181 6145263 4422532 7002483 5066701 6866852
## [298] 3649097 5020984 6249915

Rata-rata pendapatan karyawan hasil simulasi.

mean_simulated <- mean(income_data)
cat("Rata-rata pendapatan simulasi:", mean_simulated, "\n")
## Rata-rata pendapatan simulasi: 5034441

Hasil simulasi pendapatan karyawan memberikan hasil data rata-rata pendapatan karyawan mendekati nilai rata-rata yang ditentukan yaitu Rp5.000.000.

Jika ingin diketahui probabilitas pendapatan di atas Rp5.000.000, maka dihitung proporsi data yang melebihi nilai tersebut.

# 2. Probabilitas pendapatan di atas Rp5.000.000
prob_above_5m <- sum(income_data > 5000000) / n_employees
cat("Probabilitas pendapatan di atas Rp5.000.000:", prob_above_5m, "\n")
## Probabilitas pendapatan di atas Rp5.000.000: 0.49

Kasus Aplikasi Sistem Antrian

Simulasi berikut memodelkan Jumlah Pelanggan yang datang ke suatu sistem antrian dengan distribusi Poisson.

Parameter yang ditentukan yaitu rata-rata jumlah pelanggan yang datang sejumlah 30 pelanggan per hari (lamda).

set.seed(123)
n_days <- 30
lambda_customers <- 30
customers_data <- rpois(n_days, lambda_customers)
customers_data
##  [1] 26 36 20 30 39 32 23 20 36 31 32 30 26 37 34 29 25 24 28 24 26 29 23 23 28
## [26] 22 34 34 34 33

Rata-rata jumlah pelanggan datang hasil simulasi.

mean_customers <- mean(customers_data)
cat("Rata-rata jumlah pelanggan simulasi:", mean_customers, "\n")
## Rata-rata jumlah pelanggan simulasi: 28.93333

Dari hasil simulasi terlihat bahwa rata-rata jumlah pelanggan yang datang mendekati nilai lamda yang ditentukan.

Jika ingin diketahui probabilitas jumlah pelanggan datang lebih dari 30, maka dihitung proporsi data yang melebihi nilai tersebut.

prob_above_30 <- sum(customers_data > 30) / n_days
cat("Probabilitas jumlah pelanggan lebih dari 30:", prob_above_30, "\n")
## Probabilitas jumlah pelanggan lebih dari 30: 0.4

Kasus Analisis Regresi Logistik

Dimiliki kasus

Y : Keputusan menolak/menerima pelamar kerja pada PT A posisi B

X1 : Lama pengalaman kerja sebelumnya (bulan)

X2 : Status pekerjaan saat ini (0: Bekerja, 1: Tidak bekerja)

X3 : Tingkat pendidikan (0: Lulusah Sekolah Menengah, 1: Lulusan Perguruan Tinggi)

X4 : IPK (skala 4)

Membangkitkan data X1

X1 : Lama pengalaman kerja sebelumnya (bulan)

Membangkitkan variabel X1 dengan lama pekerjaan 0-100 bulan dengan nilai tengah 30 dan banyak pelamar adalah 50

set.seed(123)
n <- 50
u <- runif(n)

x1 <- round(100*(-(log(1-u)/30)))
x1
##  [1]  1  5  2  7  9  0  3  7  3  2 10  2  4  3  0  8  1  0  1 10  7  4  3 17  4
## [26]  4  3  3  1  1 11  8  4  5  0  2  5  1  1  1  1  2  2  2  1  0  1  2  1  7

Membangkitkan data X2

X2 : Status pekerjaan Keterangan yang digunakan

Keterangan: 0=Tidak Bekerja dan 1=Bekerja

set.seed(12345)
x2 <- round(runif(n))
x2
##  [1] 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 1
## [39] 1 0 1 0 1 1 0 0 0 0 0 1

Membangkitkan data X3

X3 : Tingkat pendidikan Keterangan yang digunakan

Keterangan: 0 = lulus SMA/Tidak kuliah dan 1 = lulus kuliah

set.seed(123)
x3 <- round(runif(n))
x3
##  [1] 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0
## [39] 0 0 0 0 0 0 0 0 0 0 0 1

Membangkitkan data X4

X4 adalah data IPK Pelamar dengan skala 4

set.seed(222)
x4 <- round(rnorm(n,3,0.5),2)
x4
##  [1] 3.74 3.00 3.69 2.81 3.09 2.88 2.39 3.78 3.21 2.40 3.53 2.35 2.65 3.30 2.90
## [16] 2.41 2.00 3.00 3.26 2.63 3.36 3.36 2.67 3.75 2.28 1.92 3.20 2.80 2.85 3.67
## [31] 2.59 3.34 2.89 2.94 2.90 3.20 3.33 3.05 2.91 3.47 3.10 3.25 2.72 3.56 4.10
## [46] 3.16 2.53 3.41 2.81 3.17

Membangkitkan data Y

Menentukan koefisien persamaan regresi

b0 <- -8
b1 <- 2.5
b2 <- 0.5
b3 <- 1.7
b4 <- 2.8
set.seed(1)
datapendukung <- b0+(b1*x1)+(b2*x2)+(b3*x3)+(b4*x4)
datapendukung
##  [1]  5.472 15.100  7.832 19.568 24.852  0.064  7.892 22.284 10.688  4.220
## [11] 28.584  3.580 11.620 10.440  0.120 20.448  0.100  0.400  3.628 26.564
## [21] 20.608 13.108  9.176 47.200 10.584  9.076 10.660  9.540  2.480  4.776
## [31] 28.952 23.052 11.792 14.932  0.120  5.960 16.024  3.540  3.148  4.216
## [41]  3.680  6.100  5.116  7.468  5.980  0.848  1.584  6.548  2.368 20.576
p <- exp(datapendukung)/(1+exp(datapendukung))
p
##  [1] 0.9958148 0.9999997 0.9996033 1.0000000 1.0000000 0.5159945 0.9996264
##  [8] 1.0000000 0.9999772 0.9855143 1.0000000 0.9728803 0.9999910 0.9999708
## [15] 0.5299641 1.0000000 0.5249792 0.5986877 0.9741184 1.0000000 1.0000000
## [22] 0.9999980 0.9998965 1.0000000 0.9999747 0.9998856 0.9999765 0.9999281
## [29] 0.9227278 0.9916408 1.0000000 1.0000000 0.9999924 0.9999997 0.5299641
## [36] 0.9974267 0.9999999 0.9718047 0.9588298 0.9854571 0.9753976 0.9977622
## [43] 0.9940358 0.9994293 0.9974776 0.7001474 0.8297703 0.9985691 0.9143544
## [50] 1.0000000
set.seed(2)
y <- rbinom(n,1,p)
y
##  [1] 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
## [39] 1 1 1 1 1 1 1 0 1 1 1 1
datagab <- data.frame(y,x1,x2,x3,x4)
datagab
##    y x1 x2 x3   x4
## 1  1  1  1  0 3.74
## 2  1  5  1  1 3.00
## 3  1  2  1  0 3.69
## 4  1  7  1  1 2.81
## 5  1  9  0  1 3.09
## 6  0  0  0  0 2.88
## 7  1  3  0  1 2.39
## 8  1  7  1  1 3.78
## 9  1  3  1  1 3.21
## 10 1  2  1  0 2.40
## 11 1 10  0  1 3.53
## 12 1  2  0  0 2.35
## 13 1  4  1  1 2.65
## 14 1  3  0  1 3.30
## 15 1  0  0  0 2.90
## 16 1  8  0  1 2.41
## 17 0  1  0  0 2.00
## 18 1  0  0  0 3.00
## 19 1  1  0  0 3.26
## 20 1 10  1  1 2.63
## 21 1  7  0  1 3.36
## 22 1  4  0  1 3.36
## 23 1  3  1  1 2.67
## 24 1 17  1  1 3.75
## 25 1  4  1  1 2.28
## 26 1  4  0  1 1.92
## 27 1  3  1  1 3.20
## 28 1  3  1  1 2.80
## 29 1  1  0  0 2.85
## 30 1  1  0  0 3.67
## 31 1 11  1  1 2.59
## 32 1  8  0  1 3.34
## 33 1  4  0  1 2.89
## 34 1  5  1  1 2.94
## 35 0  0  0  0 2.90
## 36 1  2  0  0 3.20
## 37 1  5  1  1 3.33
## 38 1  1  1  0 3.05
## 39 1  1  1  0 2.91
## 40 1  1  0  0 3.47
## 41 1  1  1  0 3.10
## 42 1  2  0  0 3.25
## 43 1  2  1  0 2.72
## 44 1  2  1  0 3.56
## 45 1  1  0  0 4.10
## 46 0  0  0  0 3.16
## 47 1  1  0  0 2.53
## 48 1  2  0  0 3.41
## 49 1  1  0  0 2.81
## 50 1  7  1  1 3.17

Analisis Regresi Logistik

Memodelkan data hasil simulasi dengan menggunakan analisis regresi logistik.

modelreglog <- glm(y~x1+x2+x3+x4, family = binomial(link = "logit"), data=datagab)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

Menampilkan hasil analisis regresi logistik.

summary(modelreglog)
## 
## Call:
## glm(formula = y ~ x1 + x2 + x3 + x4, family = binomial(link = "logit"), 
##     data = datagab)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept)  -19.002     13.589  -1.398    0.162
## x1             5.033      3.508   1.435    0.151
## x2            15.205   7334.174   0.002    0.998
## x3             7.414   5849.288   0.001    0.999
## x4             6.258      4.565   1.371    0.170
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 27.877  on 49  degrees of freedom
## Residual deviance:  8.511  on 45  degrees of freedom
## AIC: 18.511
## 
## Number of Fisher Scoring iterations: 21