Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

📊 stats - İstatistik ve Olasılık

Descriptive Stats, Hypothesis Tests, Distributions, Regression

92
Fonksiyon
1024
Satır
24.5 KB
Boyut

🚀 Hızlı Başlangıç

içe_aktar stats

değişken data = [2.5, 3.1, 4.8, 5.2, 6.0, 7.3, 8.1]
değişken n = 7

// Merkez eğilimi ölçüleri
değişken mean = stats_ortalama(data, n)           // 5.29
değişken median = stats_medyan(data, n)           // 5.2
değişken mode = stats_mod(data, n, 0.1)          // En sık değer

// Yayılım ölçüleri
değişken variance = stats_varyans(data, n)        // 3.68
değişken std_dev = stats_standart_sapma(data, n) // 1.92
değişken range = stats_aralık(data, n)           // 5.6

📚 API Referansı

Tanımlayıcı İstatistikler

Merkez Eğilimi

stats_ortalama(data: [ondalık], n: tam_sayı) -> ondalık

Aritmetik ortalama: x̄ = (Σxᵢ) / n

stats_ağırlıklı_ortalama(data: [ondalık], weights: [ondalık], n: tam_sayı) -> ondalık

Ağırlıklı ortalama: x̄ = (Σwᵢxᵢ) / (Σwᵢ)

Örnek:

değişken notlar = [70.0, 80.0, 90.0]
değişken ağırlıklar = [0.2, 0.3, 0.5]  // %20, %30, %50
değişken ort = stats_ağırlıklı_ortalama(notlar, ağırlıklar, 3)  // 82.0
stats_geometrik_ortalama(data: [ondalık], n: tam_sayı) -> ondalık

Geometrik ortalama: ⁿ√(x₁ × x₂ × ... × xₙ)

Kullanım: Büyüme oranları, indeksler

stats_harmonik_ortalama(data: [ondalık], n: tam_sayı) -> ondalık

Harmonik ortalama: n / (Σ(1/xᵢ))

Kullanım: Hızlar, oranlar

stats_medyan(data: [ondalık], n: tam_sayı) -> ondalık

Ortanca değer (50. percentile)

stats_mod(data: [ondalık], n: tam_sayı, tolerans: ondalık) -> ondalık

En sık görülen değer

Yayılım Ölçüleri

stats_varyans(data: [ondalık], n: tam_sayı) -> ondalık

Örneklem varyansı: s² = Σ(xᵢ - x̄)² / (n-1)

stats_popülasyon_varyansı(data: [ondalık], n: tam_sayı) -> ondalık

Popülasyon varyansı: σ² = Σ(xᵢ - μ)² / n

stats_standart_sapma(data: [ondalık], n: tam_sayı) -> ondalık

Standart sapma: s = √(varyans)

stats_ortalama_mutlak_sapma(data: [ondalık], n: tam_sayı) -> ondalık

MAD = (Σ|xᵢ - x̄|) / n

stats_aralık(data: [ondalık], n: tam_sayı) -> ondalık

Değişim aralığı: max - min

Quantile ve Percentile

stats_quantile(data: [ondalık], n: tam_sayı, p: ondalık) -> ondalık

p-quantile değerini hesaplar (0 ≤ p ≤ 1)

Örnek:

değişken data = [1.0, 2.0, 3.0, 4.0, 5.0]
değişken q1 = stats_quantile(data, 5, 0.25)  // 2.0 (1. çeyrek)
değişken q2 = stats_quantile(data, 5, 0.50)  // 3.0 (medyan)
değişken q3 = stats_quantile(data, 5, 0.75)  // 4.0 (3. çeyrek)
stats_percentile(data: [ondalık], n: tam_sayı, p: tam_sayı) -> ondalık

p-percentile (0-100 arası)

stats_iqr(data: [ondalık], n: tam_sayı) -> ondalık

Çeyrekler arası aralık: IQR = Q3 - Q1

Kullanım: Outlier tespiti

Momentler

stats_skewness(data: [ondalık], n: tam_sayı) -> ondalık

Çarpıklık (skewness): Dağılımın asimetrisi

  • < 0: Sola çarpık
  • = 0: Simetrik
  • 0: Sağa çarpık

stats_kurtosis(data: [ondalık], n: tam_sayı) -> ondalık

