R में बूटस्ट्रैप पुनर्नमूनाकरण
प्रतिस्थापन के साथ sample() का प्रयोग करके बूटस्ट्रैप विश्वसनीयता अंतराल लागू करें।
R में बूटस्ट्रैप पुनर्नमूनाकरण, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
बूटस्ट्रैप क्या है
बूटस्ट्रैप एक पुनःसैंपलिंग विधि है, जो देखे गए डेटा से प्रतिस्थापन के साथ पुनःसैंपलिंग करके किसी सांख्यिकी के सैंपलिंग वितरण का अनुमान लगाती है। इसमें वितरण संबंधी धारणाओं की आवश्यकता नहीं होती—डेटा ही वितरण है।
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)माध्य का बूटस्ट्रैप वितरण
कई बूटस्ट्रैप पुनःसैंपल बनाएँ, प्रत्येक पर सांख्यिकी की गणना करें और परिणाम एकत्र करें। यह बूटस्ट्रैप वितरण सांख्यिकी के सैंपलिंग वितरण का सन्निकटन करता है।
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))किसी भी सांख्यिकी के लिए बूटस्ट्रैप
बूटस्ट्रैप किसी भी सांख्यिकी के लिए काम करता है—माध्यिका, सहसंबंध, प्रतिगमन गुणांक या ट्रिम किया हुआ माध्य। रिपीट लूप में mean() को अपनी रुचि की सांख्यिकी से बदल दें।
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))बूटस्ट्रैप विश्वास अंतराल: प्रतिशतक विधि
सबसे सरल बूटस्ट्रैप CI: बूटस्ट्रैप वितरण के क्वांटाइल लें। 95% CI में 2.5वाँ और 97.5वाँ प्रतिशतक उपयोग होता है। यह तेज़ और सहज है, लेकिन विषम सांख्यिकी के लिए कवरेज संबंधी समस्याएँ हो सकती हैं।
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')बूटस्ट्रैप मानक त्रुटि
बूटस्ट्रैप मानक त्रुटि केवल sd(boot_statistics) होती है। यह वितरण संबंधी धारणाएँ बनाए बिना अनुमान लगाती है कि जनसंख्या से लिए गए बार-बार के सैंपलों में सांख्यिकी कितनी बदल सकती है।
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 विश्वास अंतराल
BCa (Bias-Corrected and Accelerated) CI प्रतिशतक CI से अधिक सटीक होता है, विशेषकर विषम या पक्षपाती सांख्यिकी के लिए। यह बूटस्ट्रैप वितरण में पक्षपात और विषमता के लिए समायोजन करता है।
# 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)प्रतिगमन के लिए बूटस्ट्रैप
डेटा फ़्रेम की पंक्तियों का पुनःसैंपल करके प्रतिगमन CI बनाएँ। यह गैर-सामान्य त्रुटियों को संभालता है और सामान्यता की धारणाओं के बिना वैध अनुमान देता है।
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))बूटस्ट्रैप प्रतिकृतियों की संख्या
आपको कितनी बूटस्ट्रैप प्रतिकृतियाँ B चाहिए? मानक त्रुटियों के लिए: B=200-500। प्रतिशतक CI के लिए: B=1000-2000। BCa CI के लिए: B=2000-5000। अधिक संख्या हमेशा बेहतर होती है, लेकिन 10,000 के बाद लाभ घटता जाता है।
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 increasesयुग्मित बूटस्ट्रैप
दो-सैंपल समस्याओं में, युग्म (x, y) को साथ में पुनःसैंपल करें—x और y को स्वतंत्र रूप से नहीं। इससे युग्म के भीतर की निर्भरता संरचना बनी रहती है और सहसंबंध तथा युग्मित अंतरों के लिए वैध CI मिलते हैं।
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))बूटस्ट्रैप परिकल्पना परीक्षण
बूटस्ट्रैप से परिकल्पनाओं का परीक्षण भी किया जा सकता है। H₀: θ=θ₀ का परीक्षण करने के लिए बूटस्ट्रैप सैंपलों को स्थानांतरित या पुनःकेंद्रित करके शून्य वितरण बनाएँ, फिर देखी गई सांख्यिकी से अधिक मानों का अंश लेकर p-मूल्य निकालें।
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 पैकेज का अवलोकन
boot पैकेज boot(data, statistic, R) के साथ उन्नत सुविधाएँ प्रदान करता है: boot.ci() के माध्यम से BCa CI, समानांतर कंप्यूटिंग और स्तरीकृत सैंपलिंग। statistic फ़ंक्शन को डेटा और एक इंडेक्स वेक्टर मिलता है।
# 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))त्वरित जाँच
R में बूटस्ट्रैप पुनःसैंपलिंग से संबंधित अपनी समझ जाँचें।
पुनरावलोकन: बूटस्ट्रैप पुनःसैंपलिंग
मुख्य बातें: बूटस्ट्रैप sample(x, n, replace=TRUE) का उपयोग करके प्रतिस्थापन के साथ डेटा का पुनःसैंपल बनाता है। B बूटस्ट्रैप सांख्यिकी बनाने के लिए replicate(B, ...) का उपयोग करें। sd(boot_stats) बूटस्ट्रैप SE देता है। प्रतिशतक CI: quantile(boot_stats, c(0.025, 0.975))। CI के लिए B≥2000 का उपयोग करें। boot पैकेज BCa CI और समानांतर कंप्यूटिंग जोड़ता है। बूटस्ट्रैप वितरण संबंधी धारणाओं के बिना किसी भी सांख्यिकी के लिए काम करता है।
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], ']')एआई शिक्षक के साथ R सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 43
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “R में बूटस्ट्रैप पुनर्नमूनाकरण” पाठ निःशुल्क है?
हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “R में बूटस्ट्रैप पुनर्नमूनाकरण” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“R में बूटस्ट्रैप पुनर्नमूनाकरण” में मैं क्या सीखूँगा?
प्रतिस्थापन के साथ sample() का प्रयोग करके बूटस्ट्रैप विश्वसनीयता अंतराल लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“R में बूटस्ट्रैप पुनर्नमूनाकरण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- set.seed() और पुनरुत्पादकता
- यादृच्छिक वितरण उत्पन्न करना
- मोंटे कार्लो सिमुलेशन की मूल बातें
- R में बूटस्ट्रैप पुनर्नमूनाकरण