Hipotez Testleri

Hipotez testleri, verilerin istatistiksel olarak anlamlı sonuçlar üreterek, belirli hipotezlerin geçerliliğini veya kabul edilip edilmemesi gerektiğini değerlendirmeye yardımcı olur. Hipotez testlerinin genel işlevleri;

  • Null (H0) ve alternatif (H1) hipotezler belirmek; Null hipotezi mevcut bir durumu veya varsayımı ifade ederken, alternatif hipotez, bir değişiklik veya farkı ifade eder. Hipotez testleri, bu iki hipotezi karşılaştırarak bir sonuç çıkarır.
  • Veriye dayalı kararlar alma
  • Anlamlılığı değerlendirme

A/B Testi

A/B Testi, iki veya daha fazla farklı sürümün karşılaştırılması amacıyla kullanılan bir istatistiksel deney tasarımıdır. A/B Testi, işletmelerin, web sitelerinin, uygulamaların veya pazarlama stratejilerinin etkisini değerlendirmek ve karşılaştırmak için yaygın olarak kullanılır. A/B test, hangi sürümün daha etkili veya kullanıcılar için daha çekici olduğunu belirlemek için kullanılır. A/B testi terimleri;

  • Kontrol Grubu (Grup A): Mevcut sürüm veya mevcut uygulama olan kontrol grubu olarak adlandırılır.
  • Deneme Grubu (Grup B): Yeni bir sürüm veya değişiklik içeren deneme grubu olarak adlandırılır.
  • Metrik: Değerlendirilmek istenen anahtar performans göstergesi (KPI). Örneğin tıklanma oranı, dönüşüm oranı, gelir vb.
  • Hipotezler: Testin temelini oluşturan hipotezler belirlenir. Genellikle null hipotez (H0) ile alternatif hipotez (H1) olarak iki hipotez kullanılır. Sıfır hipotezi (null hipotez – H0), test edilen iki grubun arasındaki farkın önemli olmadığını savunur. Örneğin, A sınıfı ve B sınıfı adında iki sınıf olduğunu, bu sınıflardaki öğrencilerin not ortalamalarının farklı olup olmadığını test etmek istediğimizi varsayalım. Bu durumda sıfır hipotezi “A sınıfının ve B sınıfının not ortalamalarının arasında bir fark yoktur.” olur. Alternatif hipotez (H1) ise sıfır hipotezinin tersidir. Yani bu durumda alternatif hipotez, “A sınıfının ve B sınıfının not ortalamalarının arasında fark vardır.” olur.

Aşağıdaki örnek, iki grup arasındaki ortalama farkı t-testi kullanarak test eder ve sonucu istatistiksel olarak değerlendirir. Eğer p değeri 0.05’ten küçükse, deneme grubunun kontrol grubundan istatistiksel olarak anlamlı bir şekilde farklı olduğu sonucuna varılır. P değeri (p-value), bir hipotez testinin sonucunun istatistiksel anlamlılığını ölçen bir metriktir. P değeri, test edilen hipotezin geçerliliği hakkında bilgi verir. P değeri şu şekilde yorumlanır:

  • P değeri küçükse (örneğin, p < 0.05), bu, null hipotezin (H0) reddedildiği ve verilerinizin alternatif hipoteze (H1) daha yakın olduğu anlamına gelir. Yani, p değeri düşük olduğunda, sonuçlar genellikle anlamlıdır ve test edilen değişkenler arasında bir fark olduğu gösterilir.
  • P değeri büyükse (örneğin, p > 0.05), bu, null hipotezin reddedilmediği ve verilerinizin alternatif hipoteze daha uzak olduğu anlamına gelir. Yani, p değeri yüksek olduğunda, sonuçlar genellikle anlamlı değildir ve test edilen değişkenler arasında bir fark olmadığı gösterilir.

Yani, p değeri küçüldükçe, sonuçlar daha anlamlı hale gelir. Bu nedenle, p değerinin küçük olması, genellikle hipotez testlerinde tercih edilen bir durumdur, çünkü bu, verilerin test edilen değişkenler arasında bir ilişki olduğunu gösterdiği anlamına gelir.

import numpy as np
import scipy.stats as stats

control_group = [0, 1, 1, 1, 0, 1, 0, 0, 1, 0]
treatment_group = [1, 1, 1, 1, 1, 0, 1, 0, 1, 0]

control_mean = np.mean(control_group)
treatment_mean = np.mean(treatment_group)

# T-testi
t_stat, p_value = stats.ttest_ind(control_group, treatment_group)

