Homework 1 (5%): due by next lecture on Jan. 23

Instructions: Start a new R markdown for the homework and call it “Yourlastname_Firstname_Homework_1”.

Copy everything below from Task 1 to Task 5. Keep the task prompt and questions, and provide your code and answer underneath.

To generate a new code box, click on the +C sign above. Underneath your code, provide your answer to the task question.

When you are done, click on “Knit” above, then “Knit to Html”. Wait for everything to compile. If you get an error like “Execution halted”, it means there are issues with your code you must fix. When all issues are fixed, it will prompt a new window. Then click on “Publish” in the top right, and then Rpubs (the first option) and follow the instructions to create your Rpubs account and get your Rpubs link for your document (i.e., html link as I provide for the tutorial).

Note: Make sure to provide both your markdown file and R pubs link. If you do not submit both, you will be penalized 2 pts. out of the 5 pts. total.

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.

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.

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.

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

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

# List of packages
packages <- c("tidyverse", "fst", "modelsummary") # add any you need here

# Install packages if they aren't installed already
new_packages <- packages[!(packages %in% installed.packages()[,"Package"])]
if(length(new_packages)) install.packages(new_packages)

# Load the packages
lapply(packages, library, character.only = TRUE)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.4
## ✔ 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
## [[1]]
##  [1] "lubridate" "forcats"   "stringr"   "dplyr"     "purrr"     "readr"    
##  [7] "tidyr"     "tibble"    "ggplot2"   "tidyverse" "stats"     "graphics" 
## [13] "grDevices" "utils"     "datasets"  "methods"   "base"     
## 
## [[2]]
##  [1] "fst"       "lubridate" "forcats"   "stringr"   "dplyr"     "purrr"    
##  [7] "readr"     "tidyr"     "tibble"    "ggplot2"   "tidyverse" "stats"    
## [13] "graphics"  "grDevices" "utils"     "datasets"  "methods"   "base"     
## 
## [[3]]
##  [1] "modelsummary" "fst"          "lubridate"    "forcats"      "stringr"     
##  [6] "dplyr"        "purrr"        "readr"        "tidyr"        "tibble"      
## [11] "ggplot2"      "tidyverse"    "stats"        "graphics"     "grDevices"   
## [16] "utils"        "datasets"     "methods"      "base"
ess <- read_fst("All-ESS-Data.fst")
unique(ess$cntry)
##  [1] "AT" "BE" "CH" "CZ" "DE" "DK" "ES" "FI" "FR" "GB" "GR" "HU" "IE" "IL" "IT"
## [16] "LU" "NL" "NO" "PL" "PT" "SE" "SI" "EE" "IS" "SK" "TR" "UA" "BG" "CY" "RU"
## [31] "HR" "LV" "RO" "LT" "AL" "XK" "ME" "RS" "MK"

Task 1: Question and Answer

Question:

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.

Answer: On Average Norway “7.97” reports “0.24” highier levels of happiness than Belgium “7.73”

“Evidence is provided below”

norway_happy <- ess %>% 
  filter(cntry == "NO") %>% 
  select(happy)
norway_happy$y <- norway_happy$happy

table(norway_happy$y)
## 
##    0    1    2    3    4    5    6    7    8    9   10   77   88 
##   15   29   59  163  238  730  817 2617 5235 3796 2344   12   10
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
norway_happy %>%
  summarize(
    mean_y = mean(y, na.rm = TRUE),
    median_y = median(y, na.rm = TRUE)
  ) %>%
  print()
##     mean_y median_y
## 1 7.975005        8
belgium_happy <- ess %>%
  filter(cntry == "BE") %>% 
  select(happy)
belgium_happy$y <- belgium_happy$happy

table(belgium_happy$y)
## 
##    0    1    2    3    4    5    6    7    8    9   10   77   88   99 
##   50   27  104  194  234  830  999 3503 6521 3402 1565    3   16    3
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
belgium_happy %>%
  summarize(
    mean_y = mean(y, na.rm = TRUE),
    median_y = median(y, na.rm = TRUE)
  ) %>%
  print()
##     mean_y median_y
## 1 7.737334        8

Task 2

Provide code and answer.

Question

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

Answer: The Most Common Category Selected For Irish Respondanets Binge Drinking is “Extreme Binge Drink”

“Evidence is shown below”

ireland_ccdrinking <- ess %>%
  filter(cntry == "IL") %>%
  select(alcbnge)
ireland_ccdrinking$y <- ireland_ccdrinking$alcbnge

table(ireland_ccdrinking$y)
## 
##    1    2    3    4    5    7    8    9 
##   15  153  149  264  362    5   69 1545
ireland_ccdrinking$y[ireland_ccdrinking$y %in% 6:8] <- NA

table(ireland_ccdrinking$y)
## 
##    1    2    3    4    5    9 
##   15  153  149  264  362 1545
mean_y <- mean(ireland_ccdrinking$y, na.rm = TRUE)
median_y <- median(ireland_ccdrinking$y, na.rm = TRUE)

