library(readxl)
library(openxlsx)

rm(list = ls())

veriler <- read.xlsx("C:/Users/Salim/Desktop/makaleler/Gida Enflasyonu/veriler.xlsx")
cat("Veri boyutu:", nrow(veriler), "x", ncol(veriler), "\n\n")

cat("================================================================\n")
cat("   TURKIYE TEMSILIYET KONTROLU (TUIK 19-64 yas referans)\n")
cat("================================================================\n\n")

cat("=== 1. CINSIYET ===\n")
cin_tablo <- table(veriler$cinsiyet)
cin_oran <- prop.table(cin_tablo) * 100
tuik_cinsiyet <- c(Erkek = 50.2, Kadin = 49.8)

cat("Orneklem:\n")
for(nm in names(cin_tablo)) cat("  ", nm, ":", cin_tablo[nm], "(", round(cin_oran[nm], 1), "%)\n")
cat("TUIK referans:\n")
for(nm in names(tuik_cinsiyet)) cat("  ", nm, ":", tuik_cinsiyet[nm], "%\n")
cat("Sapma: Erkek", round(cin_oran["Erkek"] - tuik_cinsiyet["Erkek"], 1),
    "pp | Kadin", round(cin_oran["Kadin"] - tuik_cinsiyet["Kadin"], 1), "pp\n")

chisq_cin <- chisq.test(cin_tablo, p = tuik_cinsiyet / 100)
cat("Ki-kare testi: X2 =", round(chisq_cin$statistic, 2),
    ", p =", format.pval(chisq_cin$p.value, digits = 3), "\n\n")

cat("=== 2. YAS GRUPLARI ===\n")
veriler$yas_grubu <- cut(veriler$yas,
                         breaks = c(18, 24, 34, 44, 54, 64, Inf),
                         labels = c("18-24", "25-34", "35-44", "45-54", "55-64", "65+"),
                         right = TRUE)

yas_tablo <- table(veriler$yas_grubu)
yas_oran <- prop.table(yas_tablo) * 100

tuik_yas <- c("18-24" = 15.8, "25-34" = 21.3, "35-44" = 21.0,
              "45-54" = 17.8, "55-64" = 14.1, "65+" = 10.0)

cat(sprintf("%-8s %8s %8s %8s %8s\n", "Grup", "n", "Orneklem%", "TUIK%", "Sapma pp"))
for(nm in names(tuik_yas)) {
  n_val <- ifelse(nm %in% names(yas_tablo), yas_tablo[nm], 0)
  o_val <- ifelse(nm %in% names(yas_oran), round(yas_oran[nm], 1), 0)
  sapma <- round(o_val - tuik_yas[nm], 1)
  cat(sprintf("%-8s %8d %8.1f %8.1f %8.1f\n", nm, n_val, o_val, tuik_yas[nm], sapma))
}

yas_test_tablo <- yas_tablo[names(tuik_yas)]
yas_test_tablo[is.na(yas_test_tablo)] <- 0
chisq_yas <- chisq.test(yas_test_tablo, p = tuik_yas / 100)
cat("Ki-kare: X2 =", round(chisq_yas$statistic, 2),
    ", p =", format.pval(chisq_yas$p.value, digits = 3), "\n\n")

cat("=== 3. COGRAFI BOLGE ===\n")
bolge_tablo <- table(veriler$bolge)
bolge_oran <- prop.table(bolge_tablo) * 100

tuik_bolge <- c("Marmara" = 29.3, "Ic Anadolu" = 15.6, "Ege" = 12.7,
                "Akdeniz" = 13.0, "Karadeniz" = 8.8,
                "Guneydogu Anadolu" = 11.2, "Dogu Anadolu" = 9.4)

cat(sprintf("%-25s %6s %10s %8s %8s\n", "Bolge", "n", "Orneklem%", "TUIK%", "Sapma pp"))
for(nm in names(tuik_bolge)) {
  n_val <- ifelse(nm %in% names(bolge_tablo), bolge_tablo[nm], 0)
  o_val <- ifelse(nm %in% names(bolge_oran), round(bolge_oran[nm], 1), 0)
  sapma <- round(o_val - tuik_bolge[nm], 1)
  cat(sprintf("%-25s %6d %10.1f %8.1f %8.1f\n", nm, n_val, o_val, tuik_bolge[nm], sapma))
}

bolge_test <- bolge_tablo[names(tuik_bolge)]
bolge_test[is.na(bolge_test)] <- 0
chisq_bolge <- chisq.test(bolge_test, p = tuik_bolge / 100)
cat("Ki-kare: X2 =", round(chisq_bolge$statistic, 2),
    ", p =", format.pval(chisq_bolge$p.value, digits = 3), "\n\n")

cat("=== 4. EGITIM DUZEYI ===\n")
egitim_tablo <- table(veriler$egitim)
egitim_oran <- prop.table(egitim_tablo) * 100

