İklim Değişikliği ve Tarım Üzerindeki Etkileri

Giriş

Bu projede, İklim Değişikliği’nin tarımsal verimlilik üzerindeki etkilerini araştıracağız. Çeşitli veri kaynaklarından, özellikle Dünya Bankası verilerinden yararlanacağız. İklim değişikliği, küresel olarak tarımsal uygulamalara önemli zorluklar getirmekte ve ürün verimliliğini, gıda güvenliğini ve çiftçi yaşamlarını etkilemektedir. Bu analizle, değişen iklim koşullarının (sıcaklık, yağış ve aşırı hava olayları gibi) tarımsal verimlilik üzerindeki etkilerini anlamayı amaçlıyoruz.

Amaçlar Veri Toplama: Dünya Bankası’ndan iklim verileri ve tarımsal verimlilik verileri almak. Veri Temizleme: Veri setlerini eksik değerleri gidererek, formatları standartlaştırarak ve gerekli durumlarda birleştirerek hazırlamak. Keşifsel Veri Analizi (EDA): İklim değişkenleri ile tarımsal verimlilik arasındaki ilişkileri görselleştirmek, trendleri ve kalıpları incelemek. Korelasyon Analizi: İklim faktörleri ile ürün verimleri arasındaki ilişkileri değerlendirerek önemli ilişkileri tespit etmek. Tahmin Modeli Geliştirme: İklim değişkenlerine dayalı olarak ürün verimlerini tahmin etmek için regresyon modelleri oluşturmak. Sonuç: Bulguları özetleyerek tarımsal uygulamalar ve politika yapımı için etkilerini tartışmak.

Projede, Dünya Bankası’nın WDI API’sini kullanarak verileri çekeceğiz. Kullanacağımız göstergelerden biri, CC.CO2.EMSE.BF, belirli bir CO2 emisyon türünü ifade eder. Tarımsal verimlilik göstergesi ise AG.YLD.CREL.KG olacak. Bu verilerle çalışarak, analizimizi gerçekleştireceğiz.

Kod Açıklaması:

İlk olarak, gerekli kütüphaneleri yüklüyoruz: tidyverse, lubridate, WDI, ve ggplot2. Ardından, WDI paketini kullanarak, Dünya Bankası’ndan CO2 emisyon verilerini (CC.CO2.EMSE.BF göstergesi ile) ve tarımsal verimlilik verilerini (AG.YLD.CREL.KG) çekiyoruz.

# Gerekli kütüphaneleri yükleyelim
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── 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
library(lubridate)
library(WDI)  # Dünya Bankası verilerini çekmek için
library(ggplot2)

# CO2 emisyonları için yeni göstergeyi kullanarak veriyi çekelim
climate_data <- WDI(country = "all", indicator = "CC.CO2.EMSE.BF", start = 2000, end = 2020)

# Tarımsal verimlilik verilerini çekelim
agriculture_data <- WDI(country = "all", indicator = "AG.YLD.CREL.KG", start = 2000, end = 2020)

Verileri çektiğimizde, analizimize başlamadan önce ne tür verilere sahip olduğumuzu gözlemlemek çok önemlidir. Bunun için, veri setlerimizin ilk birkaç satırını görüntüleyip yapısına bir göz atacağız. Bu adım, verilerin neye benzediğini anlamamıza ve herhangi bir veri temizleme veya dönüştürme işlemi gerekip gerekmediğine karar vermemize yardımcı olur.

İlk olarak, climate_data (CO2 emisyon verileri) ve agriculture_data (tarımsal verimlilik verileri) veri setlerinin yapılarını ve ilk birkaç satırını inceleyelim.

