Rastgele Dağılımlar Üretme
Normal, uniform, binom ve Poisson dağılımlarından örnekler alın.
Rastgele Dağılımlar Üretme, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 2. 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.
R'nin Dağılım İşlevleri
R, her dağılım için dört işlev sağlar: r (rastgele), d (yoğunluk), p (birikimli olasılık), q (kantil). r* işlevleri rastgele örnekler üretir.
# Pattern: r<dist>(n, param1, param2, ...)
# d<dist>(x, ...) -> density/probability
# p<dist>(q, ...) -> cumulative probability
# q<dist>(p, ...) -> quantile
# Example with normal distribution:
rnorm(5, mean = 0, sd = 1) # 5 random draws
dnorm(0, mean = 0, sd = 1) # density at x=0
pnorm(1.96, mean = 0, sd = 1) # P(X <= 1.96)
qnorm(0.975, mean = 0, sd = 1) # z-score for 97.5%
cat('Four functions: r, d, p, q for each distribution')rnorm(): Normal Dağılım
rnorm(n, mean, sd), N(mean, sd²) dağılımından n örnek üretir. Varsayılan dağılım standart normal dağılım olan N(0,1)'dir. Normal dağılım, istatistiğin temel aracıdır; merkezi limit teoremi onun yaygınlığını garanti eder.
set.seed(42)
# Standard normal (mean=0, sd=1)
z_scores <- rnorm(1000)
mean(z_scores) # ~0
sd(z_scores) # ~1
# Custom normal (IQ scores: mean=100, sd=15)
set.seed(42)
iq_scores <- rnorm(100, mean = 100, sd = 15)
mean(iq_scores) # ~100
sd(iq_scores) # ~15
summary(iq_scores)
# About 68% within 1 sd
mean(abs(iq_scores - 100) < 15) # ~0.68runif(): Düzgün Dağılım
runif(n, min, max), min ile max arasında düzgün dağılmış n örnek üretir. Aralıktaki tüm değerlerin seçilme olasılığı eşittir. Varsayılan olarak runif(n), [0, 1] aralığında değerler verir.
set.seed(7)
# Default: uniform on [0, 1]
u <- runif(5)
print(u) # values in (0, 1)
# Uniform on [a, b]
temps <- runif(100, min = -10, max = 40) # temperatures
mean(temps) # ~15 (midpoint)
range(temps) # should be within [-10, 40]
# Discrete simulation using floor()
dice_rolls <- floor(runif(10, min = 1, max = 7))
print(dice_rolls) # integers 1-6
table(floor(runif(600, 1, 7))) # roughly equal countsrbinom(): Binom Dağılımı
rbinom(n, size, prob), her biri başarı olasılığı prob olan size Bernoulli denemesinden oluşan n binom denemesini benzetir. Bernoulli çekilişleri için size=1 kullanın.
set.seed(123)
# 10 coin flips (prob=0.5), repeated 5 times
coin_flips <- rbinom(5, size = 10, prob = 0.5)
print(coin_flips) # number of heads each time
# Bernoulli: single flip (size=1)
flips <- rbinom(20, size = 1, prob = 0.5)
print(flips) # 0s and 1s
mean(flips) # ~0.5
# Biased coin (prob=0.7)
biased <- rbinom(1000, size = 1, prob = 0.7)
mean(biased) # ~0.7
# Many trials: normal approximation kicks in
hundred_flips <- rbinom(1000, size = 100, prob = 0.5)
mean(hundred_flips) # ~50rpois(): Poisson Dağılımı
rpois(n, lambda), λ oranına sahip bir Poisson dağılımından n örnek üretir. Sayım verilerini modeller: web sitesinin dakika başına ziyaretleri, birim başına kusurlar ve saat başına çağrılar.
set.seed(5)
# Calls received per hour (average 3)
calls <- rpois(24, lambda = 3) # 24 hours
print(calls) # integers, mostly 1-6
mean(calls) # ~3 (expectation = lambda)
var(calls) # ~3 (variance = lambda for Poisson)
# Count the distribution
table(calls)
# Rare events (lambda=0.5)
rare_events <- rpois(100, lambda = 0.5)
table(rare_events) # mostly 0s and 1s
mean(rare_events) # ~0.5rexp(): Üstel Dağılım
rexp(n, rate), belirtilen orana sahip üstel dağılımdan n örnek üretir. Olaylar arasındaki süreyi (olaylar arası zamanları) modeller. Ortalama = 1/rate. Belleksiz olma özelliğine sahiptir.
set.seed(42)
# Time between customer arrivals (rate=2 per minute)
# Mean wait time = 1/2 = 0.5 minutes
arrival_times <- rexp(100, rate = 2)
mean(arrival_times) # ~0.5
sd(arrival_times) # ~0.5 (mean = sd for exponential)
# Simulate a queue
cumulative_arrivals <- cumsum(rexp(10, rate = 3))
print(round(cumulative_arrivals, 3))
# Exponential CDF: P(X <= x) = 1 - exp(-rate*x)
pexp(0.5, rate = 2) # P(wait <= 0.5 min)
mean(arrival_times <= 0.5) # empirical estimatesample(): Kesikli Örnekleme
sample(x, size, replace), x vektöründen size öğe seçer. replace=FALSE (varsayılan), yerine koymadan örnekleme yapar; replace=TRUE tekrarlanan değerlere izin verir.
set.seed(10)
# Sample without replacement (like drawing cards)
cards <- 1:52
hand <- sample(cards, size = 5, replace = FALSE)
print(hand) # 5 unique cards
# Sample with replacement (bootstrap)
x <- c(10, 20, 30, 40, 50)
bootstrap_sample <- sample(x, size = 5, replace = TRUE)
print(bootstrap_sample) # may have repeats
# Simulate rolling two dice 1000 times
dice <- function() sum(sample(1:6, 2, replace = TRUE))
rolls <- replicate(1000, dice())
table(rolls) / 1000 # empirical probabilitiesAğırlıklı Örnekleme
sample(x, size, replace, prob) olasılık ağırlıklarını kullanır. prob vektörü her öğeye göreli olasılıklar atar; düzgün olmayan kesikli dağılımlar için kullanışlıdır.
set.seed(99)
# Loaded die: 6 is twice as likely
faces <- 1:6
weights <- c(1, 1, 1, 1, 1, 2) # relative
norm_weights <- weights / sum(weights)
rolls <- sample(faces, size = 1000, replace = TRUE,
prob = norm_weights)
table(rolls) / 1000
# 6 appears ~2/7 ~= 0.286 of the time
# Categorical sampling
categories <- c('A', 'B', 'C')
probs <- c(0.5, 0.3, 0.2)
sample(categories, 10, replace = TRUE, prob = probs)rgeom() ve rnbinom(): Sayım Dağılımları
rgeom(n, prob), ilk başarıdan önceki başarısızlıkları sayar. rnbinom(n, size, prob), size başarıya ulaşmadan önceki başarısızlıkları sayar. Her ikisi de aşırı yayılımlı sayım verilerini modeller; bu verilerde varyans Poisson dağılımındakinden daha büyüktür.
set.seed(42)
# Geometric: flips until first head (prob=0.3)
# Number of FAILURES before first success
flips_until_head <- rgeom(10, prob = 0.3) + 1 # +1 for the success
print(flips_until_head)
mean(flips_until_head) # ~1/0.3 = 3.33
# Negative binomial: overdispersed count data
# e.g., number of parasites per host
counts <- rnbinom(100, size = 2, prob = 0.4)
mean(counts) # ~3 (theoretical: size*(1-p)/p)
var(counts) # much larger than mean -> overdispersed
# Compare variance to Poisson with same mean
pois_counts <- rpois(100, lambda = mean(counts))
var(counts) / var(pois_counts) # > 1rt() ve rf(): t ve F Dağılımları
rt(n, df), df serbestlik derecesine sahip t dağılımından örnekler üretir. df → ∞ iken normal dağılıma yakınsar. rf(n, df1, df2), ki-kare değişkenlerinin oranı olan F dağılımından örnekler üretir.
set.seed(1)
# t distribution: heavier tails than normal
t_vals <- rt(1000, df = 5)
mean(t_vals) # ~0
sd(t_vals) # > 1 (inflated by heavy tails)
# Compare to normal
n_vals <- rnorm(1000)
# t has more extreme values (heavy tails)
sum(abs(t_vals) > 3) # e.g., ~30
sum(abs(n_vals) > 3) # e.g., ~3
# F distribution: used in ANOVA F-tests
f_vals <- rf(1000, df1 = 5, df2 = 20)
range(f_vals) # always positive
mean(f_vals) # ~df2/(df2-2) = 20/18 = 1.11Rastgele Dağılımları Görselleştirme
Histogramlar ve yoğunluk grafikleri, benzetilen dağılımların biçimini görselleştirir. hist() işlevini curve(dnorm(...)) katmanıyla kullanarak ampirik yoğunluğu teorik yoğunluk eğrileriyle karşılaştırın.
set.seed(42)
x <- rnorm(10000, mean = 5, sd = 2)
# Quick summary statistics
summary(x)
cat('Mean:', mean(x), '\n')
cat('SD:', sd(x), '\n')
cat('Skewness (should be ~0 for normal):',
mean(((x - mean(x))/sd(x))^3), '\n')
# Empirical quantiles vs theoretical
quantile(x, c(0.025, 0.25, 0.5, 0.75, 0.975))
# Compare to theoretical:
qnorm(c(0.025, 0.25, 0.5, 0.75, 0.975),
mean = 5, sd = 2)Hızlı Kontrol
R'nin rastgele dağılım işlevleri hakkındaki bilginizi test edin.
Özet: Rastgele Dağılımlar
Temel çıkarımlar: Normal dağılım için rnorm(n, mean, sd); düzgün dağılım için runif(n, min, max); binom dağılımı için rbinom(n, size, prob); Poisson sayımları için rpois(n, lambda); üstel bekleme süreleri için rexp(n, rate); kesikli örnekleme için sample(x, size, replace) kullanılır. Yeniden üretilebilir analizlerde rastgele sayılar üretmeden önce daima set.seed() kullanın.
set.seed(42)
# Quick reference of common distributions:
rnorm(3, mean = 0, sd = 1) # Normal
runif(3, min = 0, max = 1) # Uniform
rbinom(3, size = 10, prob = 0.5) # Binomial
rpois(3, lambda = 3) # Poisson
rexp(3, rate = 1) # Exponential
rt(3, df = 10) # Student t
rf(3, df1 = 5, df2 = 20) # F distribution
rgeom(3, prob = 0.3) # Geometric
sample(1:10, 3, replace = TRUE) # Discrete uniform
cat('R has 20+ built-in distributions')Sıkça Sorulan Sorular
“Rastgele Dağılımlar Üretme” dersi ücretsiz mi?
Evet — “Rastgele Dağılımlar Üretme” 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.
“Rastgele Dağılımlar Üretme” dersinde ne öğreneceğim?
Normal, uniform, binom ve Poisson dağılımlarından örnekler alın. 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 2. dersidir.
“Rastgele Dağılımlar Üretme” 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