İstatistiksel Çıkarım

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(knitr)
## Warning: package 'knitr' was built under R version 4.4.3
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(patchwork) # Grafikleri birleştirmek için

1 Olasılık Dağılımları Mantığı

İstatistiksel analizlerde verinin “davranış biçimini” anlamak için dağılımları kullanırız. R dilinde her dağılım ailesi (Normal, Binom, vb.) için standartlaşmış 4 temel fonksiyon öneki bulunur.

  • d (Density - Yoğunluk): Olasılık Yoğunluk Fonksiyonu (PDF). Belirli bir \(x\) noktasındaki eğrinin yüksekliğini verir. (\(P(X=x)\)).

  • p (Probability - Olasılık): Kümülatif Dağılım Fonksiyonu (CDF). Eğrinin sol tarafında kalan alanı (olasılığı) verir. (\(P(X \le x)\)).

  • q (Quantile - Çeyreklik): p’nin tersidir. Belirli bir olasılık (alan) değerine karşılık gelen \(x\) değerini (z-skorunu) verir.

  • r (Random - Rastgele): Belirtilen dağılıma uygun rastgele veri üretir.

1.1 Normal Dağılım (Sürekli Değişkenler)

Normal dağılım, istatistiğin bel kemiğidir. Simetrik, çan eğrisi şeklindedir ve iki parametre ile tanımlanır: Ortalama (\(\mu\)) ve Standart Sapma (\(\sigma\)).

1.1.1 Olasılık ve Yoğunluk Hesaplamaları

1.1.2 Yoğunluk Fonksiyonu (dnorm)

Normal dağılım eğrisini çizmek için kullanılır.


# Veriyi bir data frame (veri çerçevesi) haline getirmeliyiz
df <- data.frame(x = seq(-4, 4, 0.01))

ggplot(df, aes(x = x, y = dnorm(x))) +
  # Normal dağılım eğrisi (Mavi, kalın çizgi)
  geom_line(color = "blue", linewidth = 1.2) +
  
  # Ortalamayı gösteren dikey çizgi (Kırmızı, kesikli)
  geom_vline(xintercept = 0, color = "red", linetype = "dashed", linewidth = 1) +
  
  # Başlık ve etiketler
  labs(title = "Standart Normal Dağılım (Ort=0, SS=1)",
       y = "Yoğunluk (Density)",
       x = "Z Değerleri") +
  
  # Temiz bir görünüm için tema
  theme_minimal()

1.1.3 Kümülatif Olasılık (pnorm)

Bir Z değerinin solunda kalan alanı hesaplar.

Soru: Standart normal dağılımda, ortalamanın tam üzerindeki (z=0) bir değerin solunda kalan alan nedir?

pnorm(0) 
## [1] 0.5
# Beklenen sonuç 0.5'tir çünkü dağılım simetriktir ve alanın yarısı sol taraftadır.
library(ggplot2)

# -4 ile +4 arasında bir x ekseni ve bunlara karşılık gelen yoğunluklar (y)
df <- data.frame(x = seq(-4, 4, 0.01))
df$y <- dnorm(df$x) # Standart normal dağılım yoğunlukları

z_degeri <- -1.645

ggplot(df, aes(x = x, y = y)) +
  # 1. Tüm eğriyi çizgi olarak çiz
  geom_line(size = 1) +
  
  # 2. Sadece z değerinden küçük olan kısmı (Sol Kuyruk) boya
  geom_area(data = subset(df, x < z_degeri), 
            fill = "#E74C3C", alpha = 0.5) + # Kırmızımsı bir renk
  
  # 3. Z değerinin olduğu yere dikey çizgi at
  geom_vline(xintercept = z_degeri, linetype = "dashed") +
  
  # 4. Etiketler ve Başlık
  labs(title = paste("Sol Kuyruk Olasılığı (z =", z_degeri, ")"),
       subtitle = "Boyalı alan, bu z değerinin solunda kalan kümülatif olasılıktır.",
       x = "Z Değeri", y = "Yoğunluk") +
  
  # 5. Z değerini grafiğe yazdıralım
  annotate("text", x = z_degeri - 1, y = 0.1, 
           label = paste("Alan =", round(pnorm(z_degeri), 3)), color = "red") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.

1.1.4 Kritik Değerler ve Güven Aralıkları (qnorm)

Hipotez testlerinde “sınır değerleri” belirlemek için kullanılır. Elimizde bir olasılık (örneğin %97.5) varsa, buna denk gelen Z skoru nedir?

# %95 Güven Aralığı için (iki kuyrukta toplam %5 hata payı, her kuyrukta %2.5)
# Alt sınır (0.025) ve Üst sınır (0.975)
qnorm(c(0.025, 0.975))  
## [1] -1.959964  1.959964

# %99 Güven Aralığı için
round(qnorm(c(0.005, 0.995)), 2)
## [1] -2.58  2.58

1.1.5 Binom Dağılımı (Kesikli Değişkenler)

Sürekli verilerin aksine (boy, kilo, IQ), kesikli olayları (yazı/tura, geçti/kaldı, satın aldı/almadı) modelleriz.

Bir deneyin Binom dağılımı sayılması için:

  1. Deneme sayısı (\(n\)) sabittir.

  2. Her deneme bağımsızdır.

  3. Sadece iki sonuç vardır: Başarı (\(p\)) veya Başarısızlık (\(1-p\)).

Formül:

\[ P(X = k) = \binom{n}{k} \cdot p^k \cdot (1-p)^{n-k} \]

1.1.6 Basit Örnek: Bozuk Para

