GİRİŞ

Bu ödevde, günlük hayatta sıkça karşılaşılan bir durumu veriler yardımıyla inceledim. Kentleşme arttıkça ülkelerin ekonomik durumu nasıl değişmektedir? Bu soruya cevap bulabilmek için Dünya Bankası’nın (WDI) veri tabanından 2000–2022 yılları arasındaki kentleşme oranları ve kişi başına düşen gelir verilerini aldım. Amacım, bu iki değişken arasındaki ilişkiyi grafikler ve bir regresyon modeli kullanarak analiz etmekti.

GELİŞME

Analize başlarken önce WDI ve tidyverse paketlerini yükledim. WDI paketi sayesinde ihtiyacım olan verileri hızlı bir şekilde R ortamına aldım. Kodlarda özellikle filter ve drop_na fonksiyonlarını kullandım. Bu fonksiyonlar veriyi temizlemek için gerekliydi. Çünkü eksik veriler ya da ülke dışındaki veriler (örneğin Dünya Ortalaması) sonuçları yanlış gösterebilirdi. Son olarak lm() fonksiyonunu kullanarak, kentleşmenin gelir üzerindeki etkisini inceleyen bir doğrusal regresyon modeli kurdum.

Grafik 1 - Genel Saçılım ve Regresyon

Tüm yıllara ait verileri tek bir tabloda topladım ve bir saçılım grafiği oluşturdum. Üzerine regresyon çizgisini eklediğimde, kentleşme ile gelir arasında belirgin bir ilişki olduğunu gördüm. Kentleşme oranı arttıkça gelir de artmaktadır.

Grafik 2 - Yıllara Göre Karşılaştırma

Verileri belirli zaman aralıklarına ayırdığımda 2000–2022 yılları arasında ülkelerin genel olarak daha zengin hale geldiği görülmektedir. Buna rağmen kentleşmenin gelir üzerindeki etkisi bu dönemler boyunca benzer şekilde devam etmektedir.

Grafik 3 - Bölgesel Dağılım

Verileri bölgelere göre ayırdığımda ülkelerin belirli gruplar oluşturduğu dikkat çekmektedir. Avrupa ülkeleri genellikle hem kentleşme oranı hem de gelir düzeyi yüksek bir grupta yer alırken, Afrika ülkeleri daha düşük seviyelerde toplanmaktadır. Bu durum ekonomik gelişmenin bölgelere göre farklılaştığını göstermektedir.

Grafik 4 - Logaritmik Ölçek

Ülkeler arasında büyük gelir farkları olduğu için grafiği logaritmik ölçekte çizdim. Bu sayede kentleşme ile gelir arasındaki ilişki daha net ve anlaşılır hale gelmiştir.

Grafik 5 - 2022 Yılı Analizi

Bu grafikte sadece 2022 yılı verilerine baktım ve geliri 60.000 doların üzerinde olan ülkeleri özellikle gösterdim. Singapur, Lüksemburg ve Katar gibi ülkelerin yüksek kentleşme oranlarına sahip olduğu açıkça görülmektedir.

Grafik 6 - Hata Analizi (Residuals)

Son olarak modelin hata terimlerini inceledim. Hataların sıfır çizgisi etrafında dağılması, kurulan regresyon modelinin genel olarak uygun olduğunu göstermektedir.

SONUÇ

Bu ödevi yaparken verilerin, bazı temel bilgilerin daha net anlaşılmasını sağladığını anladım. Yaptığım analiz sonucunda ulaştığım en temel sonuç, kentleşmenin bir ülkenin ekonomik olarak gelişmesinde önemli bir etken olmasıdır. Kentleşme oranı artmadan hiçbir ülke yüksek gelirli bir ekonomi seviyesine ulaşamamıştır. Ancak Grafik 6’da görülen sapmalar, sadece insanların şehirlere göç etmesinin tek başına yeterli olmadığını göstermektedir. Bu sürecin sanayileşme ve doğru ekonomik politikalarla desteklenmesi gerekmektedir. Kısaca, kentleşme ekonomik kalkınma için önemli bir adımdır ancak bu sürecin nasıl ilerleyeceği ülkelerin uyguladığı politikalara bağlıdır. Bu çalışma sayesinde veri analizinin sadece hesaplama yapmak olmadığını, ekonomik gelişmeleri anlamada da önemli olduğunu gördüm.

KODLAR VE GRAFİKLER

Burada Dünya Bankası verilerini kullanarak kentleşme oranı ile kişi başına gelir arasındaki ilişkiyi inceleyeceğim.

Paketlerin bilgisayarımda yüklü olup olmadığına bakıyorum yoksa yüklüyorum.

if(!require(WDI)) install.packages("WDI")
## Loading required package: WDI
if(!require(tidyverse)) install.packages("tidyverse")
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.6
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.1     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.2
## ✔ purrr     1.2.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Yüklediğim paketleri kullanıma hazır hale getiriyorum.

library(WDI)
library(tidyverse)

Değişkenlerimi ve yıllarımı tanımlayarak verileri olduğu gibi sisteme aktarıyorum

ham_veri <- WDI::WDI(
  indicator = c("gdp_cap" = "NY.GDP.PCAP.PP.CD", "urban_rate" = "SP.URB.TOTL.IN.ZS"),
  country = "all", 
  start = 2000, 
  end = 2022, 
  extra = TRUE
)

