# 1. Loading Data
library(readxl)
library(here)
Domestic_Production_IO <- read_excel(here("Yurtiçi Üretim Girdi - Çıktı Tablosu, 2023 (Temel Fiyatlarla) [Cari Fiyatlarla].xls"))

#2. Decomposition of Matrices (Z&X)
#Sektör isimlerini ve kodlarını kaydedelim. 
sector_codes <- Domestic_Production_IO[9:72, 2]
sector_names <- Domestic_Production_IO[9:72, 3]

#Ara tüketim matrisi (Z) 64x64
Z_raw <- Domestic_Production_IO[9:72, 4:67]
Z <- matrix(as.numeric(as.matrix(Z_raw)), nrow = 64, ncol = 64)

#Toplam Üretim Vektörü
X <- as.numeric(Domestic_Production_IO[85, 4:67])


#3. Coefficients (A) and Inverse Leontief (L)
#Teknik Katsayılar Matrisi (A)
A <- sweep(Z, 2, X, "/")

# Kimlik Matrisi (I)
I <- diag(64)

# Leontief Ters Matrisi (L)
L <- solve(I - A)


#4. Forward Linkages (FL) and Backward Linkages (BL) 
# Ham bağlantı katsayıları
BL_raw <- colSums(L)
FL_raw <- rowSums(L)

# Normalizasyon faktörü (Tüm matrisin ortalaması)
n <- 64
avg_L <- mean(L)

# Normalize edilmiş Rasmussen Endeksleri
BL_normalized <- BL_raw / (n * avg_L)
FL_normalized <- FL_raw / (n * avg_L)

# Sonuçları veri çerçevesinde (data.frame) birleştirelim
sonuclar <- data.frame(
  Kod = sector_codes,
  Sektor_Adi = sector_names,
  Geri_Baglanti = BL_normalized,
  Ileri_Baglanti = FL_normalized)


#5. Presentation of Data
library(ggplot2)
library(ggrepel)


colnames(sonuclar) <- c("Kod", "Sektor_Adi", "Geri_Baglanti", "Ileri_Baglanti")

 
ggplot(sonuclar, aes(x = Geri_Baglanti, y = Ileri_Baglanti)) + 
  
 
  geom_point(color = "blue", size = 3, alpha = 0.8) +
  
 
  geom_text_repel(
    aes(label = Kod), 
    size = 2.8, 
    fontface = "bold",
    color = "black",
    max.overlaps = 35,
    box.padding = 0.2,
    point.padding = 0.2,
    segment.color = "transparent" 
  ) +
  
  # Kesikli kırmızı referans çizgileri (Tam 1 noktasından geçen)
  geom_vline(xintercept = 1, linetype = "dashed", color = "#dc524d", linewidth = 0.8) +
  geom_hline(yintercept = 1, linetype = "dashed", color = "#dc524d", linewidth = 0.8) +
  
  # Eksen sınırlarını görseldekiyle birebir eşitleme
  coord_cartesian(xlim = c(0.50, 1.50), ylim = c(0.50, 4.00)) +
  
  # Ana Başlık ve Alt Başlık Yazıları
  labs(
    title = "Yurtiçi Üretim Sektörel Bağlantı Etkileri ve Sınıflandırma (2023)",
    subtitle = "Rasmussen-Jones Yöntemine Göre İleri ve Geri Bağlantı Endeksleri", 
    x = "Geri Bağlantı Endeksi (Backward Linkage)",
    y = "İleri Bağlantı Endeksi (Forward Linkage)"
  ) +
  
  # Beyaz arka plan ve kılavuz çizgileri düzeni
  theme_bw(base_size = 11) + 
  theme(
    plot.title = element_text(face = "bold", size = 13, hjust = 0.5, margin = margin(b = 4)),
    plot.subtitle = element_text(size = 9, hjust = 0.5, color = "black", margin = margin(b = 15)),
    axis.title = element_text(face = "bold", size = 10),
    axis.text = element_text(color = "gray40", size = 9),
    panel.grid.minor = element_blank(),
    panel.grid.major = element_line(color = "gray93"),
    panel.border = element_rect(color = "gray85", fill = NA, linewidth = 0.5)
  ) +
  
  # KUADRANT METİNLERİ: Konum ve renkler 
  
  # I. Çeyrek (Sağ Üst - Yeşil) 
  annotate("text", x = 1.3, y = 1.30, label = "I. ANAHTAR SEKTÖRLER\n(Güçlü BL & Güçlü FL)", color = "darkgreen", fontface = "italic", size = 3.5, hjust = 0) +
  
  # II. Çeyrek (Sol Üst - Mavi)
  annotate("text", x = 0.7, y = 1.30, label = "II. İLERİ DOĞRU BAĞLI\n(Zayıf BL & Güçlü FL)", color = "#1a44a1", fontface = "italic", size = 3.5, hjust = 0) +
  
  # III. Çeyrek (Sol Alt - Gri)
  annotate("text", x = 0.7, y = 0.7, label = "III. ZAYIF BAĞLANTILI\n(Zayıf BL & Zayıf FL)", color = "gray20", fontface = "italic", size = 3.5, hjust = 0) +
  
  # IV. Çeyrek (Sağ Alt - Turuncu)
  annotate("text", x = 1.3, y = 0.7, label = "IV. GERİ DOĞRU BAĞIMLI\n(Güçlü BL & Zayıf FL)", color = "darkorange", fontface = "italic", size = 3.5, hjust = 0)