Bir parayı 2 kez atalım (\(n=2\)). Yazı gelme olasılığı \(p=0.5\). Hiç yazı gelmemesi (0), bir yazı (1) veya iki yazı (2) gelme olasılıkları nedir?


# 1. Önce veriyi bir data frame (veri çerçevesi) haline getirelim
# ggplot2 her zaman data frame ile çalışmayı sever.
df_para <- data.frame(
  x = 0:2,
  olasiliklar = dbinom(0:2, size = 2, p = 0.5)
)

# 2. Grafik Çizimi
ggplot(df_para, aes(x = x, y = olasiliklar)) +
  
  # A) Çubuklar (Lollipop'un sapı)
  # x'ten x'e, 0'dan olasılık değerine çizgi çekiyoruz
  geom_segment(aes(x = x, xend = x, y = 0, yend = olasiliklar), 
               color = "red", size = 1.5) +
  
  # B) Noktalar (Lollipop'un şekeri)
  geom_point(color = "red", size = 5) +
  
  # C) Eksen Ayarları
  # X ekseninde sadece tam sayıların (0, 1, 2) görünmesini sağlayalım
  scale_x_continuous(breaks = 0:2) +
  
  # D) Etiketler ve Başlık
  labs(title = "Bozuk Parayı 2 Kez Atma",
       subtitle = "Binom Dağılımı (n=2, p=0.5)",
       x = "Yazı Gelme Sayısı (k)",
       y = "Olasılık") +
  
  # E) Tema
  theme_minimal() +
  
  # İsteğe bağlı: Y ekseninin 0'dan başladığını netleştirmek için
  expand_limits(y = 0)

  • P(X=0): 0.25 (Tura-Tura)

  • P(X=1): 0.50 (Yazı-Tura veya Tura-Yazı)

  • P(X=2): 0.25 (Yazı-Yazı)

1.2 Genişletilmiş Örnek: n=30

Deneme sayısını artırdığımızda, kesikli olan Binom dağılımının şeklinin Normal dağılıma (çan eğrisi) benzemeye başladığını görürüz.


df_para <- data.frame(
  x = 0:30,
  olasiliklar = dbinom(0:30, size = 30, p = 0.5)
)

# 2. Grafik Çizimi
ggplot(df_para, aes(x = x, y = olasiliklar)) +
  
  # A) Çubuklar (Lollipop'un sapı)
  # x'ten x'e, 0'dan olasılık değerine çizgi çekiyoruz
  geom_segment(aes(x = x, xend = x, y = 0, yend = olasiliklar), 
               color = "red", size = 1.5) +
  
  # B) Noktalar (Lollipop'un şekeri)
  geom_point(color = "red", size = 5) +
  
  # C) Eksen Ayarları
  # X ekseninde sadece tam sayıların (0, 1, 2) görünmesini sağlayalım
  scale_x_continuous(breaks = 0:2) +
  
  # D) Etiketler ve Başlık
  labs(title = "Bozuk Parayı 30 Kez Atma",
       subtitle = "Binom Dağılımı (n=30, p=0.5)",
       x = "Yazı Gelme Sayısı (k)",
       y = "Olasılık") +
  
  # E) Tema
  theme_minimal() +
  
  # İsteğe bağlı: Y ekseninin 0'dan başladığını netleştirmek için
  expand_limits(y = 0)

  • 30 soruluk bir doğru/yanlış testini rastgele dolduran bir öğrencinin tam 15 doğru yapma olasılığı nedir?

    # n=30, p=0.5, k=15
    dbinom(x = 15, size = 30, prob = 0.5)
    ## [1] 0.1444644
  • İyileşme şansı %50 olan bir ilacı 30 hastaya verirsek, 20 kişinin iyileşme olasılığı nedir?

    # n=30, p=0.5, k=20
    dbinom(x = 20, size = 30, prob = 0.5)
    ## [1] 0.0279816

2 Merkezi Limit Teoremi ve Örnekleme Dağılımı

İstatistiğin “sihirli” kısmıdır. Teorem özetle şunu der:

“Popülasyonun dağılımı ne olursa olsun (Normal, Uniform, Çarpık vb.), eğer yeterince büyük örneklemler (\(n \ge 30\)) çeker ve bunların ortalamasını alırsanız, bu ortalamaların dağılımı Normal Dağılım gösterir.”

Bunu kanıtlamak için Normal Dağılmayan (örneğin Uniform/Düz) bir popülasyonla çalışalım ve ortalamaların nasıl normale döndüğünü görelim.

Aşağıdaki kodda, 0 ile 100 arasında rastgele sayıların olduğu (Düz/Uniform) bir evrenden örneklemler çekiyoruz.

# 1. Gerekli kütüphaneleri yükle
library(ggplot2)
library(dplyr)
library(tidyr) # Veri düzenlemesi için

# --- Simülasyon Verilerinin Oluşturulması ---
reps <- 1000 # Yüksek kaliteli grafikler için reps sayısını 1000'e çıkaralım.
nsmall <- 2 # Küçük örneklem (n=2)
nlarge <- 30  # Büyük örneklem (n=30)

sampdist.mean.small <- numeric(reps)
sampdist.mean.large <- numeric(reps)

set.seed(42)

# Simülasyon Döngüsü
for (i in 1:reps) {
# n=2 ile örneklem çek ve ortalamasını al
# runif(n, min, max) 0 ile 100 arası düzgün dağılımdan rastgele sayılar üretir.
 sampdist.mean.small[i] <- mean(runif(nsmall, 0, 100))
# n=30 ile örneklem çek ve ortalamasını al
 sampdist.mean.large[i] <- mean(runif(nlarge, 0, 100))
}