Verinin gelip gelmediğini görmek için ilk satırına bakıyorum

head(ham_veri)
##       country iso2c iso3c year status lastupdated   gdp_cap urban_rate
## 1 Afghanistan    AF   AFG 2012         2025-12-19 1988.4293   23.34344
## 2 Afghanistan    AF   AFG 2016         2025-12-19 2213.1814   24.65883
## 3 Afghanistan    AF   AFG 2017         2025-12-19 2335.7959   24.83528
## 4 Afghanistan    AF   AFG 2011         2025-12-19 1744.0606   22.82057
## 5 Afghanistan    AF   AFG 2000         2025-12-19  813.5503   18.55820
## 6 Afghanistan    AF   AFG 2013         2025-12-19 2133.2413   23.80771
##       region capital longitude latitude     income lending
## 1 South Asia   Kabul   69.1761  34.5228 Low income     IDA
## 2 South Asia   Kabul   69.1761  34.5228 Low income     IDA
## 3 South Asia   Kabul   69.1761  34.5228 Low income     IDA
## 4 South Asia   Kabul   69.1761  34.5228 Low income     IDA
## 5 South Asia   Kabul   69.1761  34.5228 Low income     IDA
## 6 South Asia   Kabul   69.1761  34.5228 Low income     IDA

Sadece istediğim yılları ve gerçek ülkeleri seçiyorum.

temiz_veri <- ham_veri %>%
  filter(year %in% c(2000, 2005, 2010, 2015, 2020, 2022)) %>%
  filter(region != "Aggregates") %>%
  drop_na(gdp_cap, urban_rate)

Tablomun son halini kontrol ediyorum

nrow(temiz_veri)
## [1] 1175

Doğrusal regresyon modelimi kuruyorum: y (Gelir) ~ x (Kentleşme)

model_analizi <- lm(gdp_cap ~ urban_rate, data = temiz_veri)

Kurduğum modelin sonuçlarını inceliyorum.

summary(model_analizi)
## 
## Call:
## lm(formula = gdp_cap ~ urban_rate, data = temiz_veri)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -39519 -10928  -1972   6432 112979 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -15324.71    1362.10  -11.25   <2e-16 ***
## urban_rate     601.80      21.57   27.91   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 17420 on 1173 degrees of freedom
## Multiple R-squared:  0.399,  Adjusted R-squared:  0.3985 
## F-statistic: 778.7 on 1 and 1173 DF,  p-value: < 2.2e-16

Modeldeki hataları tabloya ekliyorum

temiz_veri$artiklar <- residuals(model_analizi)

2022 yılı için ayrı bir tablo oluşturuyorum

veri_2022 <- temiz_veri %>% filter(year == 2022)

1. Genel İlişki Grafiği (Tüm veri ve regresyon çizgisi)

ggplot(temiz_veri, aes(x = urban_rate, y = gdp_cap)) +
  geom_point(alpha = 0.3, color = "steelblue") +
  geom_smooth(method = "lm", color = "darkred") +
  labs(title = "1. Kentlesme ve Gelir Arasindaki Genel Iliski", x = "Kentlesme Orani (%)", y = "Kisi Basi Gelir ($)")
## `geom_smooth()` using formula = 'y ~ x'

# 2. Yıllara Göre Kıyaslama Grafiği

ggplot(temiz_veri, aes(x = urban_rate, y = gdp_cap)) +
  geom_point(aes(color = as.factor(year)), alpha = 0.5) +
  facet_wrap(~year) +
  labs(title = "2. Yillara Gore Noktasal Dagilim", x = "Kentlesme (%)", y = "Gelir ($)")

# 3. Bölgesel Kümelenme Grafiği

ggplot(temiz_veri, aes(x = urban_rate, y = gdp_cap)) +
  geom_point(aes(color = region), alpha = 0.6) +
  labs(title = "3. Bolgesel Dagilim Analizi", x = "Kentlesme (%)", y = "Gelir ($)")

# 4. Logaritmik Ölçekte İlişki Grafiği (Daha net bir doğru için)

ggplot(temiz_veri, aes(x = urban_rate, y = gdp_cap)) +
  geom_point(alpha = 0.4, color = "darkgreen") +
  scale_y_log10() +
  labs(title = "4. Logaritmik Olcekte Nokta Grafigi", x = "Kentlesme (%)", y = "Log(Gelir)")

# 5. 2022 Yılı Güncel Durum Grafiği

ggplot(veri_2022, aes(x = urban_rate, y = gdp_cap)) +
  geom_point(color = "darkblue", size = 2) +
  geom_text(aes(label = ifelse(gdp_cap > 60000, country, "")), vjust = -1, size = 3, check_overlap = TRUE) +
  labs(title = "5. 2022 Yili Guncel Durum Analizi", x = "Kentlesme (%)", y = "Gelir ($)")

# 6. Model Hata Analizi Grafiği

ggplot(temiz_veri, aes(x = urban_rate, y = artiklar)) +
  geom_point(alpha = 0.4, color = "purple") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
  labs(title = "6. Regresyon Tahmin Hatalari (Artiklar)", x = "Kentlesme (%)", y = "Hata Degeri")