Apa yang terjadi pada interval kepercayaan ketika ukuran sampel meningkat?
Jawab: Ketika ukuran sampel meningkat, interval kepercayaan menjadi lebih sempit.
# Fungsi untuk menghitung margin of error dan interval kepercayaan
calculate_margin_of_error <- function(data, confidence_level) {
sample_mean <- mean(data)
sample_std <- sd(data)
sample_size <- length(data)
# Menentukan nilai t untuk tingkat kepercayaan yang diberikan
t_value <- qt((1 + confidence_level) / 2, df = sample_size - 1)
# Menghitung margin of error
margin_of_error <- t_value * (sample_std / sqrt(sample_size))
return(margin_of_error)
}
# Menentukan tingkat kepercayaan
confidence_level <- 0.95
# Data awal (sampel kecil)
data_small <- c(50, 52, 53, 55, 58)
# Data dengan sampel yang lebih besar
data_large <- c(50, 52, 53, 55, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78)
# Menghitung margin of error untuk kedua sampel
moe_small <- calculate_margin_of_error(data_small, confidence_level)
moe_large <- calculate_margin_of_error(data_large, confidence_level)
# Menampilkan hasil
cat("Margin of Error untuk sampel kecil:", moe_small, "\n")
## Margin of Error untuk sampel kecil: 3.786566
cat("Margin of Error untuk sampel besar:", moe_large, "\n")
## Margin of Error untuk sampel besar: 5.035919
Apa yang dimaksud dengan margin of error dalam interval kepercayaan?
Jawab: Margin of error (MOE) dalam interval kepercayaan adalah jarak dari nilai estimasi ke batas atas atau batas bawah dari interval kepercayaan.
# Contoh data sampel
data <- c(50, 52, 53, 55, 58, 60, 62, 65, 67, 70)
# Menentukan tingkat kepercayaan (confidence level)
confidence_level <- 0.95
# Menghitung rata-rata dan standar deviasi sampel
sample_mean <- mean(data)
sample_std <- sd(data)
sample_size <- length(data)
# Menentukan nilai t untuk tingkat kepercayaan 95%
t_value <- qt((1 + confidence_level) / 2, df = sample_size - 1)
# Menghitung margin of error
margin_of_error <- t_value * (sample_std / sqrt(sample_size))
# Menampilkan hasil
cat("Margin of Error:", margin_of_error, "\n")
## Margin of Error: 4.849442
Dari data rnorm(100), berapa banyak data yang berada di luar ±2 SD? Gunakan set.seed(123)
# Set seed untuk reproducibility
set.seed(123)
# Menghasilkan 100 data acak dari distribusi normal standar
data <- rnorm(100)
# Menghitung mean dan standar deviasi
mean_data <- mean(data)
sd_data <- sd(data)
# Menghitung batas atas dan bawah (±2 SD)
batas_atas <- mean_data + 2*sd_data
batas_bawah <- mean_data - 2*sd_data
# Menghitung jumlah data di luar ±2 SD
jumlah_outliers <- sum(data > batas_atas | data < batas_bawah)
print(paste("Jumlah data di luar ±2 SD:", jumlah_outliers))
## [1] "Jumlah data di luar ±2 SD: 5"
# Persentase data di luar ±2 SD
persentase_outliers <- jumlah_outliers/100 * 100
print(paste("Persentase data di luar ±2 SD:", persentase_outliers, "%"))
## [1] "Persentase data di luar ±2 SD: 5 %"
Lakukan bootstrap 1000 kali terhadap sampel x <- c(5, 7, 8, 10, 12). Hitung rata-rata dari setiap bootstrap, lalu ambil rata-rata dari hasil tersebut. Nilai mendekati berapa? Gunakan set.seed(123)
# Set seed untuk hasil yang konsisten
set.seed(123)
# Sampel awal
x <- c(5, 7, 8, 10, 12)
# Lakukan bootstrap 1000 kali
bootstrap_means <- replicate(1000, mean(sample(x, replace = TRUE)))
# Tampilkan beberapa hasil awal
head(bootstrap_means)
## [1] 7.6 8.4 8.6 7.4 7.0 9.8
# Rata-rata dari semua hasil bootstrap
mean_bootstrap <- mean(bootstrap_means)
mean_bootstrap
## [1] 8.3572
round(mean_bootstrap, 2)
## [1] 8.36
Dengan menggunakan fungsi rbinom, simulasikan 1000 percobaan dengan n = 10 dan p = 0.3. Berapa rata-rata jumlah sukses? Gunakan set.seed(123)
# Menetapkan seed untuk reproduksibilitas
set.seed(123)
# Mensimulasikan 1000 percobaan binomial dengan n = 10 dan p = 0.3
hasil <- rbinom(1000, size = 10, prob = 0.3)
# Menghitung rata-rata jumlah sukses
rata_rata <- mean(hasil)
# Menampilkan hasil
print(rata_rata)
## [1] 2.989
Simulasikan 100 data dari distribusi uniform antara 20 sampai 80. Berapa nilai range (max - min) yang paling mendekati hasil simulasi? Gunakan set.seed(123)
# Menetapkan seed untuk reproduksibilitas
set.seed(123)
# Mensimulasikan 100 data dari distribusi uniform antara 20 sampai 80
data <- runif(100, min = 20, max = 80)
# Menghitung range (max - min)
range_value <- max(data) - min(data)
# Menampilkan nilai min, max, dan range
cat("Nilai minimum:", min(data), "\n")
## Nilai minimum: 20.03749
cat("Nilai maksimum:", max(data), "\n")
## Nilai maksimum: 79.65619
cat("Range (max - min):", range_value, "\n")
## Range (max - min): 59.6187
Buat 100 data dari distribusi normal N(0,1), lalu ambil hanya data yang lebih besar dari 1. Berapa banyak data yang tersisa? Gunakan set.seed(123)
# Menetapkan seed untuk reproduksibilitas
set.seed(123)
# Membuat 100 data dari distribusi normal N(0,1)
data <- rnorm(100, mean = 0, sd = 1)
# Memfilter data yang lebih besar dari 1
data_lebih_dari_1 <- data[data > 1]
# Menghitung jumlah data yang tersisa
jumlah_data_tersisa <- length(data_lebih_dari_1)
# Menampilkan hasil
cat("Jumlah data yang lebih besar dari 1:", jumlah_data_tersisa, "\n")
## Jumlah data yang lebih besar dari 1: 17
Simulasikan 50 data dari N(100,15) dan 50 data dari N(80,10), lalu gabungkan. Berapa rata-rata dari seluruh data gabungan? Gunakan set.seed(123)
# Mengatur seed untuk reproducibility
set.seed(123)
# Mensimulasikan 50 data dari N(100,15)
data1 <- rnorm(50, mean = 100, sd = 15)
# Mensimulasikan 50 data dari N(80,10)
data2 <- rnorm(50, mean = 80, sd = 10)
# Menggabungkan kedua dataset
data_gabungan <- c(data1, data2)
# Menghitung rata-rata dari data gabungan
rata_rata <- mean(data_gabungan)
# Menampilkan hasil
cat("Rata-rata dari data gabungan:", rata_rata, "\n")
## Rata-rata dari data gabungan: 90.99007
# Secara teoritis, rata-rata seharusnya mendekati (100+80)/2 = 90
# karena kita memiliki jumlah data yang sama dari kedua distribusi
Buat data berikut: x <- c(5, 8, 12, 13, 15, 18, 21) Lakukan bootstrap sebanyak 10.000 kali untuk menghitung interval kepercayaan 95% dari median data. Manakah interval berikut yang paling mendekati hasil? Gunakan set.seed(123)
# Mengatur seed untuk reproducibility
set.seed(123)
# Data yang diberikan
x <- c(5, 8, 12, 13, 15, 18, 21)
# Fungsi untuk melakukan bootstrap
bootstrap_median <- function(data, R) {
n <- length(data)
medians <- numeric(R)
for(i in 1:R) {
# Sampling dengan pengembalian
resampled <- sample(data, n, replace = TRUE)
# Menghitung median dari sampel bootstrap
medians[i] <- median(resampled)
}
return(medians)
}
# Melakukan bootstrap 10.000 kali
R <- 10000
bootstrap_medians <- bootstrap_median(x, R)
# Menghitung interval kepercayaan 95% menggunakan metode persentil
ci_lower <- quantile(bootstrap_medians, 0.025)
ci_upper <- quantile(bootstrap_medians, 0.975)
# Menampilkan hasil
cat("Interval kepercayaan 95% untuk median:", ci_lower, "sampai", ci_upper, "\n")
## Interval kepercayaan 95% untuk median: 8 sampai 18
# Melihat distribusi median bootstrap
hist(bootstrap_medians, main="Distribusi Bootstrap dari Median", xlab="Median")
abline(v=ci_lower, col="red4", lwd=2)
abline(v=ci_upper, col="red", lwd=2)
# Visualisasi interval kepercayaan
print(quantile(bootstrap_medians, c(0.025, 0.25, 0.5, 0.75, 0.975)))
## 2.5% 25% 50% 75% 97.5%
## 8 12 13 15 18
Buatlah 100 data acak dari distribusi binomial dengan n = 10 dan p = 0.3. Hitung rata-ratanya. Berapakah nilai yang paling mendekati rata-rata tersebut? Gunakan set.seed(123)
# Mengatur seed untuk reproducibility
set.seed(123)
# Membuat 100 data acak dari distribusi binomial dengan n = 10 dan p = 0.3
data_binomial <- rbinom(100, size = 10, prob = 0.3)
# Menghitung rata-rata
rata_rata <- mean(data_binomial)
# Menampilkan hasil
cat("Data binomial:", head(data_binomial), "...\n")
## Data binomial: 2 4 3 5 5 1 ...
cat("Rata-rata dari 100 data binomial:", rata_rata, "\n")
## Rata-rata dari 100 data binomial: 3.02
# Secara teoritis, rata-rata distribusi binomial adalah n*p = 10*0.3 = 3
cat("Nilai yang diharapkan secara teoritis:", 10*0.3, "\n")
## Nilai yang diharapkan secara teoritis: 3
# Histogram distribusi
hist(data_binomial, breaks=0:10, main="Histogram Data Binomial",
xlab="Nilai", ylab="Frekuensi")
abline(v=rata_rata, col="red", lwd=2)
Buatlah sebuah regresi linear sederhana dari data berikut: x <- 1:10 y <- 2 * x + rnorm(10, 0, 1) Berapa estimasi koefisien slope dari model lm(y ~ x)? Gunakan set.seed(123)
# Mengatur seed untuk reproducibility
set.seed(123)
# Membuat data
x <- 1:10
y <- 2 * x + rnorm(10, 0, 1)
# Membuat model regresi linear
model <- lm(y ~ x)
# Menampilkan ringkasan model
summary(model)
##
## 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
# Mengambil koefisien slope
slope <- coef(model)[2]
cat("Koefisien slope dari model adalah:", slope, "\n")
## Koefisien slope dari model adalah: 1.918029
# Visualisasi data dan garis regresi
plot(x, y, main="Regresi Linear Sederhana", xlab="x", ylab="y")
abline(model, col="red")
Simulasikan 100 data dari distribusi Poisson dengan λ = 4. Berapa nilai modus dari data yang dihasilkan? Gunakan set.seed(123)
# Menetapkan seed untuk reproduksibilitas
set.seed(123)
# Mensimulasikan 100 data dari distribusi Poisson dengan λ = 4
data <- rpois(100, lambda = 4)
# Menghitung frekuensi kemunculan setiap nilai
tabel_frekuensi <- table(data)
# Menampilkan tabel frekuensi
print(tabel_frekuensi)
## data
## 0 1 2 3 4 5 6 7 8 9 10
## 1 4 19 19 18 16 11 7 3 1 1
# Mencari nilai modus (nilai dengan frekuensi tertinggi)
modus <- as.numeric(names(tabel_frekuensi)[which.max(tabel_frekuensi)])
# Menampilkan modus
cat("Nilai modus:", modus, "\n")
## Nilai modus: 2
cat("Frekuensi:", max(tabel_frekuensi), "\n")
## Frekuensi: 19
Diberikan data:x <- rnorm(100)y <- 2*x + rnorm(100). Manakah kode berikut yang benar untuk melihat ringkasan dari model regresi?
summary(lm(y ~ x))
##
## 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
Simulasikan 100 data dari distribusi eksponensial dengan rate = 1. Berapakah nilai median dari data tersebut? Gunakan set.seed(123)
# Set seed untuk reproduksibilitas
set.seed(123)
# Simulasikan 100 data dari distribusi eksponensial dengan rate = 1
data_expo <- rexp(100, rate = 1)
# Tampilkan beberapa nilai sampel pertama
head(data_expo)
## [1] 0.84345726 0.57661027 1.32905487 0.03157736 0.05621098 0.31650122
# Hitung statistik ringkasan
summary(data_expo)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.004599 0.314050 0.847754 1.045719 1.468794 7.211008
# Hitung median dengan fungsi median()
median_value <- median(data_expo)
print(paste("Nilai median:", median_value))
## [1] "Nilai median: 0.847754047467821"
Buatlah simulasi data dengan 3 variabel prediktorx1 <- rnorm(100) x2 <- x1 + rnorm(100, 0, 0.01) x3 <- rnorm(100) y <- 3 + 2x1 - 1x3 + rnorm(100) Buat model lm(y ~ x1 + x2 + x3). Berdasarkan output model, manakah pernyataan berikut yang paling tepat? Gunakan set.seed(42)
# Set seed untuk reproduksibilitas
set.seed(42)
# Simulasi data
x1 <- rnorm(100)
x2 <- x1 + rnorm(100, 0, 0.01) # x2 sangat berkorelasi dengan x1
x3 <- rnorm(100)
y <- 3 + 2*x1 - 1*x3 + rnorm(100)
# Lihat korelasi antar variabel
cor_matrix <- cor(cbind(x1, x2, x3))
print("Matriks Korelasi:")
## [1] "Matriks Korelasi:"
print(cor_matrix)
## x1 x2 x3
## x1 1.0000000 0.9999624 -0.1447773
## x2 0.9999624 1.0000000 -0.1441143
## x3 -0.1447773 -0.1441143 1.0000000
# Buat model regresi
model <- lm(y ~ x1 + x2 + x3)
summary_model <- summary(model)
print(summary_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
# Cek Variance Inflation Factor (VIF)
library(car)
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.3
vif_values <- vif(model)
print("Nilai VIF:")
## [1] "Nilai VIF:"
print(vif_values)
## x1 x2 x3
## 13366.880011 13364.265465 1.027438
Buat 100 data acak dari distribusi normal dengan mean 50 dan sd 10. Hitung standar deviasi dari data tersebut. Gunakan set.seed(123)
# Set seed untuk reproducibility
set.seed(123)
# Menghasilkan 100 data acak dari distribusi normal dengan mean=50 dan sd=10
data <- rnorm(100, mean=50, sd=10)
# Menghitung standar deviasi dari data
sd_hasil <- sd(data)
print(paste("Standar deviasi dari data:", round(sd_hasil, 2)))
## [1] "Standar deviasi dari data: 9.13"
Manakah kode berikut yang benar untuk membuat model regresi linear dari y terhadap x?
set.seed(123)
x <- rnorm(100, mean = 50, sd = 10)
y <- 5 + 0.7 * x + rnorm(100, mean = 0, sd = 5)
reg <- lm(y ~ x)
summary(reg)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.5367 -3.4175 -0.4375 2.9032 16.4520
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.79778 2.76324 2.098 0.0385 *
## x 0.67376 0.05344 12.608 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.854 on 98 degrees of freedom
## Multiple R-squared: 0.6186, Adjusted R-squared: 0.6147
## F-statistic: 159 on 1 and 98 DF, p-value: < 2.2e-16
plot(x, y, main = "Scatterplot dengan Garis Regresi", pch = 19, col = "blue")
abline(reg, col = "red", lwd = 2)
Dari data rnorm(100, mean=70, sd=5), berapakah nilai maksimum dari data tersebut? Gunakan set.seed(123)
# Set seed untuk reproducibility
set.seed(123)
# Menghasilkan 100 data acak dari distribusi normal dengan mean=70 dan sd=5
data <- rnorm(100, mean=70, sd=5)
# Menghitung nilai maksimum
max_value <- max(data)
print(paste("Nilai maksimum:", round(max_value, 2)))
## [1] "Nilai maksimum: 80.94"
# Melihat beberapa nilai tertinggi dari data
sorted_data <- sort(data, decreasing = TRUE)
print("Lima nilai tertinggi:")
## [1] "Lima nilai tertinggi:"
print(head(sorted_data, 5))
## [1] 80.93666 80.84478 80.25042 78.93457 78.57532
Manakah kode berikut yang benar untuk mensimulasikan 100 nilai dari distribusi normal dengan mean = 70 dan sd = 15?
data3 <- rnorm(100, 70, 15)
head(data3)
## [1] 59.34390 73.85326 66.29962 64.78686 55.72572 69.32458
# Sintaks yang salah (tidak dijalankan)
# rnorm(n = 100, mu = 70, sigma = 15)
# rnorm(100, sd = 70, mean = 15)
# rnorm(70, 15, 100)
Gunakan sample() untuk membuat 100 data kategorik (“A”, “B”, “C”) dengan probabilitas masing-masing 0.2, 0.3, 0.5. Berapa banyak kategori “B”? Gunakan set.seed(123)
# Set seed untuk reproducibility
set.seed(123)
# Membuat 100 data kategorik dengan fungsi sample()
kategori <- c("A", "B", "C")
probabilitas <- c(0.2, 0.3, 0.5)
data_kategorik <- sample(kategori, size = 100, replace = TRUE, prob = probabilitas)
# Menghitung frekuensi masing-masing kategori
tabel_frekuensi <- table(data_kategorik)
print(tabel_frekuensi)
## data_kategorik
## A B C
## 18 29 53
# Menghitung jumlah kategori "B"
jumlah_B <- sum(data_kategorik == "B")
print(paste("Jumlah kategori B:", jumlah_B))
## [1] "Jumlah kategori B: 29"