मोंटे कार्लो सिमुलेशन की मूल बातें
बार-बार यादृच्छिक नमूने लेकर pi और अन्य राशियों का अनुमान लगाएँ।
मोंटे कार्लो सिमुलेशन की मूल बातें, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
मोंटे कार्लो क्या है
मोंटे कार्लो सिमुलेशन उन राशियों का अनुमान लगाने के लिए बार-बार रैंडम सैंपलिंग का उपयोग करता है, जिनकी विश्लेषणात्मक गणना कठिन होती है। मोनाको के कैसिनो के नाम पर आधारित यह विधि वित्त, भौतिकी, सांख्यिकी और AI में समाकलन, अनुकूलन और अनुमान के लिए उपयोग की जाती है।
# Core idea: approximate deterministic quantities
# using random sampling and the Law of Large Numbers
# Example: estimate probability that sum of two dice > 8
set.seed(42)
n <- 10000
die1 <- sample(1:6, n, replace = TRUE)
die2 <- sample(1:6, n, replace = TRUE)
total <- die1 + die2
# Monte Carlo estimate
mc_estimate <- mean(total > 8)
cat('MC estimate P(sum > 8):', mc_estimate, '\n')
# Exact probability
exact <- sum(outer(1:6, 1:6, '+') > 8) / 36
cat('Exact probability:', exact)रैंडम बिंदुओं से पाई का अनुमान
क्लासिक मोंटे कार्लो प्रदर्शन: इकाई वर्ग में बिंदु रैंडम रूप से रखें। इकाई वृत्त के अंदर आने वाले बिंदुओं का अंश π/4 का अनुमान देता है। जैसे-जैसे n → ∞, अनुमान π की ओर अभिसरित होता है।
set.seed(42)
n <- 100000
# Random points in [-1, 1] x [-1, 1] unit square
x <- runif(n, -1, 1)
y <- runif(n, -1, 1)
# Check if inside unit circle: x^2 + y^2 <= 1
inside <- (x^2 + y^2) <= 1
# Pi estimate: fraction inside * area of square
pi_estimate <- 4 * mean(inside)
cat('Pi estimate:', pi_estimate, '\n')
cat('True pi:', pi, '\n')
cat('Error:', abs(pi_estimate - pi))अपेक्षित मान का अनुमान
मोंटे कार्लो समाकलन: E[f(X)] ≈ (1/n) Σ f(Xᵢ), जहाँ X₁,...,Xₙ iid ड्रॉ हैं। a से b तक g(x) का समाकलन करने के लिए, x को Uniform(a,b) से सैंपल करें; E[g(X)] ≈ (b-a) * mean(g(samples))।
set.seed(42)
# Estimate integral of sin(x) from 0 to pi
# Exact value = 2
n <- 50000
x_samples <- runif(n, min = 0, max = pi)
integrand_vals <- sin(x_samples)
# MC estimate = (b-a) * mean(f(x))
mc_integral <- pi * mean(integrand_vals) # (pi - 0) * mean
cat('MC estimate of integral:', mc_integral, '\n')
cat('Exact value: 2\n')
cat('Error:', abs(mc_integral - 2), '\n')
# Standard error of the estimate
se <- pi * sd(integrand_vals) / sqrt(n)
cat('Standard error:', se)बार-बार सिमुलेशन के लिए replicate()
replicate(n, expr) R का अंतर्निहित फ़ंक्शन है, जो किसी सिमुलेशन को n बार चलाकर परिणाम एकत्र करता है। सरल सिमुलेशन के लिए यह for लूप से अधिक साफ़ है और वेक्टर या मैट्रिक्स लौटाता है।
set.seed(42)
# Simulate sample mean of 30 N(0,1) draws
# Repeat 10000 times to study sampling distribution
sample_means <- replicate(10000, {
x <- rnorm(30) # sample of 30
mean(x) # compute mean
})
# Central Limit Theorem: sample mean ~ N(0, 1/sqrt(30))
mean(sample_means) # ~0
sd(sample_means) # ~1/sqrt(30) = 0.183
# 95% CI width
diff(quantile(sample_means, c(0.025, 0.975)))
# Compare to theoretical
2 * 1.96 / sqrt(30)बड़ी संख्याओं के नियम का प्रदर्शन
बड़ी संख्याओं का नियम कहता है कि n बढ़ने पर सैंपल माध्य वास्तविक माध्य की ओर अभिसरित होता है। R में इस अभिसरण को देखना बताता है कि मोंटे कार्लो क्यों काम करता है और अनुमान कितनी तेज़ी से स्थिर होते हैं।
set.seed(42)
# Rolling a fair die: true mean = 3.5
n_max <- 10000
rolls <- sample(1:6, n_max, replace = TRUE)
cumulative_means <- cumsum(rolls) / seq_along(rolls)
# Show convergence at different sample sizes
ns <- c(10, 100, 1000, 5000, 10000)
results <- data.frame(
n = ns,
mean = cumulative_means[ns],
error = abs(cumulative_means[ns] - 3.5)
)
print(results)
# Error decreases as n increasesविचरण घटाना: एंटीथेटिक वैरिएट
यूनिफ़ॉर्म सैंपल u और उनके पूरक (1-u) को एक एंटीथेटिक युग्म के रूप में उपयोग करें। उनका ऋणात्मक सहसंबंध समान संख्या में फ़ंक्शन मूल्यांकनों के साथ अनुमानक के विचरण को 50% तक घटाता है।
set.seed(42)
n <- 1000
# Standard MC: estimate E[exp(U)] where U~Uniform(0,1)
# True value = e - 1 = 1.718282
u <- runif(n)
mc_std <- mean(exp(u))
# Antithetic variates: use u AND 1-u
u_anti <- runif(n/2)
mc_anti <- mean((exp(u_anti) + exp(1 - u_anti)) / 2)
cat('True value:', exp(1) - 1, '\n')
cat('Standard MC:', mc_std, '\n')
cat('Antithetic MC:', mc_anti, '\n')
# Variance comparison
var_std <- var(exp(runif(10000)))
var_anti <- var((exp(runif(5000)) + exp(1 - runif(5000)))/2)
cat('Variance ratio (anti/std):', var_anti/var_std)नियंत्रण वैरिएट
नियंत्रण वैरिएट ऐसा फ़ंक्शन है जिसका अपेक्षित मान ज्ञात हो और जो लक्ष्य से सहसंबद्ध हो। विचरण घटाने के लिए इसे उचित पैमाने पर घटाएँ। क्लासिक उदाहरण: ऐसे सहसंबद्ध g(X) का उपयोग करके E[f(X)] का अनुमान लगाना, जिसका माध्य ज्ञात हो।
set.seed(42)
n <- 5000
# Estimate E[exp(U)] where U~Uniform(0,1)
# True: e - 1 = 1.71828
# Control variate: g(U) = U, E[U] = 0.5
u <- runif(n)
f_vals <- exp(u) # target
g_vals <- u # control variate
# Optimal coefficient c = -Cov(f,g)/Var(g)
c_star <- -cov(f_vals, g_vals) / var(g_vals)
# Control variate estimator
mc_cv <- mean(f_vals + c_star * (g_vals - 0.5))
cat('Standard MC:', mean(f_vals), '\n')
cat('Control variate MC:', mc_cv, '\n')
cat('True value:', exp(1) - 1)
# Variance reduction factor
var(f_vals) / var(f_vals + c_star * (g_vals - 0.5))प्रायिकता अनुमान के लिए मोंटे कार्लो
मोंटे कार्लो उन जटिल प्रायिकताओं का अनुमान लगाने में उत्कृष्ट है जिनकी विश्लेषणात्मक गणना संभव नहीं होती। रैंडम प्रक्रिया का कई बार सिमुलेशन करें और घटना घटित होने वाले अवसरों का अंश निकालें।
set.seed(123)
# Birthday problem: P(at least 2 people share birthday)
# in a group of n people
birtday_collision <- function(n_people) {
birthdays <- sample(1:365, n_people, replace = TRUE)
length(birthdays) != length(unique(birthdays))
}
# Estimate for groups of size 10, 23, 50
sizes <- c(10, 23, 50)
for (sz in sizes) {
p <- mean(replicate(5000, birt_day_collision <- {
bd <- sample(1:365, sz, replace = TRUE)
length(bd) != length(unique(bd))
}))
cat('n =', sz, ': P(collision) ~', round(p, 3), '\n')
}ज्यामितीय ब्राउनियन गति का सिमुलेशन
स्टॉक की कीमतों का मॉडल अक्सर ज्यामितीय ब्राउनियन गति के रूप में बनाया जाता है: S(t+dt) = S(t) * exp((μ - σ²/2)dt + σ√dt * Z), जहाँ Z~N(0,1)। मोंटे कार्लो विकल्पों के मूल्य निर्धारण के लिए कीमतों के पथ बनाता है।
set.seed(42)
S0 <- 100 # initial price
mu <- 0.05 # annual drift
sigma <- 0.2 # annual volatility
T <- 1 # 1 year
n_steps <- 252 # daily steps
dt <- T / n_steps
# Simulate one price path
Z <- rnorm(n_steps)
log_returns <- (mu - 0.5 * sigma^2) * dt + sigma * sqrt(dt) * Z
price_path <- S0 * exp(cumsum(log_returns))
cat('Final price:', round(price_path[n_steps], 2), '\n')
cat('Min price:', round(min(price_path), 2), '\n')
cat('Max price:', round(max(price_path), 2))MC विकल्प मूल्य निर्धारण
मोंटे कार्लो का उपयोग करके यूरोपीय कॉल विकल्प का मूल्य निर्धारित करें: अंतिम स्टॉक कीमतों का कई बार सिमुलेशन करें, पेऑफ़ max(S_T - K, 0) निकालें, फिर औसत पेऑफ़ को e^(-rT) से डिस्काउंट करें।
set.seed(42)
S0 <- 100; K <- 105; r <- 0.05; sigma <- 0.2; T <- 1
n_sim <- 50000
# Final stock prices under risk-neutral measure
Z <- rnorm(n_sim)
ST <- S0 * exp((r - 0.5 * sigma^2) * T + sigma * sqrt(T) * Z)
# Call option payoff
payoff <- pmax(ST - K, 0)
# Discounted expected payoff
call_price <- exp(-r * T) * mean(payoff)
se <- exp(-r * T) * sd(payoff) / sqrt(n_sim)
cat('Call price:', round(call_price, 4), '\n')
cat('95% CI: [', round(call_price - 1.96*se, 4),
',', round(call_price + 1.96*se, 4), ']')MC की अभिसरण दर
मोंटे कार्लो O(1/√n) की दर से अभिसरित होता है: त्रुटि आधी करने के लिए 4 गुना अधिक सैंपल चाहिए। MC अनुमान की मानक त्रुटि σ/√n होती है, जहाँ σ इंटीग्रैंड का मानक विचलन है।
set.seed(42)
# Demonstrate MC convergence for pi estimation
estimate_pi <- function(n) {
x <- runif(n, -1, 1)
y <- runif(n, -1, 1)
4 * mean(x^2 + y^2 <= 1)
}
# Sample sizes: powers of 10
ns <- 10^(1:5)
estimates <- sapply(ns, function(n) {
set.seed(42)
estimate_pi(n)
})
data.frame(
n = ns,
pi_estimate = round(estimates, 5),
error = round(abs(estimates - pi), 5)
)त्वरित जाँच
मोंटे कार्लो सिमुलेशन की मूल बातों से संबंधित अपनी समझ जाँचें।
पुनरावलोकन: मोंटे कार्लो की मूल बातें
मुख्य बातें: मोंटे कार्लो कई रैंडम सैंपलों का औसत लेकर राशियों का अनुमान लगाता है। बार-बार सिमुलेशन के लिए replicate() का उपयोग करें। बड़ी संख्याओं का नियम अभिसरण की गारंटी देता है। त्रुटि 1/√n के अनुसार घटती है—त्रुटि आधी करने के लिए सैंपल चार गुना करें। विचरण घटाने की तकनीकें (एंटीथेटिक वैरिएट, नियंत्रण वैरिएट) अधिक सैंपल लिए बिना दक्षता बढ़ाती हैं। उपयोग: समाकलन, प्रायिकता अनुमान, विकल्प मूल्य निर्धारण और सिमुलेशन।
set.seed(42)
# Monte Carlo template:
# 1. Define simulation function
simulate_once <- function() {
x <- runif(1, -1, 1)
y <- runif(1, -1, 1)
(x^2 + y^2) <= 1
}
# 2. Replicate many times
n <- 10000
results <- replicate(n, simulate_once())
# 3. Estimate quantity of interest
pi_mc <- 4 * mean(results)
# 4. Quantify uncertainty
se <- 4 * sd(results) / sqrt(n)
cat('Pi:', pi_mc, '+/-', round(1.96*se, 4))एआई शिक्षक के साथ R सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 43
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “मोंटे कार्लो सिमुलेशन की मूल बातें” पाठ निःशुल्क है?
हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “मोंटे कार्लो सिमुलेशन की मूल बातें” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“मोंटे कार्लो सिमुलेशन की मूल बातें” में मैं क्या सीखूँगा?
बार-बार यादृच्छिक नमूने लेकर pi और अन्य राशियों का अनुमान लगाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“मोंटे कार्लो सिमुलेशन की मूल बातें” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- set.seed() और पुनरुत्पादकता
- यादृच्छिक वितरण उत्पन्न करना
- मोंटे कार्लो सिमुलेशन की मूल बातें
- R में बूटस्ट्रैप पुनर्नमूनाकरण