Basıklık (kurtosis): Kuyruk kalınlığı

  • < 0: Düz (platykurtic)
  • = 0: Normal (mesokurtic)
  • 0: Sivri (leptokurtic)

Örnek:

değişken data = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]
değişken skew = stats_skewness(data, 7)  // ≈ 0 (simetrik)
değişken kurt = stats_kurtosis(data, 7)  // Basıklık

Korelasyon ve Kovaryans

stats_covariance(x: [ondalık], y: [ondalık], n: tam_sayı) -> ondalık

Kovaryans: cov(X,Y) = Σ(xᵢ - x̄)(yᵢ - ȳ) / (n-1)

stats_correlation(x: [ondalık], y: [ondalık], n: tam_sayı) -> ondalık

Pearson korelasyon katsayısı: r = cov(X,Y) / (σₓσᵧ)

  • -1: Mükemmel negatif korelasyon
  • 0: Korelasyon yok
  • +1: Mükemmel pozitif korelasyon

Örnek:

değişken boy = [160.0, 165.0, 170.0, 175.0, 180.0]
değişken kilo = [55.0, 60.0, 65.0, 75.0, 80.0]
değişken r = stats_correlation(boy, kilo, 5)  // ≈ 0.98 (güçlü pozitif)
stats_r_squared(x: [ondalık], y: [ondalık], n: tam_sayı) -> ondalık

Determinasyon katsayısı: R² = r²

Yorum: Varyansın açıklanan oranı

Doğrusal Regresyon

stats_linear_regression(x: [ondalık], y: [ondalık], n: tam_sayı) -> (ondalık, ondalık, ondalık)

Basit doğrusal regresyon: y = a + bx

Döndürür: (a, b, R²)

  • a: Y-kesim noktası (intercept)
  • b: Eğim (slope)
  • R²: Belirlilik katsayısı

Örnek:

değişken X = [1.0, 2.0, 3.0, 4.0, 5.0]
değişken y = [2.1, 3.9, 6.2, 8.1, 9.8]

değişken (a, b, r2) = stats_linear_regression(X, y, 5)
yazdır("y = " + a + " + " + b + "x")
yazdır("R² = " + r2)
// y = 0.2 + 1.96x
// R² = 0.997
stats_predict_linear(x: ondalık, a: ondalık, b: ondalık) -> ondalık

Modelden tahmin: ŷ = a + bx

Hipotez Testleri

stats_t_score(data: [ondalık], n: tam_sayı, μ0: ondalık) -> ondalık

Tek örneklem t-skoru: t = (x̄ - μ₀) / (s / √n)

Örnek:

// H₀: μ = 100
değişken scores = [105.0, 110.0, 95.0, 108.0, 102.0]
değişken t = stats_t_score(scores, 5, 100.0)

eğer (math_mutlak(t) > 2.776) ise yap  // α = 0.05, df = 4
    yazdır("H₀ reddedildi!")
son
stats_t_test_independent(x: [ondalık], nx: tam_sayı, y: [ondalık], ny: tam_sayı) -> ondalık

İki bağımsız örneklem t-testi

Kullanım: İki grubun ortalamalarını karşılaştırma

stats_t_test_paired(x: [ondalık], y: [ondalık], n: tam_sayı) -> ondalık

Eşleştirilmiş t-testi

Kullanım: Önce-sonra karşılaştırmaları

stats_chi_square(observed: [ondalık], expected: [ondalık], k: tam_sayı) -> ondalık

Ki-kare testi: χ² = Σ((O - E)² / E)

Kullanım: Kategorik veri analizi, uyum iyiliği

stats_f_statistic(between_var: ondalık, within_var: ondalık) -> ondalık

F-istatistiği (ANOVA için)

Güven Aralıkları

stats_confidence_interval(data: [ondalık], n: tam_sayı, t_critical: ondalık) -> (ondalık, ondalık)

Ortalama için güven aralığı

Döndürür: (alt_sınır, üst_sınır)

Örnek:

değişken data = [23.0, 25.0, 27.0, 24.0, 26.0]
değişken t_crit = 2.776  // %95 güven, df=4
değişken (lower, upper) = stats_confidence_interval(data, 5, t_crit)
yazdır("95% CI: [" + lower + ", " + upper + "]")
stats_standard_error(data: [ondalık], n: tam_sayı) -> ondalık

Standart hata: SE = s / √n

Olasılık Dağılımları