# --- Veri Çerçevesinin ggplot2 için Hazırlanması ---

# 1. Ortalamaları tek bir veri çerçevesinde birleştirme
df_sim <- data.frame(
 Small_n2 = sampdist.mean.small,
 Large_n30 = sampdist.mean.large
)

# 2. Veriyi uzun (long) formata dönüştürme (görselleştirmeyi kolaylaştırmak için)
df_long <- df_sim %>%
 pivot_longer(
 cols = everything(), # Tüm sütunları seç
names_to = "Sample_Size", # Yeni kategori sütununun adı
 values_to = "Mean_Value" # Yeni değer sütununun adı
 ) %>%
 mutate(
 # Etiketleri daha okunabilir hale getir
 Sample_Size = factor(Sample_Size,
 levels = c("Small_n2", "Large_n30"),
 labels = c("Küçük Örneklem (n=2)", "Büyük Örneklem (n=30)"))
)

# --- ggplot2 ile Görselleştirme ---

# A. Histogram Grafikleri
plot_hist <- ggplot(df_long, aes(x = Mean_Value, fill = Sample_Size)) +
 # Histogram katmanı
geom_histogram(bins = 30, color = "white", alpha = 0.8) +
 # Facet (Yan Yana Çizim) ile n=2 ve n=30'u ayırma
facet_wrap(~ Sample_Size, scales = "free_y", ncol = 1) +
labs(
title = "Örneklem Ortalamalarının Dağılımı \n
(Merkezi Limit Teoremi)",
x = "Örneklem Ortalamaları",
 y = "Frekans",
 fill = "Örneklem Boyutu"
) +
scale_fill_manual(values = c("Küçük Örneklem (n=2)" = "lightblue", "Büyük Örneklem (n=30)" = "lightgreen")) +
theme_minimal() +
theme(legend.position = "none") # Facet kullandığımız için lejant gereksiz

# B. Q-Q Grafikleri (Normal Dağılımla Karşılaştırma)
plot_qq <- ggplot(df_long, aes(sample = Mean_Value, color = Sample_Size)) +
# Q-Q Normal katmanı
 stat_qq() +
 # Normal Q-Q çizgisi (Beklenen değerler)
stat_qq_line() +
 # Facet (Yan Yana Çizim)
 facet_wrap(~ Sample_Size, scales = "free", ncol = 1) +
 labs(
 title = "Q-Q Grafikleri: 
 \n Normal Dağılımla Karşılaştırma",
 x = "Teorik Quantiller (Normal)",
 y = "Örneklem Quantilleri",
 color = "Örneklem Boyutu"
) +
scale_color_manual(values = c("Küçük Örneklem (n=2)" = "red", "Büyük Örneklem (n=30)" = "blue")) +
theme_minimal() +
 theme(legend.position = "none")

# C. Tüm Grafikleri Tek Bir Görünümde Birleştirme (Opsiyonel: patchwork paketi)
# Eğer patchwork paketi yüklüyse, 4 grafiği tek bir 2x2 düzeninde birleştirebiliriz:
# install.packages("patchwork")
library(patchwork)
 (plot_hist | plot_qq) 

  • Histogramlar: \(n=2\) olduğunda dağılım hala üçgenimsi (tam normal değil) iken, \(n=30\) olduğunda mükemmel bir çan eğrisi (Normal Dağılım) oluşmuştur.

  • Q-Q Grafikleri (Quantile-Quantile Plot):

    • Noktalar düz çizgi (teorik normal) üzerine ne kadar oturursa, verimiz o kadar normal dağılıyor demektir.

    • \(n=30\) grafiğinde noktaların çizgiye neredeyse yapıştığını görüyoruz. Bu, Merkezi Limit Teoremi’nin çalıştığının kanıtıdır.

3 Araştırmalarda Kullanılan Diğer Dağılımlar

3.1 T Dağılımı (dt)

  • Ne zaman kullanılır? Popülasyon varyansı bilinmediğinde ve örneklem küçükse (\(n < 30\)).

  • Özelliği: Normal dağılıma benzer ama “kuyrukları daha kalındır” (Extreme değerlere daha fazla izin verir).

  • Serbestlik Derecesi (df): Örneklem büyüdükçe (\(df\) arttıkça), T dağılımı Normal dağılıma dönüşür.

library(ggplot2)

# X ekseni aralığını belirlemek için boş bir veri çerçevesi
p <- ggplot(data.frame(x = c(-4, 4)), aes(x = x))

p +
  # 1. Normal Dağılım (Kesikli Siyah Çizgi)
  stat_function(fun = dnorm, 
                aes(color = "Normal", linetype = "Normal"), 
                linewidth = 1) +
  
  # 2. t Dağılımı (df=3) (Düz Kırmızı Çizgi)
  stat_function(fun = dt, args = list(df = 3), 
                aes(color = "t (df=3)", linetype = "t (df=3)"), 
                linewidth = 1.2) +
  
  # 3. Renk ve Çizgi Tipi Ayarları
  scale_color_manual(name = "Dağılım", 
                     values = c("Normal" = "black", "t (df=3)" = "red")) +
  scale_linetype_manual(name = "Dağılım",
                        values = c("Normal" = "dashed", "t (df=3)" = "solid")) +
  
  # 4. Etiketler
  labs(title = "Normal Dağılım vs. t Dağılımı",
       subtitle = "t dağılımının kuyrukları (uçları) daha kalındır.",
       x = "z / t Değerleri",
       y = "Yoğunluk") +
  
  theme_minimal()