Katma Değer İlişkileri

library(ggplot2)
library(ggrepel)

# 3. KATMA DEĞER ÇARPAN BİRLEŞİMİ

P1  <- as.numeric(Domestic_Production_IO[85, 4:67])
B1g <- as.numeric(Domestic_Production_IO[84, 4:67])

# Doğrudan Saf Yerli Katma Değer Katsayısı 
v_net_direct <- B1g / P1

# Leontief Toplam Geri Katma Değer Çarpanı (BL)
v_net_total_geri <- as.vector(as.numeric(v_net_direct %*% L))

# Ghosh Toplam İleri Katma Değer Çarpanı (FL)
B <- diag(1 / as.vector(X)) %*% as.matrix(Z)
I <- diag(nrow(B))
G <- solve(I - B)
v_net_total_ileri <- as.vector(G %*% as.matrix(v_net_direct))


temiz_kodlar_sentez  <- unlist(sector_codes)
temiz_isimler_sentez <- unlist(sector_names)

# Data Frame Kurulması
sentez_yerli_data <- data.frame(
  Kod = as.character(temiz_kodlar_sentez),
  Sektor = temiz_isimler_sentez,
  Toplam_Geri_Net_KD = v_net_total_geri,   # X Ekseni (Leontief BL)
  Toplam_Ileri_Net_KD = v_net_total_ileri  # Y Ekseni (Ghosh FL)
)


# MEDYANLAR

x_med_net <- median(sentez_yerli_data$Toplam_Geri_Net_KD)
y_med_net <- median(sentez_yerli_data$Toplam_Ileri_Net_KD)

# Eksen sınırları
x_min_n <- 0; x_max_n <- max(sentez_yerli_data$Toplam_Geri_Net_KD) + 0.1
y_min_n <- 0; y_max_n <- max(sentez_yerli_data$Toplam_Ileri_Net_KD) + 0.1

# GÖRSELLEŞTİRME (Önceki iki verinin birleşimi/sentezi)

