FLS Acitivity Codes
# Loaded data
pwt <- read.csv("D:/RStudio/Iloveecon/pwt110.csv")
CPI23 <- read.csv("D:/RStudio/Iloveecon/CPI.csv", header=FALSE)
# Keep only ISO3 and CPI
cpi_sub <- CPI23[, c(2, 4)]
# Since V2 is ISO3, since V4 = CPI
names(cpi_sub) <- c("ISO3", "CPI2023")
# Filter for 2023 only
pwt_2023 <- subset(pwt, year == 2023)
# Compute GDP per capita using GDP and Population (rgdpe and pop)
pwt_2023$gdp_pc <- (pwt_2023$rgdpe) / (pwt_2023$pop)
# Keep only ISO3 and GDP per capita
pwt_sub <- pwt_2023[, c("countrycode", "gdp_pc")]
names(pwt_sub)[names(pwt_sub) == "countrycode"] <- "ISO3"
# Merge CPI and GDP datasets
CPI_AND_LOGGDP <- merge(cpi_sub, pwt_sub, by = "ISO3", all = FALSE)
# Compute log GDP per capita
CPI_AND_LOGGDP$log_GDPPC <- log(CPI_AND_LOGGDP$gdp_pc)
# Remove any rows with missing or infinite values
CPI_AND_LOGGDP <- CPI_AND_LOGGDP[is.finite(CPI_AND_LOGGDP$log_GDPPC) & !is.na(CPI_AND_LOGGDP$CPI2023), ]
# Check CPI_AND_LOGGDP dataset
head(CPI_AND_LOGGDP)
# Regression
lm(log_GDPPC ~ CPI2023, data = CPI_AND_LOGGDP)
# Plot
plot(CPI_AND_LOGGDP$CPI2023, CPI_AND_LOGGDP$log_GDPPC,
xlab = "Corruption Perception Index 2023",
ylab = "Log GDP per capita 2023",
cex = 1.2,
cex.lab = 1.5)
abline(lm(log_GDPPC ~ CPI2023, data = CPI_AND_LOGGDP), col = "red", lwd = 2)