# Renk paleti
renkler <- c("Normal" = "black", "df=1" = "#E74C3C", "df=5" = "#3498DB", "df=30" = "#2ECC71")

ggplot(data.frame(x = c(-4, 4)), aes(x = x)) +
  
  # Normal Dağılım (Referans - Kalın Siyah)
  stat_function(fun = dnorm, aes(color = "Normal"), 
                linetype = "dashed", linewidth = 1.2) +
  
  # t dağılımı: df = 1 (Çok yayvan)
  stat_function(fun = dt, args = list(df = 1), aes(color = "df=1"), linewidth = 1) +
  
  # t dağılımı: df = 5
  stat_function(fun = dt, args = list(df = 5), aes(color = "df=5"), linewidth = 1) +
  
  # t dağılımı: df = 30 (Neredeyse Normal)
  stat_function(fun = dt, args = list(df = 30), aes(color = "df=30"), linewidth = 1) +
  
  # Renk ayarları
  scale_color_manual(name = "Dağılımlar", values = renkler) +
  
  labs(title = "Serbestlik Derecesi Arttıkça t Dağılımı",
       subtitle = "df=30 olduğunda t dağılımı ile Normal dağılımı ayırt etmek zordur.",
       x = "Değerler",
       y = "Yoğunluk") +
  
  theme_minimal() +
  theme(legend.position = "top")

3.2 Poisson Dağılımı (dpois)

  • Ne zaman kullanılır? Belirli bir zaman veya mekanda nadir gerçekleşen olayların sayısını modellerken (Örn: Bir saatte çağrı merkezine gelen arama sayısı, bir kitaptaki yazım hatası sayısı).
library(ggplot2)

# 1. Veri Çerçevesi
df_pois <- data.frame(
  x = 0:10,
  olasilik = dpois(0:10, lambda = 3)
)

# 2. Grafik
ggplot(df_pois, aes(x = x, y = olasilik)) +
  
  # "type = h, lwd = 5" görünümünü taklit etmek için:
  # geom_col kullanıyoruz ve width (genişlik) değerini küçültüyoruz (0.2 gibi)
  geom_col(fill = "purple", width = 0.2) +
  
  # X ekseninde sadece tam sayıları (0, 1, 2...) göster
  scale_x_continuous(breaks = 0:10) +
  
  # Etiketler
  labs(title = "Poisson Dağılımı (Lambda = 3)",
       subtitle = "Belirli bir aralıkta gerçekleşen nadir olaylar",
       x = "Olay Sayısı (k)",
       y = "Olasılık") +
  
  theme_minimal()

3.3 Ki-Kare Dağılımı (dchisq)

  • Ne zaman kullanılır? Genellikle kategorik verilerin analizinde (bağımsızlık testleri) veya varyans analizlerinde kullanılır. Asimetriktir (Sağa çarpık).

# Veri seti oluşturmak (fill/boyama işlemi için daha esnek)
df_chi <- data.frame(x = seq(0, 20, 0.1))
df_chi$y <- dchisq(df_chi$x, df = 5)

ggplot(df_chi, aes(x = x, y = y)) +
  # Alanı boya
  geom_area(fill = "orange", alpha = 0.4) +
  
  # Çizgiyi ekle
  geom_line(color = "orange", linewidth = 1.2) +
  
  labs(title = "Ki-Kare Dağılımı (df=5)",
       x = "X Değerleri",
       y = "Yoğunluk") +
  
  theme_minimal()

3.4 NOTLAR

  • Veriyi tanımlamak için Normal Dağılım ve fonksiyonlarını (d, p, q, r) kullandık.

  • Kesikli olaylar için Binom, nadir olaylar için Poisson dağılımını tanıdık.

  • Merkezi Limit Teoremi sayesinde, verimiz normal dağılmasa bile, yeterli örneklem büyüklüğünde ortalamalar üzerinden güvenle analiz (T-testi, ANOVA vb.) yapabileceğimizi kanıtladık.

4 İstatistiksel Çıkarım

İstatistiksel çıkarım, belirsizlik altında karar verme sürecidir. Elimizde sınırlı bir parça (örneklem) varken, bütün (evren) hakkında hüküm vermeye çalışırız. Bu süreçte iki temel senaryo ile karşılaşırız.

İstatistiksel testlerin çoğu (t-testi, z-testi vb.) aşağıdaki iki durumdan birine yanıt arar.

4.0.1 Durum I: “Bu Örneklem, Bildiğimiz Evrene mi Ait?”

Bu durumda, elimizdeki grubun, özellikleri bilinen bir genel kitleyle uyumlu olup olmadığını test ederiz.

  • Örnek (Eğitim):

    • Sorun: 10-A sınıfının matematik ortalaması, tüm okulun ortalamasından anlamlı derecede farklı mı?

    • Yokluk Hipotezi (\(H_0\)): Fark yoktur. Bu sınıf, okulun sıradan bir parçasıdır (\(\mu_{sınıf} = \mu_{okul}\)).

    • Alternatif Hipotez (\(H_1\)): Bu sınıfın ortalaması okuldan farklıdır (veya yüksektir).

    • Karar Mekanizması: Eğer sınıf ortalaması okul ortalamasından çok uzaksa, bunun şans eseri olamayacağına karar veririz.

  • Örnek (Sağlık):

    • Sorun: Bir şehirdeki bireylerin su tüketimi, ülke ortalamasından farklı mı?

4.0.2 Durum II: “Bu İki Örneklem Aynı Evrenden mi Geliyor?”