if p_value < 0.05:
    print("Deneme grubu istatistiksel olarak anlamli bir fark yaratti.")
else:
    print("Deneme grubu istatistiksel olarak anlamli bir fark yaratmadi.")

# Output:
# Deneme grubu istatistiksel olarak anlamli bir fark yaratmadi.

Z-Testi

Z testi, bir örneklem verisinin popülasyon parametreleri hakkında istatistiksel bir hipotez testi yapmak için kullanılan bir istatistiksel testtir. Z testi, özellikle popülasyonun standart sapması bilindiğinde veya örneklem büyüklüğü büyük olduğunda kullanılır. İki türü vardır:

  • Tek örneklem Z testi: Bir popülasyonun ortalama değerinin belirli bir değere eşit olup olmadığını test etmek için kullanılır. Örneklem verisi ile popülasyon parametresi arasındaki farkın anlamlı olup olmadığını değerlendirmek için kullanılır.
  • İki örneklem Z testi: İki farklı örneklem grubunun ortalama değerlerinin birbirine eşit olup olmadığını test etmek için kullanılır. Örneklem verileri arasındaki farkın istatistiksel olarak anlamlı olup olmadığını değerlendirir.
import numpy as np
from scipy import stats

sample_data = [25, 30, 35, 40, 45, 50]
population_mean = 45
population_stddev = 5

# Orneklem buyuklugu
n = len(sample_data)

# Z istatistigi
z_statistic = (np.mean(sample_data) - population_mean) / (population_stddev / np.sqrt(n))

# P degeri
p_value = 2 * (1 - stats.norm.cdf(abs(z_statistic)))

print("Z istatistigi:", z_statistic) # Z istatistigi: -3.674234614174767
print("P degeri:", p_value) # P degeri: 0.00023856345402872847

alpha = 0.05
if p_value < alpha:
    print("Null hipotez reddedildi: Orneklem populasyon ortalamasindan farklidir.")
else:
    print("Null hipotez kabul edildi: Orneklem populasyon ortalamasindan farkli degildir.")

# Output:
# Null hipotez reddedildi: Orneklem populasyon ortalamasindan farklidir.

T-Testi

T testi (Student’s t-test), iki grup arasındaki ortalamaların istatistiksel olarak anlamlı bir farklılık gösterip göstermediğini değerlendirmek için kullanılan bir istatistiksel test türüdür. T testi, örneklem verilerinin popülasyon parametreleri hakkında istatistiksel bir hipotez testi yapmak için kullanılır. T testi, özellikle popülasyon standart sapması bilinmediğinde veya örneklem büyüklüğü küçük olduğunda kullanışlıdır. İki türü vardır:

  • Bağımsız Örneklem T-Testi: İki farklı bağımsız örneklem grubunun ortalama değerleri arasındaki farkı test etmek için kullanılır. Örneğin, iki farklı grup arasındaki ortalama yaş farkını değerlendirmek istendiğinde bağımsız örneklem t-testi kullanılabilir.
  • Bağımlı Örneklem T-Testi (Eşleştirilmiş T-Test): Aynı örneklemden alınan iki farklı örneklem grubunun ortalama değerleri arasındaki farkı test etmek için kullanılır. Örneğin, aynı kişilerin kilo kaybı ölçümleri arasındaki farkı değerlendirmek için bağımlı örneklem t-testi kullanılabilir.
import numpy as np
from scipy import stats

group1 = [25, 30, 35, 40, 45]
group2 = [30, 35, 40, 45, 50]

# Bagimsiz orneklem T-testi
t_statistic, p_value = stats.ttest_ind(group1, group2)

print("T istatistigi:", t_statistic) # T istatistigi: -1.0
print("P degeri:", p_value) # P degeri: 0.34659350708733416

alpha = 0.05
if p_value < alpha:
    print("Null hipotez reddedildi: Iki grup arasinda istatistiksel olarak anlamli bir fark vardir.")
else:
    print("Null hipotez kabul edildi: Iki grup arasinda istatistiksel olarak anlamli bir fark yoktur.")

# Output:
# Null hipotez kabul edildi: Iki grup arasinda istatistiksel olarak anlamli bir fark yoktur.

Tek Yön Testi (One-Tailed Test)

