EKONOMETRİ 2 VİZE PROJESİ

R NEDİR

“R”, istatistiksel hesaplamalar, veri analizi ve grafik oluşturma için kullanılan bir programlama dilidir. Aynı zamanda bir çevre (environment) ve bir yazılım paketlerinin bir koleksiyonudur. R, özellikle istatistiksel analizler, veri görselleştirme ve veri madenciliği gibi alanlarda popülerdir R’in temel özellikleri şunlardır: Vektör Tabanlı Dil: R, vektörler, matrisler, listeler ve veri çerçeveleri gibi veri yapıları üzerinde etkili bir şekilde çalışabilir. Grafik Oluşturma: R, basit çizimlerden karmaşık grafiklere kadar geniş bir grafik oluşturma kapasitesine sahiptir. ggplot2 gibi popüler paketlerle bu kapasite daha da artırılabilir. Paket Yönetimi: R, birçok istatistiksel ve grafiksel paketle birlikte gelir. CRAN (Comprehensive R Archive Network) gibi birçok paketin indirilebildiği bir depoya sahiptir. Çapraz Platform: R, Windows, macOS ve Linux gibi farklı işletim sistemlerinde çalışabilir Esneklik: R, geniş bir istatistiksel fonksiyon koleksiyonuna ve veri manipülasyon araçlarına sahiptir, bu da kullanıcıların kendi analizlerini özelleştirmelerine olanak tanır. R, özellikle akademik araştırmalarda, veri bilimi projelerinde ve istatistiksel analizlerde yaygın olarak kullanılmaktadır. R’ın açık kaynaklı olması ve büyük bir kullanıcı topluluğuna sahip olması, sürekli olarak yeni fonksiyonlar ve paketlerin geliştirilmesine olanak tanır

paketler

R’da birçok işlevsellik, özellik ve algoritma özel amaçlı paketler aracılığıyla sağlanır. CRAN (Comprehensive R Archive Network) ve diğer kaynaklar üzerinden binlerce paket indirilebilir. İşte R’da popüler bazı paketler ve bu paketlerin sunduğu temel özellikler:

paketler neden önemlidir

R’da paketler, dilin temel işlevselliğini genişletmek ve özelleştirmek için kullanılır. Paketlerin önemi birkaç ana nedenden kaynaklanmaktadır: Fonksiyonel Genişletme: R’ın temel dilinde bulunan fonksiyonların yanı sıra, paketler yeni ve özelleştirilmiş fonksiyonlar ekler. Bu, kullanıcıların daha spesifik ve karmaşık analizler yapabilmesini sağlar. Veri Görselleştirme ve Analiz: ggplot2 gibi paketler sayesinde R, yüksek kaliteli ve özelleştirilebilir grafikler oluşturabilir. Bu grafikler, veri analizinin ve sonuçların görsel olarak temsil edilmesinde kritik öneme sahiptir. Veri Manipülasyonu ve Temizleme: dplyr, tidyr gibi paketler, veri temizleme, dönüştürme ve manipülasyon işlemlerini kolaylaştırır. Bu, veri bilimi ve analiz projelerinde veri hazırlığı aşamasını hızlandırır ve basitleştirir. Özel Amaçlı Analiz ve Modelleme: Paketler, zaman serisi analizi, makine öğrenimi, doğrusal ve doğrusal olmayan modeller gibi özel analizler ve modellemeler için özel fonksiyonlar ve algoritmalar sağlar. Kod Tekrarını Azaltma: Paketler, tekrar tekrar kullanılan kod parçalarını ve işlemleri içerir. Bu, kodun yeniden kullanılabilirliğini artırır ve yazma süresini azaltır. Topluluk Katkısı: Açık kaynaklı bir doğaya sahip olan R paketleri, geniş bir kullanıcı topluluğu tarafından sürekli olarak geliştirilir ve güncellenir. Bu, kullanıcıların en son yöntemleri, teknikleri ve araçları kullanarak projelerini gerçekleştirmesini sağlar. Esneklik ve Özelleştirme: R’ın paket tabanlı doğası, kullanıcıların ihtiyaçlarına ve gereksinimlerine göre dilin işlevselliğini esnek bir şekilde genişletmesini ve özelleştirmesini sağlar. Öğrenme ve Eğitim: Farklı alanlarda ve konularda özel amaçlı paketler, öğrencilerin ve araştırmacıların konuyla ilgili kavramları ve teknikleri daha kolay ve etkili bir şekilde öğrenmelerini sağlar. Sonuç olarak, R paketleri dilin işlevselliğini genişletir, veri analizi ve işleme süreçlerini kolaylaştırır, kullanıcıların özel amaçlı analizler ve modellemeler yapmalarını sağlar ve genel olarak R dilinin gücünü ve esnekliğini artırır. Bu nedenlerle, R paketleri R dilinin ayrılmaz bir parçasıdır ve R’ın popülerliği ve kullanım alanını genişleten önemli bir faktördür.