Bu durum, deneysel çalışmaların temelidir. İki farklı grubun (Deney ve Kontrol) birbirinden farklılaşıp farklılaşmadığına bakarız.

  • Örnek (Spor Bilimleri):

    • Sorun: Spor yapanların kilo kaybı ile yapmayanlarınki aynı mı?

    • Yokluk Hipotezi (\(H_0\)): İki grup arasında fark yoktur (\(\mu_{deney} = \mu_{kontrol}\)). Yani spor programının bir etkisi olmamıştır.

    • Alternatif Hipotez (\(H_1\)): Spor yapanlar daha fazla kilo vermiştir.

4.1 Hipotez Testinin Altında Yatan Felsefe

İstatistiksel testler, hukuk sistemindeki **Masumiyet Karinesi**ne benzer bir mantıkla çalışır.

  1. Şüphecilik (Yokluk Hipotezi Doğrudur):

    Aksi kanıtlanana kadar etkinin olmadığı, farkın şans eseri olduğu varsayılır. Bir ilaç deniyorsak, “İlaç etkisizdir” diyerek başlarız.

  2. Kanıt Ararı (Farkın Büyüklüğü):

    Örneklemden elde ettiğimiz sonuç (fark), şansla açıklanamayacak kadar büyük mü?

    • Fark küçükse \(\rightarrow\) “Bu şans olabilir” deriz (\(H_0\) reddedilemez).

    • Fark çok büyükse \(\rightarrow\) “Bu kadar büyük bir farkın şans eseri oluşma ihtimali çok düşüktür” deriz (\(H_0\) reddedilir).

  3. Örnekleme Hatası (Sampling Error):

    Evrenden rastgele çok sayıda örneklem alsak, hiçbiri tam olarak birbirine veya evren ortalamasına eşit olmaz. Ortalamalar arasında doğal bir “sıçrama” (varyasyon) vardır. Bizim bulduğumuz fark, bu doğal sıçrama aralığında mı, yoksa çok mu uçta?

4.2 Ortalamaların Örneklem Dağılımı (Sampling Distribution)

Bir örneklemden elde edilen sonucun “normal” mi yoksa “sıradışı” mı olduğunu anlamak için, o sonucun ait olduğu dağılımı bilmemiz gerekir.

Merkezi Limit Teoremi bize şunu söyler:

Bir evrenden tekrar tekrar örneklemler alıp ortalamalarını kaydedersek, bu ortalamaların oluşturduğu dağılım:

  1. Normal Dağılım şeklindedir (Çan eğrisi).

  2. Bu dağılımın ortalaması, Gerçek Evren Ortalamasına eşittir.

  3. Standart sapması (yayılımı), örneklem büyüdükçe küçülür. Buna Standart Hata denir.

4.2.1 R ile Simülasyon: Ortalamaların Dağılımı

Bu soyut kavramı R ile somutlaştıralım. Normal dağılmayan (Uniform) bir evrenden örneklemler çekelim ve ortalamalarının nasıl Normal Dağılıma dönüştüğünü görelim.

# 1. Evren Oluşturma (Düz/Uniform Dağılım - Normal Değil!)
# 0 ile 100 arasında rastgele 100.000 sayı
evren <- runif(100000, 0, 100)

# Evrenin histogramı (Kutu gibi görünecektir)
hist(evren, main = "Evren Dağılımı (Uniform)", col = "gray")


# 2. Örneklem Dağılımı Simülasyonu
# Bu evrenden 30'ar kişilik 1000 tane örneklem çekip ortalamalarını alalım
orneklem_ortalamalari <- replicate(1000, mean(sample(evren, 30)))

# 3. Sonuç: Ortalamaların Histogramı
# Dikkat: Evren düz olmasına rağmen, ortalamalar Çan Eğrisi (Normal) oluşturur!
hist(orneklem_ortalamalari, 
     main = "Ortalamaların Örneklem Dağılımı (n=30)", 
     col = "lightblue", 
     xlab = "Örneklem Ortalamaları")

Bu grafik bize standart hatayı (hata payını) gösterir. Eğer bizim araştırmamızdaki ortalama, bu mavi yığının çok dışında kalıyorsa, “Bu sonuç şans eseri olamaz” deriz.

4.3 İstatistiksel Çıkarımda Hata Türleri

Karar verirken (H0’ı Reddet veya Kabul Et), gerçek durumla çelişebiliriz. İki tür hata yapma riskimiz vardır:

4.3.1 Tip I Hata (\(\alpha\) - Yalancı Pozitif)

  • Durum: Gerçekte bir fark YOKTUR (\(H_0\) Doğru), ama biz yanlışlıkla “Fark Var” (\(H_0\) Red) deriz.

  • Örnek: İlaç aslında etkisizdir ama şans eseri iyileşen birkaç hastaya bakıp “İlaç işe yarıyor” deriz.

  • Risk: Bilimsel literatürde en korkulan hatadır. Genellikle %5 (\(\alpha = 0.05\)) olarak sabitlenir.

4.3.2 Tip II Hata (\(\beta\) - Yalancı Negatif)

  • Durum: Gerçekte bir fark VARDIR (\(H_0\) Yanlış), ama biz “Fark Bulamadık” (\(H_0\) Kabul) deriz.

  • Örnek: İlaç aslında etkilidir ama örneklemimiz çok küçük olduğu için bu etkiyi yakalayamayız.

4.3.3 Karar Matrisi

Kararınız ↓ \ Gerçek Durum → Gerçekte Fark YOK (H0​ Doğru) Gerçekte Fark VAR (H0​ Yanlış)
“Fark Var” Dediniz (\(H_0\) Red)