ggplot(sentez_yerli_data, aes(x = Toplam_Geri_Net_KD, y = Toplam_Ileri_Net_KD)) + 
  
  # Sektörel Dağılım Noktaları
  geom_point(color = "blue", size = 3, alpha = 0.8) +
  
  # NACE Kod Etiketleri
  geom_text_repel(
    aes(label = Kod), 
    size = 2.6, 
    fontface = "bold",
    color = "black",
    max.overlaps = Inf,       
    box.padding = 0.3,         
    point.padding = 0.2,          
    segment.color = "gray70",    
    segment.alpha = 0.6
  ) +
  
  # Medyan Çizgileri
  geom_vline(xintercept = x_med_net, linetype = "dashed", color = "#dc524d", linewidth = 0.8) +
  geom_hline(yintercept = y_med_net, linetype = "dashed", color = "#dc524d", linewidth = 0.8) +
  

  coord_cartesian(xlim = c(x_min_n, x_max_n), ylim = c(y_min_n, y_max_n)) +
  
  
  labs(
    title = "Türkiye Ekonomisi Katma Değer Haritası (2023)",
    subtitle = "İthalat Filterli Leontief Geri (BL) ve Ghosh İleri (FL) Yerli Çarpan Dağılımı", 
    x = "Toplam Geri Net Katma Değer Çarpanı (Talep Uyarım Gücü / Leontief BL)",
    y = "Toplam İleri Net Katma Değer Çarpanı (Arz Dağıtım Gücü / Ghosh FL)"
  ) +
  
  # Kurumsal Tasarım Şablonu
  theme_bw(base_size = 11) + 
  theme(
    plot.title = element_text(face = "bold", size = 12, hjust = 0.5, margin = margin(b = 4)),
    plot.subtitle = element_text(size = 9, hjust = 0.5, color = "gray30", margin = margin(b = 15)),
    axis.title = element_text(face = "bold", size = 10),
    axis.text = element_text(color = "gray40", size = 9),
    panel.grid.minor = element_blank(),
    panel.grid.major = element_line(color = "gray93"),
    panel.border = element_rect(color = "gray85", fill = NA, linewidth = 0.5)
  ) +
  
  # ÇİFT TARAFLI MODELİN DOĞAL KONSEPTİNE UYGUN YENİ KUADRANT TANIMLARI
  # I. Çeyrek (Sağ Üst)
  annotate("text", x = x_med_net + 0.03, y = y_max_n - 0.05, 
           label = "I. YERLİ DEĞER MOTORLARI\n(Hem Arz Hem Talep Gücü Yüksek)", 
           color = "darkgreen", fontface = "italic", size = 2.8, hjust = 0) +
  
  # II. Çeyrek (Sol Üst)
  annotate("text", x = x_min_n + 0.03, y = y_max_n - 0.05, 
           label = "II. SİSTEMİK ARZ KALDIRAÇLARI\n(Yerli Dağıtım Ağı Geniş)", 
           color = "#1a44a1", fontface = "italic", size = 2.8, hjust = 0) +
  
  # III. Çeyrek (Sol Alt)
  annotate("text", x = x_min_n + 0.03, y = y_med_net - 0.7, 
           label = "III. DEĞER YOĞUNLUĞU DÜŞÜK ALANLAR\n(Medyan Altı Yerli Çarpan Yapısı)", 
           color = "#dc524d", fontface = "italic", size = 2.8, hjust = 0) +
  
  # IV. Çeyrek (Sağ Alt)
  annotate("text", x = x_med_net + 0.03, y = y_med_net - 0.7, 
           label = "IV. NET TALEP SÜRÜKLEYİCİLERİ\n(Yüksek Geri Bağlantılı)", 
           color = "darkorange4", fontface = "italic", size = 2.8, hjust = 0)

library(ggplot2)
library(ggrepel)


# 1. MAX TEORİK POTANSİYEL (KD + İTHALAT) 

P1     <- as.numeric(Domestic_Production_IO[85, 4:67])
B1g    <- as.numeric(Domestic_Production_IO[84, 4:67])
Import <- as.numeric(Domestic_Production_IO[74, 4:67])

# (B1g + Import) / P1 Tabanlı Teorik Tavan Katsayısı (İthalat sızıntıları dahil toplam hacim)
v_teorik_direct <- (B1g + Import) / P1

# A) Teorik Maksimum Geri Bağlantılı Çarpan (Leontief BL)
v_teorik_total_geri <- as.vector(as.numeric(v_teorik_direct %*% L))

# Teorik Maksimum İleri Bağlantılı Çarpan (Ghosh FL)
B <- diag(1 / as.vector(X)) %*% as.matrix(Z)
I <- diag(nrow(B))
G <- solve(I - B)
v_teorik_total_ileri <- as.vector(G %*% as.matrix(v_teorik_direct))


temiz_kodlar_teorik  <- unlist(sector_codes)
temiz_isimler_teorik <- unlist(sector_names)

# Teorik Tavan DataFrame
sentez_teorik_data <- data.frame(
  Kod = as.character(temiz_kodlar_teorik),
  Sektor = temiz_isimler_teorik,
  Toplam_Geri_Teorik_KD = v_teorik_total_geri,   # X Ekseni (Teorik Leontief BL)
  Toplam_Ileri_Teorik_KD = v_teorik_total_ileri  # Y Ekseni (Teorik Ghosh FL)
)