Tek yönlü test (one-tailed test), hipotez testleri sırasında, anlamlılık düzeyini bir yönde değerlendirmenize olanak tanır. Yani, test edilen hipotez, sadece bir yönde anlamlılık aranmasına dayanır. Tek yönlü testler, hipotezinizin yönünü ve beklenen sonucu önceden belirlediğinizde kullanışlıdır. Tek yönlü testlerin iki temel türü vardır:

  • Sağa Tek Yönlü Test (Right-Tailed Test): Sağa tek yönlü testlerde, hipotez, popülasyon parametresinin belirli bir değerden büyük olduğunu test eder. Örneğin, bir yeni tedavi yöntemi ile ilgili hipotez, tedavi grubunun kontrol grubundan daha iyi olduğunu iddia ediyorsa, sağa tek yönlü bir test kullanılabilir.
  • Sola Tek Yönlü Test (Left-Tailed Test): Sola tek yönlü testlerde, hipotez, popülasyon parametresinin belirli bir değerden küçük olduğunu test eder. Örneğin, bir yeni ilacın yan etkileri ile ilgili hipotez, ilacın yan etkilerinin kontrol grubundan daha düşük olduğunu iddia ediyorsa, sola tek yönlü bir test kullanılabilir.
import numpy as np
from scipy import stats

data = [25, 30, 35, 40, 45, 50]
population_mean = 40  # Hipotez: Ortalama populasyon degeri 40'tan buyuktur.

# T testi yapin (saga tek yonlu test)
t_statistic, p_value = stats.ttest_1samp(data, population_mean)

print("T istatistigi:", t_statistic) # T istatistigi: -0.6546536707079772
print("P degeri:", p_value) # P degeri: 0.5416045607931204

alpha = 0.05
if p_value < alpha:
    print("Null hipotez reddedildi: Ortalama populasyon degeri 40'tan buyuktur.")
else:
    print("Null hipotez kabul edildi: Ortalama populasyon degeri 40'tan buyuk degildir.")

# Output
# Null hipotez kabul edildi: Ortalama populasyon degeri 40'tan buyuk degildir.

İki Yön Testi (Two-Tailed Testi)

İki yönlü test (two-tailed test), hipotez testleri sırasında, anlamlılık düzeyini her iki yönde de değerlendirmenize olanak tanır. Yani, test edilen hipotez, popülasyon parametresinin belirli bir değerden farklı olduğunu test eder, ancak farkın hangi yönde olduğu önceden belirli değildir. İki yönlü testler, hipotezinizin yönünü önceden belirlemediğiniz ve iki yönde de anlamlılığı değerlendirmek istediğiniz durumlarda kullanışlıdır. İki yönlü testlerin iki temel türü vardır:

  • Sağa ve Sola İki Yönlü Test (Two-Tailed Test): İki yönlü testlerde, hipotez, popülasyon parametresinin belirli bir değerden farklı olduğunu test eder, ancak bu farkın hangi yönde olduğu önceden belirli değildir. Bu testler iki yönde anlamlılığı değerlendirirler.
  • Yüzde 50 Oranlı İki Yönlü Test (Two-Tailed Test): Bu tür bir iki yönlü test, hipotezinizi yalnızca bir yönde değil, iki yönde de test etmek istediğinizde kullanılır. Örneğin, bir yeni tedavi yönteminin kontrol grubuna göre daha iyi veya daha kötü olup olmadığını değerlendirmek için kullanılabilir.
import numpy as np
from scipy import stats

group1 = [25, 30, 35, 40, 45]
group2 = [30, 35, 40, 45, 50]

# Iki yonlu T testi
t_statistic, p_value = stats.ttest_ind(group1, group2)

print("T istatistigi:", t_statistic) # T istatistigi: -1.0
print("P degeri:", p_value) # P degeri: 0.34659350708733416

alpha = 0.05
if p_value < alpha:
    print("Null hipotez reddedildi: Iki grup arasinda istatistiksel olarak anlamli bir fark vardir.")
else:
    print("Null hipotez kabul edildi: Iki grup arasinda istatistiksel olarak anlamli bir fark yoktur.")

# Output
# Null hipotez kabul edildi: Iki grup arasinda istatistiksel olarak anlamli bir fark yoktur.

Ki-Kare (Chi-Square Testi)

Ki-kare testi (Chi-Square test), iki veya daha fazla kategorik değişken arasındaki ilişkiyi veya bağımsızlık ilişkisini değerlendirmek için kullanılan bir istatistiksel testtir. Ki-kare testi, veri seti içindeki gözlemleri ve beklenen frekansları karşılaştırarak, değişkenler arasındaki bağlantıyı veya bağımsızlığı değerlendirir. Ki-kare testi, verilerin ayrık (kategorik) olduğu durumlar için kullanışlıdır. Ki-kare testinin iki temel türü vardır:

  • Ki-Kare Bağımsızlık Testi (Chi-Square Independence Test): Bu test, iki veya daha fazla kategorik değişkenin bağımsızlık ilişkisini değerlendirir. Örneğin, bir ürünün tercih edilme durumu ile cinsiyet arasındaki ilişkiyi incelemek için bu testi kullanabilirsiniz.
  • Ki-Kare Uyum Testi (Chi-Square Goodness-of-Fit Test): Bu test, bir örneklem verisinin belirli bir teorik dağılıma uyup uymadığını değerlendirir. Örneğin, bir zarın adil olup olmadığını test etmek için bu testi kullanabilirsiniz.
