R Membangkitkan data

Skenario

Y : Keputusan menerima/menolak calon siswa SMAN X1 : Nilai rata-rata rapor X2 : Prestasi Akademik atau non-Akademik (0=tidak mempunyaiprestasi, 1=mempunyai prestasi) X3 : Jarak tempuh (KM)

Membangkitkan data X1

X1 : Nilai rata-rata rapor

set.seed(123)
xcontoh <- rnorm(50,90,5)
xcontoh
##  [1]  87.19762  88.84911  97.79354  90.35254  90.64644  98.57532  92.30458
##  [8]  83.67469  86.56574  87.77169  96.12041  91.79907  92.00386  90.55341
## [15]  87.22079  98.93457  92.48925  80.16691  93.50678  87.63604  84.66088
## [22]  88.91013  84.86998  86.35554  86.87480  81.56653  94.18894  90.76687
## [29]  84.30932  96.26907  92.13232  88.52464  94.47563  94.39067  94.10791
## [36]  93.44320  92.76959  89.69044  88.47019  88.09764  86.52647  88.96041
## [43]  83.67302 100.84478  96.03981  84.38446  87.98558  87.66672  93.89983
## [50]  89.58315

Membangkitkan data X1

Membangkitkan data variabel X1 dengan distribusi normal dari semester 1-5 dengan nilai tengah 3 dan banyak pendaftar adalah 50

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

x1 <- round(5*(-(log(1-u)/3)))
x1
##  [1] 1 3 1 4 5 0 1 4 1 1 5 1 2 1 0 4 0 0 1 5 4 2 2 9 2 2 1 2 1 0 5 4 2 3 0 1 2 0
## [39] 1 0 0 1 1 1 0 0 0 1 1 3

Membangkitkan data X2

X2 : Prestasi Akademik atau non-Akademik Membangkitkan variabel X2 dengan keterangan (0=tidak memiliki prestasi, 1=memiliki prestasi)

set.seed(123)
x2 <- round(runif(n))
x2
##  [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 X3

X3 : Jarak tempuh (Km) X3 merupakan data jarak tempuh antara rumah dengan sekolah min 0 Km

set.seed(123)
x3 <- round(rnorm(n,2,0.5),2)
x3
##  [1] 1.72 1.88 2.78 2.04 2.06 2.86 2.23 1.37 1.66 1.78 2.61 2.18 2.20 2.06 1.72
## [16] 2.89 2.25 1.02 2.35 1.76 1.47 1.89 1.49 1.64 1.69 1.16 2.42 2.08 1.43 2.63
## [31] 2.21 1.85 2.45 2.44 2.41 2.34 2.28 1.97 1.85 1.81 1.65 1.90 1.37 3.08 2.60
## [46] 1.44 1.80 1.77 2.39 1.96

Membangkitkan data Y

b0 <- -10
b1 <- 3.7
b2 <- 0.5
b3 <- 2.5
set.seed(1)
datapendukung <- b0+(b1*x1)+(b2*x2)+(b3*x3)
datapendukung
##  [1] -2.000  6.300  0.650 10.400 14.150 -2.850 -0.225  8.725 -1.650 -1.850
## [11] 15.525 -0.850  3.400 -0.650 -5.700 12.525 -4.375 -7.450 -0.425 13.400
## [21]  8.975  2.625  1.625 27.900  2.125  0.800  0.250  3.100 -2.725 -3.425
## [31] 14.525  9.925  4.025  7.700 -3.975 -0.450  3.600 -5.075 -1.675 -5.475
## [41] -5.875 -1.550 -2.875  1.400 -3.500 -6.400 -5.500 -1.875 -0.325  6.500
p <- exp(datapendukung)/(1+exp(datapendukung))
p
##  [1] 0.1192029220 0.9981670611 0.6570104627 0.9999695684 0.9999992843
##  [6] 0.0546813172 0.4439861095 0.9998375536 0.1611089496 0.1358728970
## [11] 0.9999998190 0.2994328575 0.9677045353 0.3429895373 0.0033348073
## [16] 0.9999963654 0.0124316509 0.0005811037 0.3953209153 0.9999984849
## [21] 0.9998734821 0.9324533089 0.8354835371 1.0000000000 0.8933094061
## [26] 0.6899744811 0.5621765009 0.9568927451 0.0615141817 0.0315232228
## [31] 0.9999995081 0.9999510665 0.9824500776 0.9995473778 0.0184331400
## [36] 0.3893607661 0.9734030064 0.0062122531 0.1577586870 0.0041727438
## [41] 0.0028009270 0.1750862682 0.0534033298 0.8021838886 0.0293122308
## [46] 0.0016588011 0.0040701377 0.1329642402 0.4194576952 0.9984988177
set.seed(2)
y <- rbinom(n,1,p)
y
##  [1] 0 1 1 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0
## [39] 0 0 0 0 0 1 0 0 0 0 0 1
datagab <- data.frame(y,x1,x2,x3)
datagab
##    y x1 x2   x3
## 1  0  1  0 1.72
## 2  1  3  1 1.88
## 3  1  1  0 2.78
## 4  1  4  1 2.04
## 5  1  5  1 2.06
## 6  0  0  0 2.86
## 7  0  1  1 2.23
## 8  1  4  1 1.37
## 9  0  1  1 1.66
## 10 0  1  0 1.78
## 11 1  5  1 2.61
## 12 0  1  0 2.18
## 13 1  2  1 2.20
## 14 0  1  1 2.06
## 15 0  0  0 1.72
## 16 1  4  1 2.89
## 17 0  0  0 2.25
## 18 0  0  0 1.02
## 19 0  1  0 2.35
## 20 1  5  1 1.76
## 21 1  4  1 1.47
## 22 1  2  1 1.89
## 23 0  2  1 1.49
## 24 1  9  1 1.64
## 25 1  2  1 1.69
## 26 1  2  1 1.16
## 27 1  1  1 2.42
## 28 1  2  1 2.08
## 29 1  1  0 1.43
## 30 0  0  0 2.63
## 31 1  5  1 2.21
## 32 1  4  1 1.85
## 33 1  2  1 2.45
## 34 1  3  1 2.44
## 35 0  0  0 2.41
## 36 1  1  0 2.34
## 37 1  2  1 2.28
## 38 0  0  0 1.97
## 39 0  1  0 1.85
## 40 0  0  0 1.81
## 41 0  0  0 1.65
## 42 0  1  0 1.90
## 43 0  1  0 1.37
## 44 1  1  0 3.08
## 45 0  0  0 2.60
## 46 0  0  0 1.44
## 47 0  0  0 1.80
## 48 0  1  0 1.77
## 49 0  1  0 2.39
## 50 1  3  1 1.96

Analisis Regresi Logistik

modelreglog <- glm(y ~ x1 + x2 + x3, family = binomial(link="logit"),data = datagab)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(modelreglog)
## 
## Call:
## glm(formula = y ~ x1 + x2 + x3, family = binomial(link = "logit"), 
##     data = datagab)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)   
## (Intercept) -11.7102     4.4171  -2.651  0.00802 **
## x1            4.5389     1.7610   2.577  0.00995 **
## x2           -0.3316     1.4144  -0.234  0.81462   
## x3            2.9164     1.4671   1.988  0.04683 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 69.315  on 49  degrees of freedom
## Residual deviance: 21.429  on 46  degrees of freedom
## AIC: 29.429
## 
## Number of Fisher Scoring iterations: 8