İ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.
## ── 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.
## 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
## 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
## '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" ...
## '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ı:
## 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ı:
## 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'