Task 1

Provide code and answer.

Prompt and question: calculate the average for the variable ‘happy’ for the country of Norway. On average, based on the ESS data, who reports higher levels of happiness: Norway or Belgium?

Note: we already did it for Belgium. You just need to compare to Norway’s average, making sure to provide the code for both.

options(repos = c(CRAN = "https://cloud.r-project.org"))
install.packages(c("tidyverse", "fst", "modelsummary"))
## Installing packages into 'C:/Users/eesha/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'tidyverse' successfully unpacked and MD5 sums checked
## package 'fst' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'fst'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\eesha\AppData\Local\R\win-library\4.3\00LOCK\fst\libs\x64\fst.dll to
## C:\Users\eesha\AppData\Local\R\win-library\4.3\fst\libs\x64\fst.dll: Permission
## denied
## Warning: restored 'fst'
## package 'modelsummary' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\eesha\AppData\Local\Temp\Rtmp2XOyPl\downloaded_packages
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.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ 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("fst")
library("modelsummary")
mydata <- read_fst("C:\\Users\\eesha\\Documents\\All-ESS-Data.fst")
unique("ess$BE")
## [1] "ess$BE"
belgium_happy <- filter(mydata, cntry == "BE") %>% 
  select(happy)
belgium_happy$y <- belgium_happy$happy
belgium_happy$y[belgium_happy$y %in% 77:99] <- NA
table(belgium_happy$y)
## 
##    0    1    2    3    4    5    6    7    8    9   10 
##   50   27  104  194  234  830  999 3503 6521 3402 1565
mean_y <- mean(belgium_happy$y, na.rm = TRUE)
cat("Mean of 'y' is:", mean_y, "\n")
## Mean of 'y' is: 7.737334
unique("ess$NO")
## [1] "ess$NO"
norway_happy <- filter(mydata, cntry == "NO") 
norway_happy$y <- norway_happy$happy
norway_happy$y[norway_happy$y %in% 77:99] <- NA
table(norway_happy$y)
## 
##    0    1    2    3    4    5    6    7    8    9   10 
##   15   29   59  163  238  730  817 2617 5235 3796 2344
mean_y <- mean(norway_happy$y, na.rm = TRUE)
cat("Mean of 'y' is:", mean_y, "\n")
## Mean of 'y' is: 7.975005

Overall Norway is happier by 0.24.

Task 2

Provide code and answer.

Prompt and question: what is the most common category selected, for Irish respondents, for frequency of binge drinking? The variable of interest is: alcbnge.

More info here: https://ess-search.nsd.no/en/variable/0c65116e-7481-4ca6-b1d9-f237db99a694.

Hint: need to convert numeric value entries to categories as specified in the variable information link. We did similar steps for Estonia and the climate change attitude variable.

unique("ess$IE")
## [1] "ess$IE"
ireland_data <- filter(mydata, cntry == "IE") %>%
                select(alcbnge)
ireland_data <- ireland_data %>%
                mutate(y = alcbnge)
ireland_data <- ireland_data %>%
                mutate(
                  y_category = case_when(
                    y == 1 ~ "Daily or almost daily",
                    y == 2 ~ "Weekly",
                    y == 3 ~ "Monthly",
                    y == 4 ~ "Less than monthly",
                    y == 5 ~ "Never",
                    TRUE ~ NA_character_
                  ),
                  y_category = fct_relevel(factor(y_category),
                                           "Daily or almost daily",
                                           "Weekly",
                                           "Monthly",
                                           "Less than monthly",
                                           "Never")
                )
table(ireland_data$y_category)
## 
## Daily or almost daily                Weekly               Monthly 
##                    65                   650                   346 
##     Less than monthly                 Never 
##                   417                   239
get_mode <- function(v) {
  tbl <- table(v)
  mode_vals <- as.character(names(tbl)[tbl == max(tbl)])
  return(mode_vals)
}

