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\Rtmpkre2wq\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

Norway is overall happier than Belgium with 7.975005 average happiness while Belgium has 7.737334 average happiness

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

Most Irish people chose weekly as the frequency of alcohol binging.

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

These results show that on average Serbians plan more than the Portuguese. On the plnftr scale 0 means planning as much as possible and 10 means taking each day one by one. Portugal’s average is higher so therefore they plan less than Serbians.

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

On the stfdem scale 0 means having less faith in the democracy and 10 is having full faith. Men in Italy have a little more faith than the women with a difference of ~0.09.

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 = " ", 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 person in France seems to be more satisfied with healthcare than education. The median lines in the boxplot show that the median satisfaction with education is 5.0 while healthcare is at ~7.0.