x_med_teorik <- median(sentez_teorik_data$Toplam_Geri_Teorik_KD)
y_med_teorik <- median(sentez_teorik_data$Toplam_Ileri_Teorik_KD)


x_min_t <- 0; x_max_t <- max(sentez_teorik_data$Toplam_Geri_Teorik_KD) + 0.1
y_min_t <- 0; y_max_t <- max(sentez_teorik_data$Toplam_Ileri_Teorik_KD) + 0.1


# GÖRSELLEŞTİRME 

ggplot(sentez_teorik_data, aes(x = Toplam_Geri_Teorik_KD, y = Toplam_Ileri_Teorik_KD)) + 
  
  
  geom_point(color = "#1f4068", size = 3, alpha = 0.8) +
  
  # NACE Kod Etiketleri
  geom_text_repel(
    aes(label = Kod), 
    size = 2.6, 
    fontface = "bold",
    color = "black",
    max.overlaps = Inf,       
    box.padding = 0.3,         
    point.padding = 0.2,          
    segment.color = "gray70",    
    segment.alpha = 0.6
  ) +
  
  # Medyan Çizgileri
  geom_vline(xintercept = x_med_teorik, linetype = "dashed", color = "#dc524d", linewidth = 0.8) +
  geom_hline(yintercept = y_med_teorik, linetype = "dashed", color = "#dc524d", linewidth = 0.8) +
  
  # Grafik Alanı Sınırlandırması
  coord_cartesian(xlim = c(x_min_t, x_max_t), ylim = c(y_min_t, y_max_t)) +
  
  
  labs(
    title = "Türkiye Ekonomisi Teorik Potansiyel Çarpan Haritası (2023)",
    subtitle = "İthalat Dahil Geri (BL) ve İleri (FL) Toplam Çarpan Bağlantısallığı", 
    x = "Toplam Geri Çarpanı (Talep Uyarım Gücü / Leontief BL)",
    y = "Toplam İleri Çarpanı (Arz Dağıtım Gücü / Ghosh FL)"
  ) +
  
  
  theme_bw(base_size = 11) + 
  theme(
    plot.title = element_text(face = "bold", size = 12, hjust = 0.5, margin = margin(b = 4)),
    plot.subtitle = element_text(size = 9, hjust = 0.5, color = "gray30", margin = margin(b = 15)),
    axis.title = element_text(face = "bold", size = 10),
    axis.text = element_text(color = "gray40", size = 9),
    panel.grid.minor = element_blank(),
    panel.grid.major = element_line(color = "gray93"),
    panel.border = element_rect(color = "gray85", fill = NA, linewidth = 0.5)
  ) +
  
 
  # I. Çeyrek (Sağ Üst)
  annotate("text", x = x_med_teorik + 0.2, y = y_max_t - 0.05, 
           label = "I.", 
           color = "darkgreen", fontface = "italic", size = 2.8, hjust = 0) +
  
  # II. Çeyrek (Sol Üst)
  annotate("text", x = x_min_t + 0.03, y = y_max_t - 0.05, 
           label = "II.", 
           color = "#1a44a1", fontface = "italic", size = 2.8, hjust = 0) +
  
  # III. Çeyrek (Sol Alt - En Altta)
  annotate("text", x = x_min_t + 0.03, y = y_min_t + 0.02, 
           label = "III.", 
           color = "#dc524d", fontface = "italic", size = 2.8, hjust = 0, vjust = 0) +
  
  # IV. Çeyrek (Sağ Alt)
  annotate("text", x = x_max_t - 0.01, y = y_min_t + 0.03, 
           label = "IV.", 
           color = "darkorange4", fontface = "italic", size = 2.8, hjust = 0)

library(ggplot2)


# 1. 2. VE 3. GRAFİK VERİLERİNİN HESAPLANMASI VE BİRLEŞTİRİLMESİ

P1     <- as.numeric(Domestic_Production_IO[85, 4:67])
B1g    <- as.numeric(Domestic_Production_IO[84, 4:67])
Import <- as.numeric(Domestic_Production_IO[74, 4:67])

v_yerli  <- B1g / P1
v_teorik <- (B1g + Import) / P1

BL_yerli  <- as.vector(as.numeric(v_yerli %*% L))
BL_teorik <- as.vector(as.numeric(v_teorik %*% L))