# CO2 emisyon verisinin ilk birkaç satırına bakalım
head(climate_data)
##        country iso2c iso3c year CC.CO2.EMSE.BF
## 1 Cook Islands   COK       2020             NA
## 2 Cook Islands   COK       2019             NA
## 3 Cook Islands   COK       2018           0.04
## 4 Cook Islands   COK       2017           0.04
## 5 Cook Islands   COK       2016           0.04
## 6 Cook Islands   COK       2015           0.03
# Tarımsal verimlilik verisinin ilk birkaç satırına bakalım
head(agriculture_data)
##                       country iso2c iso3c year AG.YLD.CREL.KG
## 1 Africa Eastern and Southern    ZH   AFE 2020       1864.028
## 2 Africa Eastern and Southern    ZH   AFE 2019       1727.182
## 3 Africa Eastern and Southern    ZH   AFE 2018       1737.643
## 4 Africa Eastern and Southern    ZH   AFE 2017       1771.176
## 5 Africa Eastern and Southern    ZH   AFE 2016       1510.043
## 6 Africa Eastern and Southern    ZH   AFE 2015       1639.944
# Veri setlerinin yapısına göz atalım
str(climate_data)
## 'data.frame':    4620 obs. of  5 variables:
##  $ country       : chr  "Cook Islands" "Cook Islands" "Cook Islands" "Cook Islands" ...
##  $ iso2c         : chr  "COK" "COK" "COK" "COK" ...
##  $ iso3c         : chr  "" "" "" "" ...
##  $ year          : int  2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 ...
##  $ CC.CO2.EMSE.BF: num  NA NA 0.04 0.04 0.04 0.03 0.03 0.03 0.03 0.03 ...
##   ..- attr(*, "label")= chr "CO2 emissions by sector (Mt CO2 eq) - Bunker Fuels"
##  - attr(*, "lastupdated")= chr "2022-10-07"
##  - attr(*, "label")= chr [1:4620] "CO2 emissions by sector (Mt CO2 eq) - Bunker Fuels" "CO2 emissions by sector (Mt CO2 eq) - Bunker Fuels" "CO2 emissions by sector (Mt CO2 eq) - Bunker Fuels" "CO2 emissions by sector (Mt CO2 eq) - Bunker Fuels" ...
str(agriculture_data)
## 'data.frame':    5586 obs. of  5 variables:
##  $ country       : chr  "Africa Eastern and Southern" "Africa Eastern and Southern" "Africa Eastern and Southern" "Africa Eastern and Southern" ...
##  $ iso2c         : chr  "ZH" "ZH" "ZH" "ZH" ...
##  $ iso3c         : chr  "AFE" "AFE" "AFE" "AFE" ...
##  $ year          : int  2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 ...
##  $ AG.YLD.CREL.KG: num  1864 1727 1738 1771 1510 ...
##   ..- attr(*, "label")= chr "Cereal yield (kg per hectare)"
##  - attr(*, "lastupdated")= chr "2024-10-24"
##  - attr(*, "label")= chr [1:5586] "Cereal yield (kg per hectare)" "Cereal yield (kg per hectare)" "Cereal yield (kg per hectare)" "Cereal yield (kg per hectare)" ...

Bu noktada, eksik değerleri temizleyip ardından CO2 emisyonları ve tarımsal verimlilik verilerini birleştiriyoruz. Verileri birleştirerek, hem CO2 emisyonları hem de tarımsal verimlilik değerlerine sahip tek bir veri seti oluşturuyoruz. Bu birleştirme, ortak değişkenler olan ülke ve yıl temelinde yapılır. Aşağıdaki adımlarla, veri temizleme ve birleştirme işlemini gerçekleştiriyoruz:

Kod Açıklaması: Eksik değerleri kontrol etme: climate_data ve agriculture_data veri setlerindeki eksik değerleri kontrol etmek için colSums(is.na()) fonksiyonunu kullanıyoruz. Eksik değerleri temizleme: na.omit() fonksiyonunu kullanarak, eksik değer içeren satırları temizliyoruz. Verilerin birleştirilmesi: Temizlenmiş veri setlerini, hem ülke (country) hem de yıl (year) değişkenlerine göre birleştiriyoruz. Kod:

# İklim verileri için eksik değerleri kontrol edelim
cat("İklim verilerindeki eksik değer sayısı:\n")
## İklim verilerindeki eksik değer sayısı:
colSums(is.na(climate_data))
##        country          iso2c          iso3c           year CC.CO2.EMSE.BF 
##              0              0              0              0           1027
# Tarım verileri için eksik değerleri kontrol edelim
cat("\nTarım verilerindeki eksik değer sayısı:\n")
## 
## Tarım verilerindeki eksik değer sayısı:
colSums(is.na(agriculture_data))
##        country          iso2c          iso3c           year AG.YLD.CREL.KG 
##              0              0              0              0            841
# Eksik değerleri çıkartalım
clean_climate_data <- na.omit(climate_data)
clean_agriculture_data <- na.omit(agriculture_data)