import numpy as np
from scipy import stats

observed_data = np.array([[30, 10], [20, 25]])
# Ki-Kare
chi2, p, _, _ = stats.chi2_contingency(observed_data)

print("Ki-kare istatistigi:", chi2) # Ki-kare istatistigi: 6.949930555555551
print("P degeri:", p) # P degeri: 0.00838224869725173

alpha = 0.05
if p < alpha:
    print("Null hipotez reddedildi: Iki degisken arasinda bagimsizlik yoktur.")
else:
    print("Null hipotez kabul edildi: Iki degisken arasinda bagimsizlik vardir.")

# Output
# Null hipotez reddedildi: Iki degisken arasinda bagimsizlik yoktur.

ANOVA (Analysis of Variance) Testi

ANOVA (Analysis of Variance), birden fazla grup arasındaki istatistiksel anlamlılığı değerlendirmek için kullanılan bir istatistiksel analiz tekniğidir. ANOVA, grupların ortalamaları arasındaki farklılıkları inceleyerek, gruplar arasında anlamlı bir fark olup olmadığını belirler. ANOVA, özellikle gruplar arasındaki varyansı karşılaştırır. ANOVA’nın iki temel türü vardır:

  • Tek Yönlü ANOVA (One-Way ANOVA): Tek bir bağımsız değişkenin (grup) birden fazla düzeyi arasındaki farkı test etmek için kullanılır. Örneğin, farklı dozaj seviyelerine sahip üç farklı ilaç grubu arasındaki etkileri karşılaştırmak için tek yönlü ANOVA kullanabilirsiniz.
  • İki Yönlü ANOVA (Two-Way ANOVA): İki bağımsız değişkenin (grup ve faktör) etkilerini incelemek için kullanılır. İki yönlü ANOVA, gruplar arası ve faktörler arası etkileri ayrı ayrı ve etkileşim etkisini de değerlendirir.
import numpy as np
from scipy import stats

group1 = [65, 72, 75, 68, 69]
group2 = [72, 78, 82, 74, 70]
group3 = [60, 65, 73, 68, 75]

# Tek yonlu ANOVA 
f_statistic, p_value = stats.f_oneway(group1, group2, group3)

print("F istatistigi:", f_statistic) # F istatistigi: 2.7050938337801593
print("P degeri:", p_value) # P degeri: 0.10721776783116659

alpha = 0.05
if p_value < alpha:
    print("Null hipotez reddedildi: Gruplar arasinda anlamli bir fark vardir.")
else:
    print("Null hipotez kabul edildi: Gruplar arasinda anlamli bir fark yoktur.")

# Output
# Null hipotez kabul edildi: Gruplar arasinda anlamli bir fark yoktur.

Mann-Whitney U Testi

Mann-Whitney U testi, iki bağımsız örneklem grubunun medyan değerleri arasındaki istatistiksel anlamlılığı değerlendirmek için kullanılan bir non-parametrik hipotez testidir. Mann-Whitney U testi, verilerin dağılımının normalliğini karşılamadığında veya sıralı verilerle çalışıldığında kullanışlıdır. Bu test, grupların merkezi eğilimlerini karşılaştırır ve gruplar arasındaki farkı test eder. Mann-Whitney U testinin iki ana türü vardır:

  • Bağımsız Mann-Whitney U Testi: İki bağımsız örneklem grubunun medyan değerleri arasındaki farkı test etmek için kullanılır. Bu test, gruplar arasındaki medyan değerlerinin farklı olup olmadığını değerlendirir.
  • İçiçe Mann-Whitney U Testi: Aynı örneklem grubunun farklı koşullar altında elde edilen verilerinin medyan değerlerini karşılaştırmak için kullanılır. Bu test, aynı grup içindeki iki koşulun medyan değerleri arasındaki farkı test eder.
import numpy as np
from scipy import stats

group1 = [25, 30, 35, 40, 45]
group2 = [30, 35, 40, 45, 50]

# Bagimsiz Mann-Whitney U Testi
U_statistic, p_value = stats.mannwhitneyu(group1, group2)