PDF (Probability Density Function)

stats_normal_pdf(x: ondalık, μ: ondalık, σ: ondalık) -> ondalık

Normal dağılım PDF: f(x) = (1/(σ√(2π))) exp(-(x-μ)²/(2σ²))

stats_standard_normal_pdf(z: ondalık) -> ondalık

Standart normal (μ=0, σ=1)

stats_exponential_pdf(x: ondalık, λ: ondalık) -> ondalık

Üstel dağılım: f(x) = λe^(-λx)

stats_uniform_pdf(x: ondalık, a: ondalık, b: ondalık) -> ondalık

Uniform dağılım

CDF (Cumulative Distribution Function)

stats_normal_cdf(x: ondalık, μ: ondalık, σ: ondalık) -> ondalık

Normal dağılım CDF: P(X ≤ x)

Örnek:

// IQ testinde 110'dan düşük olma olasılığı
// IQ ~ N(100, 15)
değişken p = stats_normal_cdf(110.0, 100.0, 15.0)  // ≈ 0.747
yazdır("P(IQ ≤ 110) = " + (p * 100.0) + "%")
stats_standard_normal_cdf(z: ondalık) -> ondalık

Standart normal CDF

stats_exponential_cdf(x: ondalık, λ: ondalık) -> ondalık

Üstel dağılım CDF

Yeniden Örnekleme

stats_bootstrap_sample(data: [ondalık], n: tam_sayı, tohum: tam_sayı) -> [ondalık]

Bootstrap yeniden örnekleme (replacement ile)

Kullanım:

// Bootstrap güven aralığı
değişken data = [...]
değişken n_bootstrap = 1000
değişken means = yeni_dizi(n_bootstrap)

değişken i = 0
iken (i < n_bootstrap) yap
    değişken sample = stats_bootstrap_sample(data, n, i)
    means[i] = stats_ortalama(sample, n)
    i = i + 1
son

// %95 bootstrap CI
değişken ci_lower = stats_quantile(means, n_bootstrap, 0.025)
değişken ci_upper = stats_quantile(means, n_bootstrap, 0.975)
stats_jackknife_sample(data: [ondalık], n: tam_sayı, exclude_index: tam_sayı) -> [ondalık]

Jackknife yeniden örnekleme (bir eleman çıkarılmış)

Non-Parametric Testler

stats_mann_whitney_u(x: [ondalık], nx: tam_sayı, y: [ondalık], ny: tam_sayı) -> ondalık

Mann-Whitney U testi (rank-sum test)

Kullanım: Normal dağılmayan iki grup karşılaştırması

stats_wilcoxon_signed_rank(x: [ondalık], y: [ondalık], n: tam_sayı) -> ondalık

Wilcoxon signed-rank testi

Kullanım: Eşleştirilmiş non-parametric karşılaştırma

Histogram ve Binning

stats_histogram(data: [ondalık], n: tam_sayı, bin_sayısı: tam_sayı) -> [tam_sayı]

Histogram oluşturur (eşit genişlikte binler)

stats_sturges_bins(n: tam_sayı) -> tam_sayı

Sturges kuralı ile optimal bin sayısı: k = ⌈log₂(n) + 1⌉

Örnek:

değişken data = [1.2, 2.3, 1.8, 3.5, 2.1, ...]
değişken n = 100
değişken k = stats_sturges_bins(n)  // ≈ 8
değişken hist = stats_histogram(data, n, k)

Entropi

stats_entropy(probabilities: [ondalık], n: tam_sayı) -> ondalık

Shannon entropisi: H = -Σ(pᵢ log₂(pᵢ))

stats_kl_divergence(p: [ondalık], q: [ondalık], n: tam_sayı) -> ondalık

Kullback-Leibler divergence: D_KL(P||Q) = Σ pᵢ log(pᵢ/qᵢ)

Effect Sizes

stats_cohens_d(x: [ondalık], nx: tam_sayı, y: [ondalık], ny: tam_sayı) -> ondalık

Cohen's d effect size: d = (x̄ - ȳ) / s_pooled

Yorum:

  • |d| < 0.2: Küçük
  • |d| ≈ 0.5: Orta
  • |d| > 0.8: Büyük
stats_hedges_g(x: [ondalık], nx: tam_sayı, y: [ondalık], ny: tam_sayı) -> ondalık

