R'de Bootstrap Yeniden Örnekleme
sample() işlevini yerine koymalı örneklemeyle kullanarak bootstrap güven aralıkları oluşturun.
R'de Bootstrap Yeniden Örnekleme, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
Bootstrap Nedir?
Bootstrap, gözlemlenen verilerden yerine koyarak yeniden örnekleme yaparak bir istatistiğin örnekleme dağılımını tahmin eden bir yeniden örnekleme yöntemidir. Dağılıma ilişkin varsayım gerektirmez; veriler dağılımın kendisidir.
set.seed(42)
# Original sample of 20 observations
original_data <- c(14, 18, 11, 13, 6, 8, 2, 17,
20, 10, 15, 12, 9, 16, 7, 3,
19, 5, 4, 1)
n <- length(original_data)
# One bootstrap resample: sample WITH replacement
bootstrap_sample1 <- sample(original_data, n, replace = TRUE)
print(bootstrap_sample1)
# Contains repeats! Some original values are missing.
mean(original_data) # original mean
mean(bootstrap_sample1) # bootstrap mean (different)Ortalamanın Bootstrap Dağılımı
Çok sayıda bootstrap yeniden örneği oluşturun, her biri üzerinde istatistiği hesaplayın ve sonuçları toplayın. Bu bootstrap dağılımı, istatistiğin örnekleme dağılımını yaklaşık olarak verir.
set.seed(42)
x <- c(14, 18, 11, 13, 6, 8, 2, 17, 20, 10,
15, 12, 9, 16, 7, 3, 19, 5, 4, 1)
n <- length(x)
B <- 5000 # number of bootstrap replicates
# Bootstrap distribution of the mean
boot_means <- replicate(B, {
x_star <- sample(x, n, replace = TRUE)
mean(x_star)
})
cat('Original mean:', mean(x), '\n')
cat('Bootstrap mean:', mean(boot_means), '\n')
cat('Bootstrap SE:', sd(boot_means), '\n')
cat('Theoretical SE:', sd(x)/sqrt(n))Her İstatistik için Bootstrap
Bootstrap herhangi bir istatistik için çalışır: medyan, korelasyon, regresyon katsayıları ve kırpılmış ortalama. Yineleme döngüsünde mean() işlevini ilgilendiğiniz istatistikle değiştirmeniz yeterlidir.
set.seed(42)
x <- c(2, 4, 6, 8, 10, 12, 100, 1, 3, 5)
# Notice the outlier 100 - makes the mean unreliable
B <- 5000; n <- length(x)
# Bootstrap distribution of the median
boot_medians <- replicate(B, {
median(sample(x, n, replace = TRUE))
})
# Bootstrap distribution of the trimmed mean (10%)
boot_tmeans <- replicate(B, {
mean(sample(x, n, replace = TRUE), trim = 0.1)
})
cat('Sample median:', median(x), '\n')
cat('Bootstrap SE of median:', sd(boot_medians), '\n')
cat('Bootstrap SE of trimmed mean:', sd(boot_tmeans))Bootstrap Güven Aralıkları: Yüzdelik Yöntemi
En basit bootstrap GA'sı, bootstrap dağılımının kantillerini almaktır. %95 GA, 2,5. ve 97,5. yüzdelik dilimleri kullanır. Hızlı ve sezgiseldir; ancak çarpık istatistiklerde kapsama sorunları yaşanabilir.
set.seed(42)
x <- rnorm(30, mean = 5, sd = 2)
B <- 5000; n <- length(x)
# Bootstrap CI for the mean
boot_means <- replicate(B, mean(sample(x, n, replace = TRUE)))
# Percentile CI
ci_percentile <- quantile(boot_means, c(0.025, 0.975))
cat('Percentile CI:', round(ci_percentile, 3), '\n')
# For comparison: t-interval (parametric)
t_ci <- mean(x) + qt(c(0.025, 0.975), df = n-1) * sd(x)/sqrt(n)
cat('t-interval CI:', round(t_ci, 3), '\n')
cat('True mean: 5')Bootstrap Standart Hatası
Bootstrap standart hatası basitçe sd(boot_statistics) değeridir. Dağılım varsayımlarında bulunmadan, anakütleden tekrarlı örnekler alınsaydı istatistiğin ne kadar değişeceğini tahmin eder.
set.seed(42)
# Bootstrap SE for the ratio of two means
group_a <- rnorm(20, mean = 10, sd = 2)
group_b <- rnorm(20, mean = 8, sd = 2)
all_data <- data.frame(
value = c(group_a, group_b),
group = rep(c('A', 'B'), each = 20)
)
B <- 4000; n <- nrow(all_data)
boot_ratio <- replicate(B, {
idx <- sample(1:n, n, replace = TRUE)
d <- all_data[idx, ]
mean(d$value[d$group == 'A']) /
mean(d$value[d$group == 'B'])
})
cat('Observed ratio:', mean(group_a)/mean(group_b), '\n')
cat('Bootstrap SE:', round(sd(boot_ratio), 4), '\n')
cat('95% CI:', round(quantile(boot_ratio, c(.025,.975)), 3))BCa Güven Aralığı
BCa (Bias-Corrected and Accelerated) GA'sı, özellikle çarpık veya yanlı istatistiklerde yüzdelik GA'dan daha doğrudur. Bootstrap dağılımındaki yanlılığı ve çarpıklığı düzeltir.
# BCa CI implementation
bca_ci <- function(data, stat_fn, B = 2000, alpha = 0.05) {
n <- length(data)
theta_hat <- stat_fn(data)
# Bootstrap replicates
boot_vals <- replicate(B, stat_fn(sample(data, n, replace = TRUE)))
# Bias correction z0
z0 <- qnorm(mean(boot_vals < theta_hat))
# Acceleration a (jackknife)
jk <- sapply(seq_len(n), function(i) stat_fn(data[-i]))
num <- sum((mean(jk) - jk)^3)
den <- 6 * (sum((mean(jk) - jk)^2))^(3/2)
a <- num / den
# Adjusted quantiles
z_alpha <- qnorm(c(alpha/2, 1 - alpha/2))
p_adj <- pnorm(z0 + (z0 + z_alpha) / (1 - a * (z0 + z_alpha)))
quantile(boot_vals, p_adj)
}
set.seed(42)
x <- rexp(25, rate = 0.5) # skewed distribution
bca_ci(x, median)Regresyon için Bootstrap
Veri çerçevesinin satırlarını yeniden örnekleyerek regresyon GA'ları oluşturun. Bu yöntem normal dağılmayan hataları ele alır ve normallik varsayımı olmadan geçerli çıkarım sağlar.
set.seed(42)
n <- 40
x <- runif(n, 0, 10)
y <- 2 + 1.5 * x + rnorm(n, sd = 2)
df <- data.frame(x = x, y = y)
B <- 3000
# Bootstrap the slope coefficient
boot_slopes <- replicate(B, {
idx <- sample(1:n, n, replace = TRUE)
d_boot <- df[idx, ]
coef(lm(y ~ x, data = d_boot))[2]
})
cat('OLS slope:', round(coef(lm(y~x, data=df))[2], 3), '\n')
cat('Bootstrap SE of slope:', round(sd(boot_slopes), 4), '\n')
cat('Bootstrap 95% CI:', round(quantile(boot_slopes, c(.025,.975)), 3))Bootstrap Yineleme Sayısı
Kaç bootstrap yinelemesine, B'ye, ihtiyacınız var? Standart hatalar için: B=200-500. Yüzdelik GA'lar için: B=1000-2000. BCa GA'ları için: B=2000-5000. Daha fazla yineleme genellikle daha iyidir; ancak 10.000'in üzerinde getiriler azalır.
set.seed(42)
x <- rnorm(50, mean = 3, sd = 1)
B_values <- c(100, 500, 1000, 2000, 5000, 10000)
# See how CI width varies with B
results <- sapply(B_values, function(B) {
boot_m <- replicate(B, mean(sample(x, length(x), replace = TRUE)))
q <- quantile(boot_m, c(0.025, 0.975))
q[2] - q[1] # CI width
})
result_df <- data.frame(B = B_values, ci_width = round(results, 4))
print(result_df)
# CI width stabilizes as B increasesEşleştirilmiş Bootstrap
İki örneklemli problemlerde çiftleri (x, y) birlikte yeniden örnekleyin; x ve y'yi bağımsız olarak örneklemeyin. Bu, çift içi bağımlılık yapısını koruyarak korelasyon ve eşleştirilmiş farklar için geçerli GA'lar sağlar.
set.seed(42)
# Paired data: before/after treatment
before <- c(10, 12, 8, 15, 11, 9, 14, 13)
after <- c(12, 14, 9, 16, 11, 10, 15, 12)
n <- length(before)
B <- 4000
# Bootstrap paired mean difference
boot_diff <- replicate(B, {
idx <- sample(1:n, n, replace = TRUE)
mean(after[idx] - before[idx])
})
observed_diff <- mean(after - before)
cat('Observed mean diff:', observed_diff, '\n')
cat('Bootstrap SE:', round(sd(boot_diff), 4), '\n')
cat('95% CI:', round(quantile(boot_diff, c(0.025, 0.975)), 3))Bootstrap Hipotez Testi
Bootstrap hipotezleri de test edebilir. H₀: θ=θ₀ hipotezini test etmek için bootstrap örneklerini kaydırarak veya yeniden merkezleyerek sıfır dağılımını oluşturun; ardından p-değerini, gözlemlenen istatistiği aşan sonuçların oranı olarak hesaplayın.
set.seed(42)
# Test H0: mean = 0 vs H1: mean != 0
x <- rnorm(30, mean = 0.5, sd = 2)
theta0 <- 0 # null hypothesis
observed_t <- (mean(x) - theta0) / (sd(x) / sqrt(length(x)))
B <- 5000; n <- length(x)
# Shift x to have mean = theta0 under H0
x_centered <- x - mean(x) + theta0
boot_t <- replicate(B, {
x_star <- sample(x_centered, n, replace = TRUE)
(mean(x_star) - theta0) / (sd(x_star) / sqrt(n))
})
p_value <- mean(abs(boot_t) >= abs(observed_t))
cat('Observed t:', round(observed_t, 3), '\n')
cat('Bootstrap p-value:', round(p_value, 4))Boot Paketine Genel Bakış
boot paketi, gelişmiş özelliklere sahip boot(data, statistic, R) işlevini sağlar: boot.ci() ile BCa GA'ları, paralel hesaplama ve tabakalı örnekleme. statistic işlevi verileri ve bir dizin vektörünü alır.
# library(boot) # uncomment to use
# The boot() statistic function signature:
# statistic(data, indices) -> scalar or vector
# Example (conceptual - requires boot package):
# mean_stat <- function(data, indices) {
# mean(data[indices])
# }
# results <- boot(data = x, statistic = mean_stat, R = 5000)
# boot.ci(results, type = c('perc', 'bca')) # CIs
# plot(results) # histogram of bootstrap distribution
# Manual equivalent:
set.seed(42)
x <- rnorm(30, mean = 5)
B <- 2000
boot_vals <- replicate(B, mean(sample(x, length(x), replace = TRUE)))
quantile(boot_vals, c(0.025, 0.975))Hızlı Kontrol
R'de bootstrap yeniden örneklemesi konusundaki anlayışınızı test edin.
Özet: Bootstrap Yeniden Örneklemesi
Temel çıkarımlar: Bootstrap, sample(x, n, replace=TRUE) kullanarak verileri yerine koyarak yeniden örnekler. B bootstrap istatistiği üretmek için replicate(B, ...) kullanın. sd(boot_stats) bootstrap SH'sini verir. Yüzdelik GA: quantile(boot_stats, c(0.025, 0.975)). GA'lar için B≥2000 kullanın. boot paketi BCa GA'ları ve paralel hesaplama ekler. Bootstrap, dağılım varsayımı olmadan her istatistik için çalışır.
set.seed(42)
x <- c(3, 5, 7, 2, 9, 4, 6, 8, 1, 10)
n <- length(x); B <- 3000
# Generic bootstrap template:
boot_stat <- replicate(B, {
x_star <- sample(x, n, replace = TRUE)
median(x_star) # replace with any statistic
})
# Summary
cat('Original median:', median(x), '\n')
cat('Bootstrap SE:', round(sd(boot_stat), 3), '\n')
ci <- quantile(boot_stat, c(0.025, 0.975))
cat('95% Percentile CI: [', ci[1], ',', ci[2], ']')Yapay zeka eğitmeniyle R öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 43
- Dersler
- 159
Sıkça Sorulan Sorular
“R'de Bootstrap Yeniden Örnekleme” dersi ücretsiz mi?
Evet — “R'de Bootstrap Yeniden Örnekleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“R'de Bootstrap Yeniden Örnekleme” dersinde ne öğreneceğim?
sample() işlevini yerine koymalı örneklemeyle kullanarak bootstrap güven aralıkları oluşturun. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“R'de Bootstrap Yeniden Örnekleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- set.seed() ve Yeniden Üretilebilirlik
- Rastgele Dağılımlar Üretme
- Monte Carlo Simülasyonunun Temelleri
- R'de Bootstrap Yeniden Örnekleme