print("U istatistigi:", U_statistic) # U istatistigi: 8.0
print("P degeri:", p_value) # P degeri: 0.39761475195653073

alpha = 0.05
if p_value < alpha:
    print("Null hipotez reddedildi: Gruplar arasinda anlamli bir medyan farki vardir.")
else:
    print("Null hipotez kabul edildi: Gruplar arasinda anlamli bir medyan farki yoktur.")

# Output
# Null hipotez kabul edildi: Gruplar arasinda anlamli bir medyan farki yoktur.

Wilcoxon İşaretli Sıralar Testi

Wilcoxon İşaretli Sıralar Testi (Wilcoxon Signed-Rank Test), bir grup içindeki iki bağımlı örneklem arasındaki medyan farkını değerlendirmek için kullanılan bir non-parametrik hipotez testidir. Bu test, gruplar arasındaki merkezi eğilimin farklı olup olmadığını belirlemek amacıyla kullanılır. Wilcoxon İşaretli Sıralar Testi, verilerin normallik varsayımını karşılayamadığında veya sıralı verilerle çalışıldığında tercih edilir. Wilcoxon İşaretli Sıralar Testi’nin iki temel türü vardır:

  • İki Örneklem Wilcoxon İşaretli Sıralar Testi: İki bağımlı grup arasındaki medyan farkını test etmek için kullanılır. Bu test, aynı gruptaki iki farklı koşul altında elde edilen verilerin medyanlarını karşılaştırır.
  • Bir Örneklem Wilcoxon İşaretli Sıralar Testi: Bir grup içindeki örneklem verilerinin medyan değeri ile bir teorik medyan değerini karşılaştırmak için kullanılır. Bu test, bir grup içindeki verilerin bir teorik dağılıma uygunluğunu değerlendirir.
import numpy as np
from scipy import stats

group1 = [25, 30, 35, 40, 45]
group2 = [30, 35, 40, 45, 50]

# Iki orneklem Wilcoxon Isaretli Siralar Testi
statistic, p_value = stats.wilcoxon(group1, group2)

print("Test istatistigi:", statistic) # Test istatistigi: 0.0
print("P degeri:", p_value) # P degeri: 0.0625

alpha = 0.05
if p_value < alpha:
    print("Null hipotez reddedildi: Gruplar arasinda anlamli bir medyan farki vardir.")
else:
    print("Null hipotez kabul edildi: Gruplar arasinda anlamli bir medyan farki yoktur.")

# Output
# Null hipotez kabul edildi: Gruplar arasinda anlamli bir medyan farki yoktur.

Pearson Korelasyon Testi

Pearson Korelasyon Testi, iki sürekli değişken arasındaki ilişkiyi değerlendirmek için kullanılan bir parametrik istatistiksel testtir. Pearson Korelasyonu, bu iki değişken arasındaki lineer ilişkiyi ölçer ve bu ilişkinin ne kadar güçlü olduğunu ifade eder. Korelasyon, iki değişkenin nasıl birlikte değiştiğini incelemek için kullanılır. Pearson korelasyonunun iki ana formülü vardır:

  • Pearson Korelasyon Katsayısı (r): Bu, iki sürekli değişken arasındaki lineer ilişkiyi ölçer. Pearson korelasyonu, -1 ile 1 arasında bir değere sahiptir. -1, tam tersi bir ilişkiyi, 1 ise mükemmel bir pozitif ilişkiyi ifade eder. 0 ise ilişki olmadığını gösterir.
  • Pearson Korelasyon Katsayısı İnferansı: Korelasyon katsayısının anlamlılığını değerlendirmek için kullanılır. Bu, korelasyonun rastgele mi yoksa gerçek bir ilişkiyi yansıttığını belirlemeye yardımcı olur.
import numpy as np
from scipy import stats

x = np.array([2, 4, 6, 8, 10])
y = np.array([1, 3, 5, 7, 9])

# Pearson Korelasyon Katsayisi ve p degeri
correlation_coefficient, p_value = stats.pearsonr(x, y)

print("Pearson Korelasyon Katsayisi (r):", correlation_coefficient) # Pearson Korelasyon Katsayisi (r): 1.0
print("P degeri:", p_value) # P degeri: 0.0

alpha = 0.05
if p_value < alpha:
    print("Korelasyon anlamlidir: Iki degisken arasinda anlamli bir lineer iliski vardir.")
else:
    print("Korelasyon anlamli degildir: Iki degisken arasinda anlamli bir lineer iliski yoktur.")

# Output
# Korelasyon anlamlidir: Iki degisken arasinda anlamli bir lineer iliski vardir.