# Verileri birleştirelim (örneğin, tarih ve ülke temelinde)
combined_data <- merge(clean_climate_data, clean_agriculture_data, by = c("country", "year"))

Bu görselleştirme, CO2 emisyonları ile tarımsal verim arasındaki ilişkiyi göstermek için kullanılır. CO2 emisyonlarının artışının tarım verimi üzerinde bir etkisi olup olmadığını incelemek amacıyla iki değişkeni görsel olarak bir araya getiriyoruz.

Açıklama:

geom_point() fonksiyonu, veri noktalarını bir scatter plot (nokta grafiği) olarak çizer. geom_smooth(method = “lm”, se = FALSE) fonksiyonu, doğrusal regresyon çizgisini ekler ve eğilimi gösterir. Grafik başlığı ve eksen etiketleri, verinin içeriğini açıklamak amacıyla eklenir. theme_minimal() fonksiyonu ise grafiğe sade bir tema uygular. Bu grafik, CO2 emisyonlarının artmasıyla tarım veriminin nasıl değiştiğini görselleştirmek için faydalı olacaktır.

# CO2 Emisyonlarının histogramını görselleştirelim
ggplot(combined_data, aes(x = CC.CO2.EMSE.BF)) +
  geom_histogram(binwidth = 50, fill = "lightblue", color = "black") +
  labs(title = "CO2 Emisyonlarının Dağılımı",
       x = "CO2 Emisyonları (kiloton)",
       y = "Frekans") +
  theme_minimal()

Şimdi, CO2 emisyonları ile tarım verimi arasındaki ilişkiyi incelemek için doğrusal regresyon (linear regression) modelini kurabiliriz. Regresyon analizi, bağımsız değişken (CO2 emisyonları) ile bağımlı değişken (tarım verimi) arasındaki ilişkiyi sayısal olarak değerlendirmek için kullanılır.

Açıklama: Bu adımda:

lm() fonksiyonu ile basit doğrusal regresyon modeli kuracağız. Bağımsız değişken olarak CO2 emisyonları (CC.CO2.EMSE.BF), bağımlı değişken olarak tarım verimi (AG.YLD.CREL.KG) kullanacağız. Modeli özetleyerek, modelin katsayılarını, R-kare değerini ve p-değerlerini inceleyeceğiz.

# CO2 emisyonları ve tarım verimi arasındaki doğrusal regresyon modelini oluşturalım
regression_model <- lm(AG.YLD.CREL.KG ~ CC.CO2.EMSE.BF, data = combined_data)

# Modelin özetini görüntüleyelim
summary(regression_model)
## 
## Call:
## lm(formula = AG.YLD.CREL.KG ~ CC.CO2.EMSE.BF, data = combined_data)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
##  -4464  -1661   -601    863  33045 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    2950.834     52.263   56.46   <2e-16 ***
## CC.CO2.EMSE.BF   53.300      3.657   14.58   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2814 on 3245 degrees of freedom
## Multiple R-squared:  0.06145,    Adjusted R-squared:  0.06116 
## F-statistic: 212.5 on 1 and 3245 DF,  p-value: < 2.2e-16
# Regresyon modelini veriyle birlikte görselleştirelim (güven aralıklarıyla)
ggplot(combined_data, aes(x = CC.CO2.EMSE.BF, y = AG.YLD.CREL.KG)) +
  geom_point() +  # Veri noktaları
  geom_smooth(method = "lm", se = TRUE, color = "blue") +  # Regresyon çizgisi ve güven aralığı
  labs(title = "CO2 Emisyonları ile Tarım Verimi Arasındaki Doğrusal Regresyon Modeli",
       x = "CO2 Emisyonları (kiloton)",
       y = "Tarım Verimi (ton/hektar)") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'