paketler nasıl erişilir

R’da paketlere erişme ve yükleme yöntemleri:

CRAN (Comprehensive R Archive Network) Üzerinden Erişim: CRAN, R paketlerinin ana dağıtım noktasıdır. R’da bir paketi CRAN üzerinden erişmek ve yüklemek için şu adımları izleyebilirsiniz:

Paket Yükleme: install.packages() fonksiyonunu kullanarak bir paketi yükleyebilirsiniz.

install.packages(“ggplot2”) Paket Kullanımı: Paketi yükledikten sonra library() fonksiyonuyla yüklenen paketi kullanabilirsiniz.

library(ggplot2) GitHub Üzerinden Erişim: Bazı R paketleri, geliştirme aşamasında oldukları için CRAN’da bulunmayabilir. Bu tür paketlere GitHub üzerinden erişebilirsiniz: Paket Yükleme: devtools paketini kullanarak GitHub’dan bir paketi yükleyebilirsiniz.

install.packages(“devtools”) devtools::install_github(“kullanici_adi/paket_adi”) Paket Kullanımı: Paketi yükledikten sonra library() fonksiyonuyla yüklenen paketi kullanabilirsiniz.

library(paket_adi) Diğer Kaynaklar: Bazı özel amaçlı ve geniş kapsamlı R paketleri, CRAN veya GitHub dışında farklı kaynaklarda bulunabilir. Bu tür paketleri yüklemek için genellikle paketin belgelendirmesinde veya web sitesinde belirtilen özel yönergeleri takip etmelisiniz. Notlar: R paketlerini yüklerken internet bağlantınızın olması gerekmektedir. install.packages() fonksiyonunu kullanarak birden fazla paketi aynı anda yükleyebilirsiniz. Örneğin: install.packages(c(“ggplot2”, “dplyr”)) Bu yöntemler sayesinde R paketlerine erişebilir, yükleyebilir ve kullanabilirsiniz. Yükleme işlemi genellikle otomatik olarak yapılır ve gerekli bağımlılıklar da dahil edilir.

lme4

paketi, R’da lineer karışık etkiler modelleri (linear mixed-effects models) için kullanılan popüler bir pakettir. Bu paket, özellikle tekrarlı ölçümler ve grup etkileri içeren veri setleri üzerinde analiz yapmak için kullanılır. lme4 paketi, farklı düzeylerdeki yapılara sahip verileri analiz etmek için esnek ve güçlü bir araçkittir.

lme4 Paketinin Temel İşlevleri: lineer karışık etkiler modelleri (LMM): Tekrarlı ölçümler, grup etkileri veya hem sabit hem de rastgele etkileri içeren modeller için analiz yapabilir.

lineer karışık etkiler modelleri (GLMM): Kategorik yanıtlar için lineer karışık etkiler modelleri uygulayabilir. Örneğin, ikili veya çok sınıflı yanıt değişkenleri için kullanılır.

Doğrusal modeller (LM) ve Doğrusal karışık etkiler modelleri (LMM): Geleneksel lineer modellerin yanı sıra doğrusal karışık etkiler modellerini de destekler.

lme4 Paketini Kullanma Örneği: Paketi yükledikten sonra, lmer() fonksiyonunu kullanarak lineer karışık etkiler modeli oluşturabilirsiniz.

lme4 paketini yükle install.packages(“lme4”) library(lme4)