tuik_egitim <- c("Okur yazar" = 3.5, "Ilkokul" = 18.6, "Ortaokul" = 17.8,
                 "Lise" = 23.4, "Universite ve uzeri" = 36.7)

cat(sprintf("%-22s %6s %10s %8s %8s\n", "Egitim", "n", "Orneklem%", "TUIK%", "Sapma pp"))
for(nm in names(tuik_egitim)) {
  n_val <- ifelse(nm %in% names(egitim_tablo), egitim_tablo[nm], 0)
  o_val <- ifelse(nm %in% names(egitim_oran), round(egitim_oran[nm], 1), 0)
  sapma <- round(o_val - tuik_egitim[nm], 1)
  cat(sprintf("%-22s %6d %10.1f %8.1f %8.1f\n", nm, n_val, o_val, tuik_egitim[nm], sapma))
}

egitim_test <- egitim_tablo[names(tuik_egitim)]
egitim_test[is.na(egitim_test)] <- 0
chisq_egitim <- chisq.test(egitim_test, p = tuik_egitim / 100)
cat("Ki-kare: X2 =", round(chisq_egitim$statistic, 2),
    ", p =", format.pval(chisq_egitim$p.value, digits = 3), "\n\n")

cat("=== 5. MEDENI DURUM ===\n")
medeni_tablo <- table(veriler$medeni)
medeni_oran <- prop.table(medeni_tablo) * 100
tuik_medeni <- c("Evli" = 58.0, "Bekar" = 42.0)

cat(sprintf("%-10s %6s %10s %8s %8s\n", "Durum", "n", "Orneklem%", "TUIK%", "Sapma pp"))
for(nm in names(tuik_medeni)) {
  n_val <- ifelse(nm %in% names(medeni_tablo), medeni_tablo[nm], 0)
  o_val <- ifelse(nm %in% names(medeni_oran), round(medeni_oran[nm], 1), 0)
  sapma <- round(o_val - tuik_medeni[nm], 1)
  cat(sprintf("%-10s %6d %10.1f %8.1f %8.1f\n", nm, n_val, o_val, tuik_medeni[nm], sapma))
}
cat("\n")

cat("================================================================\n")
cat("   POST-STRATIFICATION WEIGHTING FIZIBILITE KONTROLU\n")
cat("================================================================\n\n")

cat("Cinsiyet x Yas Grubu capraz tablosu:\n")
capraz <- table(veriler$cinsiyet, veriler$yas_grubu)
print(capraz)

cat("\nMinimum hucre buyuklugu:", min(capraz), "\n")
cat("5'ten kucuk hucre sayisi:", sum(capraz < 5), "/", length(capraz), "\n")
cat("20'den kucuk hucre sayisi:", sum(capraz < 20), "/", length(capraz), "\n\n")

cat("Cinsiyet x Bolge capraz tablosu:\n")
capraz2 <- table(veriler$cinsiyet, veriler$bolge)
print(capraz2)

cat("\nMinimum hucre buyuklugu:", min(capraz2), "\n")
cat("5'ten kucuk hucre sayisi:", sum(capraz2 < 5), "/", length(capraz2), "\n")
cat("20'den kucuk hucre sayisi:", sum(capraz2 < 20), "/", length(capraz2), "\n\n")

cat("================================================================\n")
cat("   STRATIFIED SUBSAMPLING FIZIBILITE (hedef: TUIK oranlari)\n")
cat("================================================================\n\n")

cat("Cinsiyet bazinda max dengeli orneklem:\n")
n_erkek <- cin_tablo["Erkek"]
n_kadin <- cin_tablo["Kadin"]
cat("  Mevcut Erkek:", n_erkek, "| Kadin:", n_kadin, "\n")

hedef_esit <- min(n_erkek, n_kadin)
cat("  Eger 1:1 oranla eslestirsek: 2 x", hedef_esit, "=", 2 * hedef_esit, "gozlem\n")

hedef_tuik <- round(n_erkek / (tuik_cinsiyet["Erkek"] / 100))
kadin_gerekli <- round(hedef_tuik * tuik_cinsiyet["Kadin"] / 100)
cat("  Eger TUIK oranini (50/50) hedeflersek:", n_erkek, "erkek icin",
    kadin_gerekli, "kadin gerekli\n")
cat("  Toplam:", n_erkek + kadin_gerekli, "gozlem (mevcut", n_erkek + n_kadin, ")\n\n")

cat("Bolge bazinda kisitlama:\n")
for(nm in names(tuik_bolge)) {
  mevcut <- ifelse(nm %in% names(bolge_tablo), bolge_tablo[nm], 0)
  hedef_n <- round(1051 * tuik_bolge[nm] / 100)
  durum <- ifelse(mevcut >= hedef_n, "YETERLI", paste0("EKSIK (", hedef_n - mevcut, " kisi)"))
  cat(sprintf("  %-25s Mevcut: %4d  Hedef: %4d  %s\n", nm, mevcut, hedef_n, durum))
}

cat("\n================================================================\n")
cat("   SONUC VE ONERILER\n")
cat("================================================================\n")