B <- diag(1 / as.vector(X)) %*% as.matrix(Z)
I <- diag(nrow(B))
G <- solve(I - B)

FL_yerli  <- as.vector(G %*% as.matrix(v_yerli))
FL_teorik <- as.vector(G %*% as.matrix(v_teorik))

temiz_kodlar   <- unlist(sector_codes)[1:64]
temiz_isimler  <- unlist(sector_names)[1:64]

# Veri Çerçevesinin Kurulması
degisim_data <- data.frame(
  Kod = as.character(temiz_kodlar),
  Sektor = temiz_isimler,
  Delta_BL = BL_teorik - BL_yerli,
  Delta_FL = FL_teorik - FL_yerli,
  stringsAsFactors = FALSE
)


# IFELSE İLE YÖNLÜ KARESEL DEĞİŞİM SKORUNUN HESAPLANMASI 

degisim_data$Skor_BL <- ifelse(degisim_data$Delta_BL >= 0, (degisim_data$Delta_BL)^2, -(degisim_data$Delta_BL)^2)
degisim_data$Skor_FL <- ifelse(degisim_data$Delta_FL >= 0, (degisim_data$Delta_FL)^2, -(degisim_data$Delta_FL)^2)
degisim_data$Toplam_Karesel_Kayma <- degisim_data$Skor_BL + degisim_data$Skor_FL

# En yüksek karesel kaymaya sahip ilk 10 sektörü seçme ve sıralama
sirali_data <- degisim_data[order(-degisim_data$Toplam_Karesel_Kayma), ]
en_buyuk_10_sektor <- head(sirali_data, 10)


en_buyuk_10_sektor$Sektor_Kisa <- substr(en_buyuk_10_sektor$Sektor, 1, 35) # İlk 35 karakteri al
en_buyuk_10_sektor$Sektor_Etiket <- paste0(en_buyuk_10_sektor$Kod, " - ", en_buyuk_10_sektor$Sektor_Kisa, "...")

# Grafik için büyükten küçüğe dizilim
en_buyuk_10_sektor$Sektor_Etiket <- factor(
  en_buyuk_10_sektor$Sektor_Etiket, 
  levels = en_buyuk_10_sektor$Sektor_Etiket[order(en_buyuk_10_sektor$Toplam_Karesel_Kayma)]
)


# GÖRSELLEŞTİRME 

ggplot(en_buyuk_10_sektor, aes(x = Toplam_Karesel_Kayma, y = Sektor_Etiket)) +
  
  # Lolipop Çizgileri
  geom_segment(aes(x = 0, xend = Toplam_Karesel_Kayma, y = Sektor_Etiket, yend = Sektor_Etiket), 
               color = "gray75", linewidth = 1) +
  
  
  geom_point(color = "#1f4068", size = 4) +
  
 
  geom_text(aes(label = round(Toplam_Karesel_Kayma, 3)), 
            hjust = -0.3, size = 2.8, fontface = "bold", color = "gray20") +
  
  
  scale_x_continuous(expand = expansion(mult = c(0, 0.15))) +
  
  labs(
    title = "İthalat Bağımlılığı Nedeniyle Potansiyel Altı 10 Sektör",
    subtitle = "Potansiyeli ile Yerli Katma Değer Arasındaki Toplam Yapısal Kayıp (Makas) Skoru",
    x = "Toplam Yapısal Kayıp Skoru\n Skor = sign(Δ BL) · (Δ BL)² + sign(Δ FL) · (Δ FL)²",
    y = ""
  ) +
  
  theme_bw(base_size = 11) +
  theme(
    plot.title = element_text(face = "bold", size = 11, hjust = 0),
    plot.subtitle = element_text(size = 8.5, hjust = 0, color = "gray30", margin = margin(b = 12)),
    axis.title.x = element_text(face = "bold", size = 9, color = "gray20"),
    axis.text.y = element_text(face = "bold", size = 8.5, color = "black"),
    axis.text.x = element_text(color = "gray40", size = 8),
    panel.grid.minor = element_blank(),
    panel.grid.major.y = element_blank(), 
    panel.grid.major.x = element_line(color = "gray93", linetype = "dashed"),
    panel.border = element_rect(color = "gray85", fill = NA, linewidth = 0.5)
  )