Örnek veri seti oluşturma data <- data.frame( Y = c(5, 7, 6, 8, 9, 10), # Yanıt değişkeni X1 = c(1, 2, 3, 1, 2, 3), # Bağımsız değişken 1 X2 = c(2, 3, 1, 3, 1, 2), # Bağımsız değişken 2 Group = c(“A”, “A”, “B”, “B”, “C”, “C”) # Grup değişkeni )

Lineer karışık etkiler modeli oluşturma model <- lmer(Y ~ X1 + X2 + (1|Group), data = data)

Model özetini görüntüleme summary(model) Bu örnekte, Y yanıt değişkeni için X1 ve X2 bağımsız değişkenlerini ve Group grup etkisini içeren bir lineer karışık etkiler modeli oluşturduk.

lme4 paketi, karmaşık veri yapıları ve grup yapısı içeren veriler üzerinde analiz yaparken kullanıcıya esneklik ve güç sağlar. Ancak, bu tür modellerin yorumlanması ve doğru bir şekilde uygulanması bazı istatistiksel bilgi gerektirir. Bu nedenle, lme4 paketini kullanmadan önce lineer karışık etkiler modelleri hakkında temel bir anlayışa sahip olmanız önerilir.

rmarkdown, R’da dinamik belgeler, raporlar, sunumlar ve web sayfaları oluşturmak için kullanılan bir pakettir. R Markdown, R kodunu, metni ve grafikleri bir araya getirerek interaktif ve yeniden üretilebilir dokümanlar oluşturmanızı sağlar. R Markdown, hem araştırma projeleri hem de veri analizi sonuçlarını paylaşmak için oldukça kullanışlıdır.

rmarkdown Paketinin Temel Özellikleri: Dinamik Rapor Oluşturma: R Markdown, R kodunu doğrudan belgenize ekleyerek dinamik raporlar oluşturmanıza olanak tanır. Bu sayede analiz sonuçlarınızı anında belgenize entegre edebilirsiniz.

Çeşitli Çıkış Biçimleri: rmarkdown ile HTML, PDF, Word, PowerPoint ve daha birçok format için çıktı alabilirsiniz. Bu, oluşturduğunuz dokümanın yaygın olarak kullanılan birçok platformda görüntülenmesini sağlar.

Kod ve Çıktı Entegrasyonu: R kodu ve çıktıları otomatik olarak dokümana eklenir. Bu, analiz sürecinizi ve sonuçlarınızı açıkça gösterir ve yeniden üretilebilirliği artırır.

Şablonlar ve Özel Temalar: Önceden tanımlanmış şablonlar kullanarak veya özel temalar oluşturarak belgelerinizin görünümünü özelleştirebilirsiniz.

rmarkdown Kullanma Örneği: R Markdown Dosyası Oluşturma: Yeni bir R Markdown dosyası oluşturmak için File > New File > R Markdown… seçeneklerini takip edebilirsiniz.

Kod ve Metin Yazma: R Markdown dosyası içerisinde metin yazabilir ve R kodu ekleyebilirsiniz. R kodunu belirtmek için üç ters tırnak () işaretini ve r kodunu ({r}) kullanabilirsiniz.

markdown

“R Markdown Örneği”

Başlık 2

Bu bir R Markdown örneğidir. Aşağıda bir R kodu örneği bulunmaktadır. summary(mtcars) markdown Dokümanın Derlenmesi**: R Markdown dosyasını derlemek için Knit butonuna tıklayabilirsiniz. Bu işlem, R kodunu çalıştırır, çıktıları dokümana ekler ve belgeyi istediğiniz çıktı biçimine dönüştürür.

Özet: rmarkdown, R kodu, metin ve grafikleri bir araya getirerek dinamik ve interaktif dokümanlar oluşturmanızı sağlar. R Markdown’ın bu esnek ve güçlü özellikleri sayesinde, veri analizi sonuçlarınızı, araştırma bulgularınızı veya diğer R projelerinizi etkili bir şekilde paylaşabilir ve sunabilirsiniz.

stringr,

R’da dize işleme (string manipulation) için kullanılan bir pakettir. Bu paket, dize (string) manipülasyon işlemleri yapmayı kolaylaştıran bir dizi fonksiyon içerir. stringr paketi, R’ın temel dize işleme fonksiyonlarına ek olarak daha tutarlı ve kullanıcı dostu bir arayüz sunar.

stringr Paketinin Temel Fonksiyonları: Dize Araştırma ve Değiştirme: Belirli bir dize içinde alt dize arama ve değiştirme işlemleri için kullanılır.

“string” kelimesini “dize” olarak değiştirme new_text <- str_replace(text, “string”, “dize”) print(new_text) Dize Bölme ve Birleştirme: Bir dizeyi belirli bir ayıraçla bölme veya ayrı dize parçalarını birleştirme işlemleri için kullanılır.

Virgül ile ayrılmış dizeyi bölme parts <- str_split(text, “,”) print(parts)

Dize parçalarını birleştirme new_text <- str_c(parts[[1]], collapse = “;”) print(new_text) Dize Başlangıç ve Bitiş Kontrolü: Bir dizenin belirli bir alt dizeyle başlayıp başlamadığını veya belirli bir alt dizeyle bittiğini kontrol etme işlemleri için kullanılır.

e text <- “R’da string işlemleri öğreniyoruz.”

Dizenin “R” ile başlayıp başlamadığını kontrol etme starts_with <- str_starts(text, “R”) print(starts_with)

Dizenin “uz.” ile bittiğini kontrol etme ends_with <- str_ends(text, “uz.”) print(ends_with) Dize Büyüklük-Küçüklük Değiştirme: Tüm dizeyi büyük harflere veya küçük harflere dönüştürme işlemleri için kullanılır.

text <- “R’da string işlemleri öğreniyoruz.”

Dizeyi büyük harflere dönüştürme upper_text <- str_to_upper(text) print(upper_text)

Dizeyi küçük harflere dönüştürme lower_text <- str_to_lower(text) print(lower_text) Özet: stringr paketi, R’da dize işleme işlemlerini yapmayı kolaylaştırır ve daha tutarlı bir kullanıcı deneyimi sunar. Bu paket, dize manipülasyonları için bir dizi işlevsellik sağlar ve dize işleme işlemlerini daha hızlı ve etkili bir şekilde gerçekleştirmenizi sağlar

tidyverse

, R için tasarlanmış bir koleksiyon (suite) paketlerdir ve veri bilimi ve veri analizi için kullanılan bir dizi araç ve paketi içerir. tidyverse, R’ın temel veri yapıları ve işlemleri üzerine inşa edilmiştir ve veri işleme, görselleştirme ve modelleme işlemlerini daha tutarlı ve etkili bir şekilde yapmayı amaçlar.

tidyverse Koleksiyonuna Dahil Olan Temel Paketler: ggplot2: Veri görselleştirme için kullanılan kapsamlı bir pakettir. Declarative grafik oluşturma dilini kullanarak yüksek kaliteli grafikler oluşturmanıza olanak tanır.

dplyr: Veri manipülasyonu için kullanılan bir pakettir. Veri çerçeveleri üzerinde filtreleme, toplama, sıralama ve diğer işlemleri kolaylaştırır.

tidyr: Veri temizleme ve dönüştürme için kullanılan bir pakettir. Geniş formatlı veriyi uzun formatlı veriye veya tersine dönüştürmek için kullanılır.

readr: Veri okuma işlemleri için kullanılan bir pakettir. CSV, TSV ve diğer veri formatlarını hızlı ve etkili bir şekilde okumanızı sağlar.

purrr: Fonksiyonel programlama için kullanılan bir pakettir. Vektörler, listeler ve veri çerçeveleri üzerinde döngüleri ve işlevleri kolaylaştırır.

tibble: Modern bir veri çerçevesi sınıfıdır. data.frame’e benzer, ancak daha okunabilir ve kullanıcı dostudur.

stringr: Dize işleme için kullanılan bir pakettir. Dize manipülasyonları yapmayı kolaylaştırır.

forcats: Kategorik değişkenleri (faktörler) işlemek için kullanılan bir pakettir. Faktör seviyelerini düzenleme, sıralama ve diğer işlemleri yapmayı kolaylaştırır.

tidyverse Kullanma Örneği: tidyverse paketini yüklemek ve kullanmak için şu adımları takip edebilirsiniz:

tidyverse paketini yükle install.packages(“tidyverse”)

tidyverse paketini kullan library(tidyverse)

Örnek veri seti oluşturma data <- tibble( name = c(“Alice”, “Bob”, “Charlie”), age = c(25, 30, 35), city = c(“New York”, “Los Angeles”, “Chicago”) )

Veri setini dplyr paketiyle filtreleme filtered_data <- data %>% filter(age > 28)

Filtrelenmiş veri setini gösterme print(filtered_data) Özet: tidyverse, R’da veri bilimi ve veri analizi için kullanılan kapsamlı bir koleksiyon pakettir. tidyverse’in içerdiği araçlar ve paketler, veri işleme, görselleştirme ve modelleme işlemlerini daha tutarlı, etkili ve kullanıcı dostu bir şekilde yapmanıza olanak tanır. Bu nedenle, veri bilimi ve veri analizi projelerinde tidyverse sıkça tercih edilen bir araçtır.

purrr, tidyverse koleksiyonunun bir parçası olarak R’da fonksiyonel programlama için kullanılan bir pakettir. purrr, vektörler, listeler ve veri çerçeveleri üzerinde döngüleri ve işlevleri kolaylaştıran ve esnek bir yapı sağlayan bir dizi fonksiyon içerir. Bu paket, veri manipülasyonu ve analizi sırasında sıkça kullanılan tekrarlayan işlemleri daha etkili bir şekilde yapmayı sağlar.

purrr

Paketinde Bulunan Temel Fonksiyonlar: map(): Bir vektör, liste veya veri çerçevesi üzerinde belirtilen işlevi uygular ve sonuçları liste olarak döndürür.

library(purrr)

Örnek bir vektör numbers <- c(1, 2, 3, 4, 5)

Karekökünü al sqrt_numbers <- map(numbers, sqrt) print(sqrt_numbers) map2(): İki vektör veya liste üzerinde belirtilen işlevi uygular.

İki örnek vektör names <- c(“Alice”, “Bob”, “Charlie”) ages <- c(25, 30, 35)

İki vektörü birleştir combined <- map2(names, ages, ~paste(.x, “is”, .y, “years old”)) print(combined) map_df() ve map_dfr(): Veri çerçeveleri üzerinde belirtilen işlevi uygular ve sonuçları bir veri çerçevesi olarak döndürür.

Örnek bir veri çerçevesi data <- tibble( name = c(“Alice”, “Bob”, “Charlie”), age = c(25, 30, 35) )

Yaşları 5 artır new_data <- map_df(data$age, ~. + 5) print(new_data) other fonksiyonlar: map_lgl(), map_int(), map_dbl(), map_chr() gibi diğer purrr fonksiyonları, belirli türlerdeki (mantıksal, tamsayı, çift hassas kayan noktalı sayı, karakter) sonuçları döndürmek için kullanılır.

Örnek bir vektör numbers <- c(1, 2, 3, 4, 5)

Tamsayıları karakterlere dönüştür numbers_as_chars <- map_chr(numbers, as.character) print(numbers_as_chars) Özet: purrr, R’da fonksiyonel programlama yaklaşımını benimseyerek veri manipülasyonu ve analizi için esnek ve güçlü bir araç seti sunar. purrr fonksiyonları, tekrarlayan işlemleri vektörler, listeler ve veri çerçeveleri üzerinde etkili bir şekilde gerçekleştirmenizi sağlar. Bu nedenle, veri bilimi ve veri analizi projelerinde tidyverse ile birlikte sıkça kullanılan bir pakettir.

https://data.worldbank.org/indicator/AG.LND.FRST.ZS?view=chart&locations=AU-BR

library(WDI)
df <- WDI(country = "all", indicator = c("AG.LND.FRST.ZS", "SP.POP.TOTL"))
str(df)
## 'data.frame':    17024 obs. of  6 variables:
##  $ country       : chr  "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
##  $ iso2c         : chr  "AF" "AF" "AF" "AF" ...
##  $ iso3c         : chr  "AFG" "AFG" "AFG" "AFG" ...
##  $ year          : int  1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ...
##  $ AG.LND.FRST.ZS: num  NA NA NA NA NA NA NA NA NA NA ...
##   ..- attr(*, "label")= chr "Forest area (% of land area)"
##  $ SP.POP.TOTL   : num  8622466 8790140 8969047 9157465 9355514 ...
##   ..- attr(*, "label")= chr "Population, total"
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(explore)
df %>% describe_all()
## # A tibble: 6 × 8
##   variable       type     na na_pct unique   min        mean          max
##   <chr>          <chr> <int>  <dbl>  <int> <dbl>       <dbl>        <dbl>
## 1 country        chr       0    0      266    NA        NA           NA  
## 2 iso2c          chr       0    0      266    NA        NA           NA  
## 3 iso3c          chr       0    0      262    NA        NA           NA  
## 4 year           int       0    0       64  1960      1992.        2023  
## 5 AG.LND.FRST.ZS dbl    8848   52     6657     0        32.4         98.6
## 6 SP.POP.TOTL    dbl     359    2.1  16460  2646 215973749.  7950946801
countries <- unique(df$country)
knitr::kable(countries)
x
Afghanistan
Africa Eastern and Southern
Africa Western and Central
Albania
Algeria
American Samoa
Andorra
Angola
Antigua and Barbuda
Arab World
Argentina
Armenia
Aruba
Australia
Austria
Azerbaijan
Bahamas, The
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Brazil
British Virgin Islands
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cabo Verde
Cambodia
Cameroon
Canada
Caribbean small states
Cayman Islands
Central African Republic
Central Europe and the Baltics
Chad
Channel Islands
Chile
China
Colombia
Comoros
Congo, Dem. Rep.
Congo, Rep.
Costa Rica
Cote d’Ivoire
Croatia
Cuba
Curacao
Cyprus
Czechia
Denmark
Djibouti
Dominica
Dominican Republic
Early-demographic dividend
East Asia & Pacific
East Asia & Pacific (excluding high income)
East Asia & Pacific (IDA & IBRD countries)
Ecuador
Egypt, Arab Rep.
El Salvador
Equatorial Guinea
Eritrea
Estonia
Eswatini
Ethiopia
Euro area
Europe & Central Asia
Europe & Central Asia (excluding high income)
Europe & Central Asia (IDA & IBRD countries)
European Union
Faroe Islands
Fiji
Finland
Fragile and conflict affected situations
France
French Polynesia
Gabon
Gambia, The
Georgia
Germany
Ghana
Gibraltar
Greece
Greenland
Grenada
Guam
Guatemala
Guinea
Guinea-Bissau
Guyana
Haiti
Heavily indebted poor countries (HIPC)
High income
Honduras
Hong Kong SAR, China
Hungary
IBRD only
Iceland
IDA & IBRD total
IDA blend
IDA only
IDA total
India
Indonesia
Iran, Islamic Rep.
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Dem. People’s Rep.
Korea, Rep.
Kosovo
Kuwait
Kyrgyz Republic
Lao PDR
Late-demographic dividend
Latin America & Caribbean
Latin America & Caribbean (excluding high income)
Latin America & the Caribbean (IDA & IBRD countries)
Latvia
Least developed countries: UN classification
Lebanon
Lesotho
Liberia
Libya
Liechtenstein
Lithuania
Low & middle income
Low income
Lower middle income
Luxembourg
Macao SAR, China
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Mauritania
Mauritius
Mexico
Micronesia, Fed. Sts.
Middle East & North Africa
Middle East & North Africa (excluding high income)
Middle East & North Africa (IDA & IBRD countries)
Middle income
Moldova
Monaco
Mongolia
Montenegro
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
North America
North Macedonia
Northern Mariana Islands
Norway
Not classified
OECD members
Oman
Other small states
Pacific island small states
Pakistan
Palau
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Poland
Portugal
Post-demographic dividend
Pre-demographic dividend
Puerto Rico
Qatar
Romania
Russian Federation
Rwanda
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia
Seychelles
Sierra Leone
Singapore
Sint Maarten (Dutch part)
Slovak Republic
Slovenia
Small states
Solomon Islands
Somalia
South Africa
South Asia
South Asia (IDA & IBRD)
South Sudan
Spain
Sri Lanka
St. Kitts and Nevis
St. Lucia
St. Martin (French part)
St. Vincent and the Grenadines
Sub-Saharan Africa
Sub-Saharan Africa (excluding high income)
Sub-Saharan Africa (IDA & IBRD countries)
Sudan
Suriname
Sweden
Switzerland
Syrian Arab Republic
Tajikistan
Tanzania
Thailand
Timor-Leste
Togo
Tonga
Trinidad and Tobago
Tunisia
Turkiye
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United Kingdom
United States
Upper middle income
Uruguay
Uzbekistan
Vanuatu
Venezuela, RB
Viet Nam
Virgin Islands (U.S.)
West Bank and Gaza
World
Yemen, Rep.
Zambia
Zimbabwe
WDI_extra <- as.data.frame(WDI_data$country)

df <- left_join(df, WDI_extra)
## Joining with `by = join_by(country, iso2c, iso3c)`
df <- df %>%
  filter(region != "Aggregates")
df %>% describe_all()
## # A tibble: 12 × 8
##    variable       type     na na_pct unique   min       mean          max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl>      <dbl>        <dbl>
##  1 country        chr       0    0      215    NA       NA           NA  
##  2 iso2c          chr       0    0      215    NA       NA           NA  
##  3 iso3c          chr       0    0      215    NA       NA           NA  
##  4 year           int       0    0       64  1960     1992.        2023  
##  5 AG.LND.FRST.ZS dbl    7161   52     5143     0       32.6         98.6
##  6 SP.POP.TOTL    dbl     245    1.8  13467  2646 24759535.  1417173173  
##  7 region         chr       0    0        7    NA       NA           NA  
##  8 capital        chr       0    0      210    NA       NA           NA  
##  9 longitude      chr       0    0      210    NA       NA           NA  
## 10 latitude       chr       0    0      210    NA       NA           NA  
## 11 income         chr       0    0        5    NA       NA           NA  
## 12 lending        chr       0    0        4    NA       NA           NA
missing_data_count <- df %>%
  group_by(country) %>%
  summarize(missing_count = sum(is.na(SP.POP.TOTL)), .groups = 'drop')

# Identify countries with all missing data or more than 20 missing points
countries_with_all_missing <- missing_data_count %>%
  filter(missing_count == 66)  # Change 66 to the total number of observations per country
countries_with_more_than_20_missing <- missing_data_count %>%
  filter(missing_count > 5)  # Change 20 to your desired threshold

# View countries with all missing data or more than 20 missing points
print(countries_with_all_missing)
## # A tibble: 0 × 2
## # ℹ 2 variables: country <chr>, missing_count <int>
print(countries_with_more_than_20_missing)
## # A tibble: 1 × 2
##   country            missing_count
##   <chr>                      <int>
## 1 West Bank and Gaza            31
## # A tibble: 1 × 2
##   country            missing_count
##   <chr>                      <int>
## 1 West Bank and Gaza            30
df <- df %>%
  filter(!(country %in% c("West Bank and Gaza")))
df %>% describe_all()
## # A tibble: 12 × 8
##    variable       type     na na_pct unique   min       mean          max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl>      <dbl>        <dbl>
##  1 country        chr       0    0      214    NA       NA           NA  
##  2 iso2c          chr       0    0      214    NA       NA           NA  
##  3 iso3c          chr       0    0      214    NA       NA           NA  
##  4 year           int       0    0       64  1960     1992.        2023  
##  5 AG.LND.FRST.ZS dbl    7129   52.1   5126     0       32.7         98.6
##  6 SP.POP.TOTL    dbl     214    1.6  13434  2646 24811673.  1417173173  
##  7 region         chr       0    0        7    NA       NA           NA  
##  8 capital        chr       0    0      210    NA       NA           NA  
##  9 longitude      chr       0    0      210    NA       NA           NA  
## 10 latitude       chr       0    0      210    NA       NA           NA  
## 11 income         chr       0    0        5    NA       NA           NA  
## 12 lending        chr       0    0        4    NA       NA           NA
dff <- df %>%
  filter(year>=2003)
missing_data_count <- dff %>%
  group_by(country) %>%
  summarize(missing_count = sum(is.na(AG.LND.FRST.ZS)), .groups = 'drop')
df %>% describe_all()
## # A tibble: 12 × 8
##    variable       type     na na_pct unique   min       mean          max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl>      <dbl>        <dbl>
##  1 country        chr       0    0      214    NA       NA           NA  
##  2 iso2c          chr       0    0      214    NA       NA           NA  
##  3 iso3c          chr       0    0      214    NA       NA           NA  
##  4 year           int       0    0       64  1960     1992.        2023  
##  5 AG.LND.FRST.ZS dbl    7129   52.1   5126     0       32.7         98.6
##  6 SP.POP.TOTL    dbl     214    1.6  13434  2646 24811673.  1417173173  
##  7 region         chr       0    0        7    NA       NA           NA  
##  8 capital        chr       0    0      210    NA       NA           NA  
##  9 longitude      chr       0    0      210    NA       NA           NA  
## 10 latitude       chr       0    0      210    NA       NA           NA  
## 11 income         chr       0    0        5    NA       NA           NA  
## 12 lending        chr       0    0        4    NA       NA           NA
countries_to_keep <- missing_data_count %>%
  filter(missing_count == 0) %>%
  pull(country)
dff <- dff %>%
  filter(country %in% countries_to_keep)
df %>% describe_all()
## # A tibble: 12 × 8
##    variable       type     na na_pct unique   min       mean          max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl>      <dbl>        <dbl>
##  1 country        chr       0    0      214    NA       NA           NA  
##  2 iso2c          chr       0    0      214    NA       NA           NA  
##  3 iso3c          chr       0    0      214    NA       NA           NA  
##  4 year           int       0    0       64  1960     1992.        2023  
##  5 AG.LND.FRST.ZS dbl    7129   52.1   5126     0       32.7         98.6
##  6 SP.POP.TOTL    dbl     214    1.6  13434  2646 24811673.  1417173173  
##  7 region         chr       0    0        7    NA       NA           NA  
##  8 capital        chr       0    0      210    NA       NA           NA  
##  9 longitude      chr       0    0      210    NA       NA           NA  
## 10 latitude       chr       0    0      210    NA       NA           NA  
## 11 income         chr       0    0        5    NA       NA           NA  
## 12 lending        chr       0    0        4    NA       NA           NA
# Calculate ratios for each country
df_ratios <- dff %>%
  group_by(year) %>%
  summarise(
    world_gdp = sum(AG.LND.FRST.ZS),
    world_population = sum(SP.POP.TOTL),
    world_gdp_perp = world_gdp/world_population
  ) 
# Plotting total production per person after 2000
library(ggplot2)

ggplot(df_ratios, aes(x = year, y = world_gdp_perp)) +
  geom_line() +
  labs(
    title = "Total Production per Person after 2000",
    x = "Year",
    y = "Total Production per Person"
  )

dff <- left_join(dff, df_ratios, by='year')
dff <- dff %>%
  mutate(
    country_ratio = AG.LND.FRST.ZS / world_gdp * 100,
    population_ratio = SP.POP.TOTL / world_population * 100,
    verim = country_ratio / population_ratio
  )
dff <- dff %>%
  arrange(country, year) %>%
  group_by(country) %>%
  mutate(cumulative_change = (verim / first(verim) - 1) * 100)
df_TR <- dff %>% filter(country=="brazil")
ggplot(df_TR, aes(x = year, y = verim)) +
  geom_line() +
  labs(
    title = "verim in brazile after 2000",
    x = "Year",
    y = "Verim"
  )

df_LV <- dff %>% filter(country=="australia")
df %>% filter(country %in% c("brazil", "australia")) %>%
ggplot(aes(x = year,
           y = SP.POP.TOTL,
           col = country)) +
  geom_line()

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.5
## ✔ lubridate 1.9.3     ✔ stringr   1.5.1
## ✔ purrr     1.0.2     ✔ tibble    3.2.1
## ── 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