Hedge's g (düzeltilmiş Cohen's d)

Veri Normalizasyonu

stats_normalize(data: [ondalık], n: tam_sayı) -> [ondalık]

Z-score standardization: z = (x - μ) / σ

stats_min_max_normalize(data: [ondalık], n: tam_sayı) -> [ondalık]

Min-max normalizasyonu: x' = (x - min) / (max - min)

Outlier Tespiti

stats_is_outlier(x: ondalık, data: [ondalık], n: tam_sayı, multiplier: ondalık) -> mantıksal

IQR metoduyla outlier tespiti

Kural: x < Q1 - k·IQR veya x > Q3 + k·IQR (genellikle k=1.5)

Utilities

stats_cumsum(data: [ondalık], n: tam_sayı) -> [ondalık]

Kümülatif toplam

stats_moving_average(data: [ondalık], n: tam_sayı, pencere: tam_sayı) -> [ondalık]

Hareketli ortalama

🔬 Kullanım Örnekleri

Örnek 1: A/B Testi

kullan stats

// Versiyon A ve B'nin conversion rate'lerini karşılaştır
değişken groupA = [0.12, 0.15, 0.11, 0.13, 0.14]
değişken groupB = [0.18, 0.20, 0.17, 0.19, 0.21]

// t-testi
değişken t = stats_t_test_independent(groupA, 5, groupB, 5)
yazdır("t-istatistiği: " + t)

// Effect size
değişken d = stats_cohens_d(groupA, 5, groupB, 5)
yazdır("Cohen's d: " + d)

eğer (math_mutlak(t) > 2.306) ise yap  // α=0.05, df=8
    yazdır("Versiyon B anlamlı derecede daha iyi!")
son

Örnek 2: Veri Kalite Kontrolü

kullan stats

fonksiyon quality_check(data: [ondalık], n: tam_sayı): hiçbir yap
    // Tanımlayıcı istatistikler
    değişken mean = stats_ortalama(data, n)
    değişken std = stats_standart_sapma(data, n)
    değişken median = stats_medyan(data, n)
    
    yazdır("Ortalama: " + mean)
    yazdır("Std Dev: " + std)
    yazdır("Medyan: " + median)
    
    // Dağılım özellikleri
    değişken skew = stats_skewness(data, n)
    değişken kurt = stats_kurtosis(data, n)
    
    eğer (math_mutlak(skew) > 1.0) ise yap
        yazdır("UYARI: Yüksek çarpıklık tespit edildi!")
    son
    
    // Outlier tespiti
    değişken outlier_count = 0
    değişken i = 0
    iken (i < n) yap
        eğer (stats_is_outlier(data[i], data, n, 1.5)) ise yap
            outlier_count = outlier_count + 1
        son
        i = i + 1
    son
    
    eğer (outlier_count > 0) ise yap
        yazdır("Outlier sayısı: " + outlier_count)
    son
son

Örnek 3: Regresyon Analizi

kullan stats
kullan fmt

fonksiyon regression_analysis(X: [ondalık], y: [ondalık], n: tam_sayı): hiçbir yap
    // Regresyon modelini fit et
    değişken (a, b, r2) = stats_linear_regression(X, y, n)
    
    yazdır("\n=== REGRESYON ANALİZİ ===")
    yazdır("Model: y = " + fmt_float_precision(a, 3) + " + " + 
           fmt_float_precision(b, 3) + "x")
    yazdır("R² = " + fmt_percent(r2))
    
    // Model kalitesi
    eğer (r2 > 0.9) ise yap
        yazdır("Model kalitesi: MÜKEMMELyazdır("Model kalitesi: ORTA")
    son
    
    // Tahminler ve residual'lar
    değişken residuals = yeni_dizi(n)
    değişken i = 0
    iken (i < n) yap
        değişken y_pred = stats_predict_linear(X[i], a, b)
        residuals[i] = y[i] - y_pred
        i = i + 1
    son
    
    // Residual analizi
    değişken residual_mean = stats_ortalama(residuals, n)
    eğer (math_mutlak(residual_mean) > 0.1) ise yap
        yazdır("UYARI: Residual ortalaması sıfırdan farklı!")
    son
son

🔗 İlgili Modüller

  • math - Matematik fonksiyonları
  • linalg - Matris işlemleri
  • random - Rastgele sayı üretimi

📖 Daha Fazla Bilgi