#No.4

set.seed(123)
data <- rnorm(100)  # Membuat 100 data dari N(0,1)
data_lebih_besar_1 <- data[data > 1]  # Mengambil data > 1
jumlah_data <- length(data_lebih_besar_1)  # Menghitung jumlah data tersisa
print(jumlah_data)
## [1] 17

#No.6

set.seed(123) # Menetapkan seed untuk reproduktifitas
data <- rnorm(100, mean = 70, sd = 5) # Membuat data normal
max(data)  # Menghitung nilai maksimum
## [1] 80.93666

#No.7

set.seed(123) # Menetapkan seed untuk reproduktifitas
data <- rnorm(100) # Membuat 100 data dari distribusi normal N(0, 1)

# Menghitung rata-rata dan standar deviasi
rata_rata <- mean(data)
sd_data <- sd(data)

# Menghitung batas atas dan bawah
batas_atas <- rata_rata + 2 * sd_data
batas_bawah <- rata_rata - 2 * sd_data

# Menghitung jumlah data di luar batas
data_di_luar_batas <- data[data < batas_bawah | data > batas_atas]
jumlah_data_di_luar_batas <- length(data_di_luar_batas)

# Menampilkan hasil
print(jumlah_data_di_luar_batas)
## [1] 5

#No.8

set.seed(123)  # Atur seed untuk hasil yang reproduktif
x <- 1:10
y <- 2 * x + rnorm(10, 0, 1)  # y = 2x + noise (N(0,1))
model <- lm(y ~ x)  # Fit model regresi
summary(model)      # Lihat ringkasan (termasuk estimasi slope)
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.1348 -0.5624 -0.1393  0.3854  1.6814 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.5255     0.6673   0.787    0.454    
## x             1.9180     0.1075  17.835    1e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9768 on 8 degrees of freedom
## Multiple R-squared:  0.9755, Adjusted R-squared:  0.9724 
## F-statistic: 318.1 on 1 and 8 DF,  p-value: 1e-07

#No.9

set.seed(123) # Menetapkan seed untuk reproduktifitas
x <- c(5, 8, 12, 13, 15, 18, 21) # Membuat vektor x
bootstrap_median <- replicate(10000, median(sample(x, replace = TRUE))) # Melakukan bootstrap
confidence_interval <- quantile(bootstrap_median, c(0.025, 0.975)) # Menghitung interval kepercayaan 95%
print(confidence_interval) # Menampilkan interval kepercayaan
##  2.5% 97.5% 
##     8    18

#No.11

set.seed(123) # Menetapkan seed untuk reproduktifitas
data <- runif(100, min = 20, max = 80) # Membuat 100 data dari distribusi uniform
range_data <- max(data) - min(data) # Menghitung range
print(range_data) # Menampilkan range
## [1] 59.6187

#No.12

set.seed(123) # Menetapkan seed untuk reproduktifitas
x <- c(5, 7, 8, 10, 12) # Membuat vektor x
bootstrap_means <- replicate(1000, mean(sample(x, replace = TRUE))) # Melakukan bootstrap
mean_of_means <- mean(bootstrap_means) # Menghitung rata-rata dari rata-rata bootstrap
print(mean_of_means) # Menampilkan rata-rata
## [1] 8.3572

#No.13

set.seed(123) # Menetapkan seed untuk reproduktifitas
data <- rpois(100, lambda = 4) # Membuat 100 data dari distribusi Poisson dengan lambda = 4
modus <- as.numeric(names(sort(table(data), decreasing = TRUE)[1])) # Menghitung modus
print(modus) # Menampilkan modus
## [1] 2

#No.14

set.seed(123) # Menetapkan seed untuk reproduktifitas
data1 <- rnorm(50, mean = 100, sd = 15) # Membuat 50 data dari N(100, 15)
data2 <- rnorm(50, mean = 80, sd = 10) # Membuat 50 data dari N(80, 10)
data_gabungan <- c(data1, data2) # Menggabungkan data
rata_rata_gabungan <- mean(data_gabungan) # Menghitung rata-rata dari data gabungan
print(rata_rata_gabungan) # Menampilkan rata-rata
## [1] 90.99007

#No.15

set.seed(42) # Menetapkan seed untuk reproduktifitas
x1 <- rnorm(100) # Membuat vektor x1
x2 <- x1 + rnorm(100, 0, 0.01) # Membuat vektor x2 dengan multikolinearitas tinggi
x3 <- rnorm(100) # Membuat vektor x3
y <- 3 + 2 * x1 - 1 * x3 + rnorm(100) # Membuat vektor y
model <- lm(y ~ x1 + x2 + x3) # Membuat model regresi linier
summary(model) # Menampilkan ringkasan model
## 
## Call:
## lm(formula = y ~ x1 + x2 + x3)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7944 -0.5867 -0.1038  0.6188  2.3280 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.03150    0.08914  34.007   <2e-16 ***
## x1           1.17483    9.89434   0.119    0.906    
## x2           0.88292    9.89031   0.089    0.929    
## x3          -1.03161    0.08882 -11.614   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8867 on 96 degrees of freedom
## Multiple R-squared:  0.8927, Adjusted R-squared:  0.8893 
## F-statistic: 266.2 on 3 and 96 DF,  p-value: < 2.2e-16

#No.16

set.seed(123) # Menetapkan seed untuk reproduktifitas
data <- rexp(100, rate = 1) # Membuat 100 data dari distribusi eksponensial dengan rate = 1
median_data <- median(data) # Menghitung median dari data
print(median_data) # Menampilkan median
## [1] 0.847754

#No.17

set.seed(123) # Menetapkan seed untuk reproduktifitas
hasil <- rbinom(1000, size = 10, prob = 0.3) # Melakukan simulasi
rata_rata <- mean(hasil) # Menghitung rata-rata jumlah sukses
print(rata_rata) # Menampilkan rata-rata
## [1] 2.989

#No.18

set.seed(123) # Menetapkan seed untuk reproduktifitas
data <- rbinom(100, size = 10, prob = 0.3) # Membuat 100 data dari distribusi binomial
rata_rata <- mean(data) # Menghitung rata-rata dari data
print(rata_rata) # Menampilkan rata-rata
## [1] 3.02

#No.19

set.seed(123) # Menetapkan seed untuk reproduktifitas
data <- sample(c("A", "B", "C"), 100, replace = TRUE, prob = c(0.2, 0.3, 0.5)) # Membuat data kategorik
jumlah_B <- sum(data == "B") # Menghitung jumlah kategori "B"
print(jumlah_B) # Menampilkan jumlah kategori "B"
## [1] 29

#No.20

set.seed(123) # Menetapkan seed untuk reproduktifitas
data <- rnorm(100, mean = 50, sd = 10) # Membuat 100 data dari distribusi normal
standar_deviasi <- sd(data) # Menghitung standar deviasi dari data
print(standar_deviasi) # Menampilkan standar deviasi
## [1] 9.128159