Tip I Hata (\(\alpha\))


(Yanlış Alarm)

Doğru Karar (Güç)


(Tebrikler!)

“Fark Yok” Dediniz (\(H_0\) Kabul)

Doğru Karar


(Güvenli Bölge)

Tip II Hata (\(\beta\))


(Fırsat Kaçırma)

5 Hipotez Testinin Mantığı

Bilimsel araştırmalarda, evrenin tamamına ulaşamadığımız için örneklemler üzerinden karar verme (inference) süreci yürütürüz. Bu süreç, bir mahkeme yargılamasına benzer.

5.0.1 Mahkeme Analojisi ve Hipotezler

  • Sıfır Hipotezi (\(H_0\)): “Sanık Suçsuzdur.” (Varsayılan durum, etkinin olmadığı durum).

  • Alternatif Hipotez (\(H_1\)): “Sanık Suçludur.” (Araştırmacının/Savcının kanıtlamaya çalıştığı durum).

  • Kanıt (Veri): Örneklemden elde edilen istatistikler.

Bir yargıç (araştırmacı), sanığın masum olduğunu varsayarak başlar. Ancak kanıtlar (veri) o kadar güçlüdür ki, “Masum birinin bu kanıtları oluşturması neredeyse imkansızdır” denirse, masumiyet varsayımı (\(H_0\)) reddedilir.

5.1 Tek Örneklem t-Testi (One Sample t-test)

Bilinen bir evren ortalaması ile elimizdeki örneklem ortalamasını karşılaştırırız.

Senaryo: Literatürde normal popülasyonun kaygı puanı ortalaması \(\mu=50\)’dir. Bizim 100 kişilik örneklemimizin ortalaması bundan farklı mıdır?

# Veri Üretimi
set.seed(123)
veri_tek <- rnorm(100, mean = 52, sd = 5) # Ortalaması 52 olan veri ürettik

# Test
t_test_sonuc <- t.test(veri_tek, mu = 50)

# Sonuç Tablosu
data.frame(
  İstatistik = c("t-değeri", "sd", "p-değeri", "Ortalama"),
  Değer = c(round(t_test_sonuc$statistic, 3),
            t_test_sonuc$parameter,
            format.pval(t_test_sonuc$p.value, eps = 0.001),
            round(t_test_sonuc$estimate, 2))
) %>%
  kable(caption = "Tek Örneklem t-testi Sonuçları") %>%
  kable_styling(full_width = F)
Tek Örneklem t-testi Sonuçları
İstatistik Değer
t t-değeri 5.372
df sd 99
p-değeri < 0.001
mean of x Ortalama 52.45

Yorum: \(p < .001\) olduğu için \(H_0\) reddedilir. Örneklem ortalaması (52.45), popülasyon ortalamasından (50) anlamlı derecede yüksektir.

Cohen’s \(d\) için formül:

\[d = \\rac{\bar{x} - \mu}{s}\]

Burada \(s\), örneklemin standart sapmasıdır. Ancak, kod çıktınızda direkt standart sapma değeri yok. Test istatistiği (\(t\)) ve serbestlik derecesi (\(df\)) üzerinden hesaplama yapmak daha pratik olacaktır:

\[d = \frac{t}{\sqrt{n}}\]

  • t-değeri: \(3.977\)
  • n (Örneklem Büyüklüğü): \(100\)

\[d = \frac{3.977}{\sqrt{100}}\]

\[d = \frac{3.977}{10}\]

\[d = 0.3977\]

5.2 Bağımsız Örneklem t-Testi (Independent Samples t-test)

İki farklı grubun (Örn: Deney vs Kontrol, Kadın vs Erkek) ortalamalarını karşılaştırır.

Senaryo: İki farklı öğretim yöntemi uygulanan sınıfların başarı puanları.

# Veri Üretimi
set.seed(456)
grup_A <- rnorm(50, mean = 75, sd = 10)
grup_B <- rnorm(50, mean = 82, sd = 10) # B grubu daha başarılı

# Veriyi Uzun Formata Çevirme (ggplot için)
df_bagimsiz <- data.frame(
  Puan = c(grup_A, grup_B),
  Grup = rep(c("Yöntem A", "Yöntem B"), each = 50)
)

# Görselleştirme
ggplot(df_bagimsiz, aes(x = Grup, y = Puan, fill = Grup)) +
  geom_boxplot(alpha = 0.6) +
  geom_jitter(width = 0.2, alpha = 0.4) +
  labs(title = "İki Grubun Karşılaştırılması", y = "Başarı Puanı") +
  theme_minimal() +
  theme(legend.position = "none")