mode_values <- get_mode(ireland_data$y_category)
cat("Mode of y category:", paste(mode_values, collapse = ", "), "\n")
## Mode of y category: Weekly

The most commonly chosen category was “Weekly”

Task 3

Provide code and answer.

Prompt and question: when you use the summary() function for the variable plnftr (about planning for future or taking every each day as it comes from 0-10) for both the countries of Portugal and Serbia, what do you notice? What stands out as different when you compare the two countries (note: look up the variable information on the ESS website to help with interpretation)? Explain while referring to the output generated.

library("tidyverse")
portugal_data <- filter(mydata, cntry == "PT")
serbia_data <- filter(mydata, cntry == "RS")
summary_portugal <- summary(portugal_data$plnftr)
summary_serbia <- summary(serbia_data$plnftr)
print("Summary for Portugal:")
## [1] "Summary for Portugal:"
print(summary_portugal)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   3.000   5.000   6.426   8.000  88.000   14604
print("Summary for Serbia:")
## [1] "Summary for Serbia:"
print(summary_serbia)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   0.000   4.000   4.983   8.000  88.000    1505

On the plnftr scale 0 means planning as much as possible while 10 means not planning it all. Therefore Serbians - with an average of 6.426 - plan more than Portuguese who have an average 4.983.

Task 4

Provide code and answer.

Prompt and question: using the variables stfdem and gndr, answer the following: on average, who is more dissastified with democracy in Italy, men or women? Explain while referring to the output generated.

Info on variable here: https://ess.sikt.no/en/variable/query/stfdem/page/1

italy_data <- mydata %>% 
  filter(cntry == "IT")

italy_data <- italy_data %>%
  mutate(
    gndr = case_when(
      gndr == 1 ~ "Male",
      gndr == 2 ~ "Female",
      TRUE ~ as.character(gndr)
    ),
    stfdem = ifelse(stfdem %in% c(77, 88), NA, stfdem)  # Convert stfdem values
  )
mean_male_stfdem <- italy_data %>%
  filter(gndr == "Male") %>%
  summarize(mean_stfdem_men = mean(stfdem, na.rm = TRUE))

print(mean_male_stfdem)
##   mean_stfdem_men
## 1        4.782646
mean_female_stfdem <- italy_data %>%
  filter(gndr == "Female") %>%
  summarize(mean_stfdem_women = mean(stfdem, na.rm = TRUE))

print(mean_female_stfdem)
##   mean_stfdem_women
## 1          4.694652

Men are more satisfied than women at 4.782646 while women are at 4.694652.

Task 5

Provide code and answer.

Prompt: Interpret the boxplot graph of stfedu and stfhlth that we generated already: according to ESS data, would we say that the median French person is more satisfied with the education system or health services? Explain.

Change the boxplot graph: provide the code to change some of the key labels: (1) Change the title to: Boxplot of satisfaction with the state of education vs. health services; (2) Remove the x-axis label; (3) Change the y-axis label to: Satisfaction (0-10).

Hint: copy the boxplot code above and just replace or cut what is asked.

unique("ess$FR")
## [1] "ess$FR"
france_data <- filter(mydata, cntry == "FR")
france_data %>%
  mutate(stfedu = ifelse(stfedu %in% c(77, 88, 99), NA, stfedu),
         stfhlth = ifelse(stfhlth %in% c(77, 88, 99), NA, stfhlth)) %>%
  select(stfedu, stfhlth) %>%
  gather(variable, value, c(stfedu, stfhlth)) %>%
  ggplot(aes(x = variable, y = value)) +
  geom_boxplot() +
  labs(y = "Satisfaction (0-10)", x = "X-axis", title = "Boxplot of satisfaction with the state of education vs. health services") +
  theme_minimal()
## Warning: Removed 364 rows containing non-finite values (`stat_boxplot()`).

The median lines on this boxplot show that the median French person is more satisfied with health than education. The health median is around 7.0 while the education median lies at 5.0