Practice Quiz Pemrograman Open Source
- Function Uji Hipotesis rata-rata (t-test) 3 jenis pengujian:
- Two Tail
- Lower Tail
- Upper Tail
t_test_function <- function(data, mu, s,type = NA) {
x_bar <- mean(data)
n <- length(data)
# Calculate t-statistic
t_stat <- (x_bar - mu) / (s / sqrt(n))
# Determine the p-value based on type
if (type == "two.tail") {
p_value <- 2 * pt(abs(t_stat), df = n - 1)
if(p_value <= -1.96 || p_value >= 1.96){
print("tolak H0")
}
else{
print("gagal tolak H0")
}
} else if (type == "lower.tail") {
p_value <- pt(t_stat, df = n - 1)
if(p_value <= 1.645){
print("H0 ditolak")
}
else{
print("H0 gagal ditolak")
}
} else if (type == "upper.tail") {
p_value <- 1 - pt(t_stat, df = n - 1)
if(p_value >= 1.645){
print("H0 ditolak")
}
else{
print("H0 gagal ditolak")
}
} else {
"unfortunately your choice isn't here :("
}
# Create the output list
output <- list(
t_statistic = t_stat,
p_value = p_value,
sample_mean = x_bar,
sample_sd = s,
sample_size = n,
test_type = type
)
return(output)
}- Seorang perenang mencetak waktu rata-rata 16,43 detik untuk berenang dengan jarak 25 meter, dengan standar deviasi 0,8 detik. Pelatihnya kemudian menyuruhnya berenang menggunakan kacamata berenang untuk 15 kali dan dari hasil 15 kali berenang, waktu rata-rata perenang tersebut adalah 16 detik. Pelatihnya berasumsi bahwa perenang tersebut akan berenang lebih cepat menggunakan kacamata renang. Uji hipotesis pelatih tersebut dengan nilai!
data <- c(rep(16, 15))
result <- t_test_function(data, mu = 16.43, s = 0.8, type = "two.tail");result## [1] "gagal tolak H0"
## $t_statistic
## [1] -2.081729
##
## $p_value
## [1] 1.943801
##
## $sample_mean
## [1] 16
##
## $sample_sd
## [1] 0.8
##
## $sample_size
## [1] 15
##
## $test_type
## [1] "two.tail"
- Function menentukan Genap atau Ganjil
ganjil_genap <- function(num) {
if (num %% 2 == 0) {
return("Genap")
} else {
return("Ganjil")
}
}
#example
num <- 5
ganjil_genap(num)## [1] "Ganjil"
- Function Bilangan Prima
bil_prima <- function(num) {
if (num <= 1) {
return(FALSE)
}
if (num == 2) {
return(TRUE)
}
for (i in 2:sqrt(num)) {
if (num %% i == 0) {
return(FALSE)
}
}
return(TRUE)
}
num <- 2
bil_prima(num)## [1] TRUE
- Function Faktorial
factorial <- function(n) {
if (n < 0) {
stop("Input must be a non-negative integer! :)")
}
if (n == 0) {
return(1)
}
factrl <- n * factorial(n - 1)
return(factrl)
}
factorial(5)## [1] 120
- Data
Scaling adalah konsep yang sering digunakan di dalam pre-processing
pada Machine Learning untuk meningkatkan performa Machine Learning dan
meminimalkan waktu training. Salah satu metode scaling adalah
menggunakan metode Mean-max
Scalling dengan formula
``
x_{new}=\frac{x-min(x)}{max(x)-min(x)}
data(iris)
# Mean-Max Scaling
iris$Sepal.Length.scaled <- (iris$Sepal.Length - min(iris$Sepal.Length)) / (max(iris$Sepal.Length) - min(iris$Sepal.Length))
# Check normality
par(mfrow = c(1, 2))
qqnorm(iris$Sepal.Length.scaled)
qqline(iris$Sepal.Length.scaled)
plot(density(iris$Sepal.Length.scaled))Berdasarkan Analisis, pada q-q plot cenderung mengikuti garis diagonalnya memberikan indikasi bahwa hasil data scallingnya relatif normal. Tetapi, masih ada plot data yang <0.2 tidak mengikuti garis diagonal, jadi ada beberapa sebaran data yang tidak normal. Hal ini dibuktikan melalui boxplot, bahwa terdapat skew di versicolor sama virginica, untuk setosa sudah normal
- Boxplot untuk perbandingkan Sepal.Length terhadap Species nya
boxplot(Sepal.Length ~ Species, data = iris,
main = "Sepal Length by Species",
xlab = "Species", ylab = "Sepal Length",
col=c("#D6604D", "#D1E5F0", "#4393C3"))Setosa, karena garis mediannya berada di tengah kotak. Panjang whisker atas dan whisker bawahnya sama, jadi bisa disimpulkan kalau data simetris/berdistribusi normal. berarti gaada outlier yang besar.
Versicolor, karena garis mediannya mendekati kuartil bawah. Whisker bawah dan whisker atas panjangnya cenderung sama, jadi mungkin ada indikasi data cenderung miring ke kiri/negative skewness.
Virginica, karena garis median mendekati kuartil bawah. Namun, whisker atas lebih panjang daripada whisker bawah, jadi ada indikasi data cenderung miring ke kanan/positive skewness.
- IPM (Indeks Pembangunan Manusia) merupakan salah satu indikator dalam mengukur kualitas SDM suatu daerah. IPM dihitung dari 3 dimensi, yakni dimensi kesehatan, pendidikan, dan keuangan.
data(swiss)
# Calculate the IPM value
swiss$IPM <- (log(swiss$Education) + log(swiss$Fertility) + log(swiss$Agriculture))^(1/3) * 10;swiss$IPM## [1] 21.32865 21.84614 21.41284 21.54093 22.12009 21.43016 21.98463 22.11928
## [9] 21.78119 22.09988 21.84567 22.08540 21.80070 22.12021 21.52290 20.95533
## [17] 21.45659 21.76996 21.33518 22.01074 21.95005 21.01597 21.86333 21.42348
## [25] 20.44748 21.86165 21.19866 21.90650 21.75657 21.66002 21.15715 21.87789
## [33] 21.20681 21.83250 21.28703 22.03646 21.58771 22.29554 21.81887 20.50721
## [41] 21.30228 21.89673 21.48998 20.86845 19.75361 22.24578 21.85948
- Perbedaan statistika deskriptif antara IPM dibawah rata-rata dan IPM diatas rata-rata.
mean_ipm <- mean(swiss$IPM);mean_ipm## [1] 21.5888
# Divide the data into above and below average IPM
above_avg <- swiss[swiss$IPM > mean_ipm, ]
below_avg <- swiss[swiss$IPM <= mean_ipm, ]
# Compare descriptive statistics
summary(above_avg)## Fertility Agriculture Examination Education
## Min. :42.80 Min. :17.60 Min. : 6.00 Min. : 6.00
## 1st Qu.:64.17 1st Qu.:45.12 1st Qu.:14.00 1st Qu.: 8.00
## Median :67.90 Median :58.95 Median :16.00 Median :10.00
## Mean :69.08 Mean :54.25 Mean :17.23 Mean :12.92
## 3rd Qu.:78.70 3rd Qu.:66.75 3rd Qu.:21.75 3rd Qu.:13.00
## Max. :92.40 Max. :84.90 Max. :35.00 Max. :32.00
## Catholic Infant.Mortality IPM
## Min. : 2.27 Min. :16.30 Min. :21.66
## 1st Qu.: 5.74 1st Qu.:18.43 1st Qu.:21.84
## Median :17.69 Median :20.25 Median :21.89
## Mean :45.44 Mean :20.53 Mean :21.94
## 3rd Qu.:95.83 3rd Qu.:22.65 3rd Qu.:22.07
## Max. :99.68 Max. :24.90 Max. :22.30
summary(below_avg)## Fertility Agriculture Examination Education
## Min. :35.00 Min. : 1.20 Min. : 3.00 Min. : 1.000
## 1st Qu.:65.70 1st Qu.:18.70 1st Qu.: 7.00 1st Qu.: 3.000
## Median :72.50 Median :39.70 Median :15.00 Median : 6.000
## Mean :71.45 Mean :46.21 Mean :15.57 Mean : 8.571
## 3rd Qu.:77.60 3rd Qu.:69.30 3rd Qu.:22.00 3rd Qu.: 8.000
## Max. :92.50 Max. :89.70 Max. :37.00 Max. :53.000
## Catholic Infant.Mortality IPM
## Min. : 2.15 Min. :10.80 Min. :19.75
## 1st Qu.: 4.20 1st Qu.:18.00 1st Qu.:21.02
## Median : 11.22 Median :20.00 Median :21.30
## Mean : 35.82 Mean :19.21 Mean :21.15
## 3rd Qu.: 90.57 3rd Qu.:20.50 3rd Qu.:21.43
## Max. :100.00 Max. :26.60 Max. :21.59
Fertility
mean dan median antara diatas rata-rata dan dibawah rata-rata tidak memiliki perbedaan yang signifikan.
Agriculture
mean dan median antara diatas rata-rata dan dibawah rata-rata memiliki perbedaan yang signifikan. dibuktikan dengan yang diatas rata-rata sekitar 50an, sedangkan dibawah rata-rata mediannya 39 dan mean 46.
Examination
mean dan median antara diatas rata-rata dan dibawah rata-rata tidak memiliki perbedaan yang signifikan yaitu yang diatas rata-rata median 16 dan mean 17, sedangkan dibawah rata-rata median dan mean 15.
Education
mean dan median antara diatas rata-rata dan dibawah rata-rata cukup memiliki perbedaan tetapi tidak signifikan yaitu yang diatas rata-rata median 10 dan mean 12, sedangkan dibawah rata-rata median 6 dan mean 8.
Catholic
mean dan median antara diatas rata-rata dan dibawah rata-rata memiliki perbedaan tetapi tidak terlalu signifikan yaitu yang diatas rata-rata median 17 dan mean 45, sedangkan dibawah rata-rata median 11 dan mean 35.
Infant.Mortality
mean dan median antara diatas rata-rata dan dibawah rata-rata tidak memiliki perbedaan yang signifikan bahkan cenderung sama yaitu di angka 19 dan 20.
IPM
mean dan median antara diatas rata-rata dan dibawah rata-rata tidak memiliki perbedaan yang signifikan bahkan cenderung sama yaitu di angka 21.