# Test
t.test(Puan ~ Grup, data = df_bagimsiz, var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  Puan by Grup
## t = -3.2117, df = 98, p-value = 0.001785
## alternative hypothesis: true difference in means between group Yöntem A and group Yöntem B is not equal to 0
## 95 percent confidence interval:
##  -10.457757  -2.469918
## sample estimates:
## mean in group Yöntem A mean in group Yöntem B 
##               76.47383               82.93767
library(rstatix)
## Warning: package 'rstatix' was built under R version 4.4.3
## 
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
## 
##     filter
df_bagimsiz %>% cohens_d(Puan ~ Grup,var.equal = TRUE)

5.3 Bağımlı Örneklem t-Testi (Paired Samples t-test)

Aynı grubun iki farklı zamandaki (Önce-Sonra) ölçümlerini karşılaştırır.

Senaryo: Bir eğitim programı öncesi ve sonrası başarı puanları.

set.seed(789)
once <- rnorm(30, mean = 70, sd = 10)
# Her öğrenci puanını ortalama 5 puan artırmış olsun (+ hata payı)
sonra <- once + rnorm(30, mean = 5, sd = 5) 

# Veri Çerçevesi
df_bagimli <- data.frame(
  Ogrenci_ID = factor(rep(1:30, 2)),
  Zaman = rep(c("Önce", "Sonra"), each = 30),
  Puan = c(once, sonra)
)

# "Spaghetti Plot" (Değişimi Görmek İçin)
ggplot(df_bagimli, aes(x = Zaman, y = Puan, group = Ogrenci_ID)) +
  geom_line(color = "gray", alpha = 0.5) + # Bireysel değişimler
  geom_point(aes(color = Zaman), size = 3) +
  # Ortalama değişimi göstermek için kalın çizgi eklenebilir
  stat_summary(aes(group = 1), fun = mean, geom = "line", color = "red", size = 1.5) +
  labs(title = "Önce-Sonra Değişimi", subtitle = "Gri çizgiler bireysel değişimi, Kırmızı çizgi ortalamayı gösterir.") +
  theme_minimal()


# Test
t.test(once, sonra, paired = TRUE)
## 
##  Paired t-test
## 
## data:  once and sonra
## t = -5.5709, df = 29, p-value = 5.199e-06
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -7.505526 -3.474479
## sample estimates:
## mean difference 
##       -5.490002
df_bagimli %>% cohens_d(Puan ~ Zaman,var.equal = TRUE)

6 Non-Parametrik Testler

Veriler normal dağılım göstermediğinde t-testlerinin “robust” (dayanıklı) alternatifleri kullanılır.

  • Mann-Whitney U Testi: Bağımsız t-testinin alternatifidir. Ortalamalar yerine “sıra ortalamalarını” (ranks) karşılaştırır.

  • Wilcoxon İşaretli Sıra Testi: Bağımlı t-testinin alternatifidir.

# Mann-Whitney U Uygulaması
set.seed(101)
# Log-normal dağılım (Sağa çarpık veri)
grup_np1 <- rlnorm(30, meanlog = 1) 
grup_np2 <- rlnorm(30, meanlog = 1.5)

wilcox.test(grup_np1, grup_np2)
## 
##  Wilcoxon rank sum exact test
## 
## data:  grup_np1 and grup_np2
## W = 319, p-value = 0.05324
## alternative hypothesis: true location shift is not equal to 0

7 Hata Türleri ve Güç Analizi

  • Tip I Hata (\(\alpha\), Alfa Seviyesi):

    • Hikayesi: Masum birini hapsetmek.

    • Tanımı: \(H_0\) gerçekte doğruyken (fark yokken), bizim onu yanlışlıkla reddetmemizdir (fark bulmamızdır).

    • Önemi: Bu, bir araştırmacının yanlış bir iddiada bulunmasıdır (örneğin, “Bu ilaç işe yarıyor” demek, halbuki yaramıyor). Toplumda yanlış bilgi yayar.

    • Kontrol: Tip I hatanın kabul edilebilir en yüksek olasılığıdır. Genellikle \(\alpha = 0.05\) (%5) olarak belirlenir. Bu, 100 hipotez testinden en fazla 5 tanesinde yanılmayı göze aldığımız anlamına gelir.

  • Tip II Hata (\(\beta\), Beta Seviyesi):

    • Hikayesi: Suçlu birini serbest bırakmak.

    • Tanımı: \(H_0\) gerçekte yanlışken (fark varken), bizim onu yanlışlıkla kabul etmemizdir (farkı gözden kaçırmamızdır).

    • Önemi: Bu, araştırmacının var olan bir etkiyi kaçırmasıdır (örneğin, “Bu ilaç işe yaramıyor” demek, halbuki yarıyor). Potansiyel bir faydayı kaçırır.

    • Kontrol: Tip I hatadan sonra ikincil olarak kontrol edilir.

7.0.1 Adım 3: İstatistiksel Güç (Power) Kavramı

Güç, Tip II hatanın tam tersidir ve bu tabloda gizlidir.

  • Güç (Power): \(1 - \beta\)

    • Tanımı: \(H_A\) gerçekte doğruyken (fark varken), bizim \(H_0\)’ı doğru bir şekilde reddetme olasılığımızdır.

    • Hikayesi: Gerçekten suçlu olanı doğru bir şekilde mahkum etmek.

    • Hedef: Gücün yüksek olmasını isteriz (genellikle 0.80 veya %80).

Öğrencinin Aklındaki Soru: Neden %100 değil? Cevap: Çünkü Güç ile Tip I Hata ( \(\alpha\)) arasında takas vardır.

  • \(\alpha\)’yı (Masumu hapsetme riskini) çok düşürürseniz, \(\beta\) (Suçluyu serbest bırakma riski) artar ve Güç düşer.

  • Bir araştırmacı olarak, hangi riski daha çok göze aldığınıza karar vermelisiniz. Tıp veya hukuk gibi kritik alanlarda \(\alpha\) daha katı tutulur.

7.0.2 Adım 4: Gücü Etkileyen Faktörler (Nasıl Yüksek Güç Elde Ederiz?)

Güç analizini anlatırken, araştırmacının kontrol edebileceği üç ana faktöre odaklanın. Gücü artırmak, \(\beta\) hatasını azaltmak demektir.

  1. Örneklem Büyüklüğü (\(N\)):

    • Etki: Gücü Artırmanın En Etkili Yolu.

    • Analoji: Ne kadar çok veri toplarsan, popülasyon gerçeğini o kadar net görürsün ve doğru karar verme ihtimalin o kadar artar.

    • Uygulama: Araştırma öncesinde yapılan Güç Analizi, istenen \(\alpha\) ve Güç seviyesine ulaşmak için gerekli minimum \(N\) sayısını bulmayı sağlar.

  2. Etki Büyüklüğü (Effect Size - \(\delta\)):

    • Etki: Fark ne kadar büyükse, Güç o kadar yüksektir.

    • Analoji: Bir ilacın etkisi 1 birim mi (küçük), yoksa 100 birim mi (büyük)? 100 birimlik etkiyi bulmak, 1 birimlik etkiyi bulmaktan daha kolaydır.

  3. Anlamlılık Seviyesi (\(\alpha\)):

    • Etki: \(\alpha\) seviyesini gevşetmek (örneğin, 0.01’den 0.10’a çıkarmak) Gücü artırır.

    • Ancak: Bu, Tip I Hata riskini artırmak demektir! Bu yüzden \(\alpha\) genellikle sabittir (0.05).

Aşağıdaki grafik iki dağılımı gösterir:

  1. Kırmızı (\(H_0\) Dağılımı): Farkın olmadığı dünya.

  2. Mavi (\(H_1\) Dağılımı): Gerçekten bir farkın/etkinin olduğu dünya.

Kritik değer (kesik çizgi), karar sınırımızdır. Bu sınırın sağına düşersek “Fark Var” deriz.

# Parametreler
mean_h0 <- 80    # H0 ortalaması
mean_h1 <- 90    # H1 ortalaması (Gerçek etki)
sd_val <- 5      # Standart sapma
alpha <- 0.05    # Anlamlılık düzeyi
crit_val <- qnorm(1 - alpha, mean_h0, sd_val) # Kritik Sınır

# Veri Aralığı
x <- seq(60, 110, length.out = 1000)

# Veri Çerçevesi
df_guc <- data.frame(x = x) %>%
  mutate(
    y_h0 = dnorm(x, mean_h0, sd_val), # H0 Dağılımı
    y_h1 = dnorm(x, mean_h1, sd_val)  # H1 Dağılımı
  )

# Grafik
ggplot(df_guc, aes(x = x)) +
  
  # 1. H0 Dağılımı (Fark Yok)
  geom_line(aes(y = y_h0), color = "red", size = 1, linetype = "dashed") +
  annotate("text", x = mean_h0, y = 0.09, label = "H0: Etki Yok", color = "red", fontface="bold") +

  # 2. H1 Dağılımı (Fark Var)
  geom_line(aes(y = y_h1), color = "blue", size = 1) +
  annotate("text", x = mean_h1, y = 0.09, label = "H1: Etki Var", color = "blue", fontface="bold") +
  
  # 3. Tip I Hata (Alfa) Alanı - H0 doğrusunun kritik değerden sonraki kuyruğu
  geom_area(data = subset(df_guc, x >= crit_val), aes(y = y_h0), fill = "red", alpha = 0.5) +
  annotate("text", x = crit_val + 2, y = 0.01, label = "Tip I Hata\n(Alfa)", color = "darkred", size=3) +

  # 4. Tip II Hata (Beta) Alanı - H1 doğrusunun kritik değerden önceki kısmı
  geom_area(data = subset(df_guc, x <= crit_val), aes(y = y_h1), fill = "blue", alpha = 0.3) +
  annotate("text", x = crit_val - 2, y = 0.01, label = "Tip II Hata\n(Beta)", color = "darkblue", size=3) +
  
  # 5. Güç (1-Beta) Alanı - H1 doğrusunun kritik değerden sonraki kısmı
  geom_area(data = subset(df_guc, x >= crit_val), aes(y = y_h1), fill = "green", alpha = 0.2) +
  annotate("text", x = 95, y = 0.04, label = "GÜÇ\n(Doğru Tespit)", color = "darkgreen", fontface="bold") +

  # Kritik Değer Çizgisi
  geom_vline(xintercept = crit_val, linetype = "dotted", size = 1.2) +
  annotate("text", x = crit_val, y = 0.1, label = paste("Kritik Değer\n", round(crit_val, 2)), vjust = -0.5) +
  
  labs(title = "Hipotez Testlerinde Hata Türleri ve Güç İlişkisi",
       subtitle = "Kırmızı: Sıfır Hipotezi | Mavi: Alternatif Hipotez",
       x = "Gözlenen Değer (Ortalama)",
       y = "Olasılık Yoğunluğu") +
  theme_minimal()

  • Örneklem sayısını (\(n\)) artırırsak ne olur?

    • Dağılımlar daralır (sivrilir), örtüşme azalır. Hem alfa hem beta aynı anda küçülür, Güç artar.
  • Etki büyüklüğü (Effect Size) artarsa ne olur?

    • Mavi tepe (\(H_1\)) sağa kayar. Kırmızıdan uzaklaşır. Örtüşme azalır, Güç artar.
  • Alfayı 0.05’ten 0.01’e çekersek (Daha katı olursak) ne olur?

    • Kritik değer çizgisi sağa kayar. Kırmızı alan (Tip I hata) küçülür. ANCAK, Mavi alan (Tip II hata/Beta) büyür ve Güç azalır.

7.0.3 Kaynak

İlhan, M. (2016). Sezgi Yoluyla İstatistiksel Çıkarım. N. Güler (Ed.), Sosyal Bilimler için İstatistik içinde (223-243). Ankara: Pegem Akademi