cat("Mean of 'y':", mean_y, "\n")
## Mean of 'y': 7.049437
cat("Median of 'y':", median_y, "\n")
## Median of 'y': 9
df <- ireland_ccdrinking %>%
  mutate(
    y_category = case_when(
      y == 1 ~ "Don't Binge Drink",
      y == 2 ~ "Rarely Binge Drink",
      y == 3 ~ "Somewhat Binge Drink",
      y == 4 ~ "Frequently Binge Drink",
      y == 5 ~ "Extreme Binge Drink ",
      TRUE ~ NA_character_  ),
    y_category = fct_relevel(factor(y_category),  
                             
                             "Don't Binge Drink", 
                             "Rarely Binge Drink", 
                             "Somewhat Binge Drink", 
                             "Frequently Binge Drink", 
                             "Extreme Binge Drink")
  )
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `y_category = fct_relevel(...)`.
## Caused by warning:
## ! 1 unknown level in `f`: Extreme Binge Drink
table(df$y_category)
## 
##      Don't Binge Drink     Rarely Binge Drink   Somewhat Binge Drink 
##                     15                    153                    149 
## Frequently Binge Drink   Extreme Binge Drink  
##                    264                    362
get_mode <- function(v) {
  tbl <- table(v)
  mode_vals <- as.character(names(tbl)[tbl == max(tbl)])
  return(mode_vals)
}

mode_values <- get_mode(df$y_category)
cat("Mode of y category:", paste(mode_values, collapse = ", "), "\n")
## Mode of y category: Extreme Binge Drink

Task 3

Question

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.

Answer: Both Countries “Portugal ans Serbia have an even split on those who plan for thier future and those who take everday as it comes. Both countries average are in the 5 range. However, Portugal tends to take everyday as it comes more than Serbia”5.41 to 5.01”

“Evidence is shown below”

result <- ess %>%

  filter(cntry %in% c("PT", "SE")) %>%
  

  mutate(plnftr = recode(plnftr, `77` = NA_real_, `88` = NA_real_, `99` = NA_real_)) %>%
  

  group_by(cntry) %>%
  summarize(mean_plnftr = mean(plnftr, na.rm = TRUE))

print(result)
## # A tibble: 2 × 2
##   cntry mean_plnftr
##   <chr>       <dbl>
## 1 PT           5.42
## 2 SE           5.02

Task 4

Question

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.

Answer: Men are more dissatisfied with the democracy in Italy than Women. “When calculating the mean of men and women who are disatisfied, Male averaged”5.20” of every 10 men while Females averaged “5.08” of every 10 women.

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

# Convert gender and lrscale (representing pol ID self-placement from left to right)
italy_data <- italy_data %>%
  mutate(
    gndr = case_when(
      gndr == 1 ~ "Male",
      gndr == 2 ~ "Female",
      TRUE ~ as.character(gndr)
    ),
    lrscale = ifelse(lrscale %in% c(77, 88), NA, lrscale)  # Convert lrscale values
  )
mean_male_lrscale <- italy_data %>%
  filter(gndr == "Male") %>%
  summarize(mean_lrscale_men = mean(lrscale, na.rm = TRUE))

print(mean_male_lrscale)
##   mean_lrscale_men
## 1         5.202087
mean_female_lrscale <- italy_data %>%
  filter(gndr == "Female") %>%
  summarize(mean_lrscale_female = mean(lrscale, na.rm = TRUE))

print(mean_female_lrscale)
##   mean_lrscale_female
## 1            5.086377
means_by_gender <- italy_data %>%
  group_by(gndr) %>% 
  summarize(lrscale = mean(lrscale, na.rm = TRUE)) 

print(means_by_gender)
## # A tibble: 3 × 2
##   gndr   lrscale
##   <chr>    <dbl>
## 1 9         4.6 
## 2 Female    5.09
## 3 Male      5.20

Task 5

Question

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).

Answer: It would seem that the median of French people are neither satisfied of dissatisfied with the Education System. While French people for the most part are satisfied with the health services in France. On the Boxplot the “Stfedu” is at the 5 range while the “Stfhlth” is at 5 - 7.5 range with the line in the box being closer to 7.5 than 5. Indicating that in that range french people rate the health services closer to a 7.5 than a 5 on the scale.

france_data <- ess %>% 
  filter(cntry == "FR")
france_data %>%
  # Setting values to NA
  mutate(stfedu = ifelse(stfedu %in% c(77, 88, 99), NA, stfedu),
         stfhlth = ifelse(stfhlth %in% c(77, 88, 99), NA, stfhlth)) %>%
  # Reshaping the data
  select(stfedu, stfhlth) %>%
  gather(variable, value, c(stfedu, stfhlth)) %>%
  # Creating the boxplot
  ggplot(aes(x = variable, y = value)) +
  geom_boxplot() +
  labs(y = "Satisfaction", title = "Boxplot of satisfaction with the state of education vs. health services") +
  theme_minimal()
## Warning: Removed 364 rows containing non-finite values (`stat_boxplot()`).