Do younger generations care more about climate change?

Not even COVID-19 could turn down the voices of Fridays for Future (FFF), a global climate strike movement sparked by Greta Thunberg in 2018. They sparked the largest climate movements worldwide, mobilizing millions of people to demand action from political leaders. As of March 2021, 22,193 events in 210 countries/dependent areas have taken place.

The driving force of this global movement is Generation Z, characterized as the generation born in the late 1990s to the early 2010s. Using their digital aptitude as an advantage, the FFF activists managed to kept momentum of climate strikes up by quickly adopting online strategies. Through persistent global engagement in climate strikes, they have successfully brought the climate agenda as one of the main policy agenda of our times.

Generation Z cannot afford to be alone in this fight. Support from older generations is needed to bring about meaningful change in policy because they outweigh Gen Z in terms of voting power and political influence. How much intergenerational support does climate issues have? In this blog, I analyze the 2016 European Social Survey data in R to explore generational differences in attitudes toward climate change. I will focus the analysis on Germany.

Data: 2016 European Social Survey

European Social Survey is a bi-annual cross-national survey that measures the attitudes, beliefs and behavior patterns of diverse populations. In the 2016 round, the researchers included questionnaires related to climate change.

# Load data
ess_raw <- read_dta("data/ESS8e02_2.dta", encoding='latin1')

This dataset has 535 variables because of the wide range of topics covered in ESS. Finding the right variables to work with can be tricky when dealing with so many variables. But don’t dispair! The following custom function will make your variable-searching a little easier.

# Check list of variables 
# Make list of variables
makeVlist <- function(x) {
  labels <- sapply(x, function(x) attr(x,"label"))
  tibble(name= names(labels), label=labels)
variables <- makeVlist(ess_raw)

Variables that are relevant to this analysis are:

  • idno, cntry, yrbrn : Subject ID, country, birth year and gender
  • wrclmch : How worried are you about climate change? (1-5)
  • ccrdprs : To what extent do you feel personally responsibile for reducing climate change? (1-10)
  • inctxff : Do you favor increasing taxes on fossil fuels? (1-5)
  • sbsrnen : Do you favor subsidies for renewable energy? (1-5)

Since the population of interest is Germany, I narrow the sample dataset to Germany. Then, I group subjects into four generations: Generation Z, (1997-2012), Millenials (1981-1996), Gen X (1965-1980), and Baby Boomers (1940 and earlier). Eliminating missing values in the dataset brings the final sample size to 2,411.

# Select variables
ess <- ess_raw %>% select(idno, cntry, yrbrn, wrclmch,  ccrdprs, inctxff, sbsrnen) %>% remove_labels() 
# Select country and create generation groups
ess_de <- ess %>% filter(cntry=="DE") %>% mutate(generation = case_when(
yrbrn >= 1997 & yrbrn <=2012 ~ "Gen Z",
yrbrn >= 1981 & yrbrn <= 1996 ~ "Millennials",
yrbrn >= 1965 & yrbrn <= 1980 ~ "Gen X",
yrbrn >= 1946 ~ "Baby Boomers",
  )) %>% mutate(
    generation = factor(generation, levels=c("Gen Z", "Millennials", "Gen X", "Baby Boomers"))) %>%  filter(generation != "NA") %>% na.omit()


Which generation is most worried about climate change?

Contrary to my assumption (“Gen Z is the most concerned about climate change than any other generation), the exploratory analysis showed that Baby Boomers (69 or older at the time of interview) are most worried about climate change. 48% of the Baby Boomers are either very or extremely worried about climate change, whereas about 40-42% of other generations.

The following code generates a distribution table and a kernel density plot of self-reported scores on the level of worries about climate change.

# Distribution table and kernel density plots
ggplot(ess_de, aes(x=wrclmch, fill=generation, color=generation))  + 
  geom_density(stat="density", alpha=0.2, size=0.2) + 
  labs(title="How worried are you about climate change?",
   x="1=Not at all worried, 5=Extremely worried",
   y="Density") +
  xlim(0,5) + theme_classic() +
    legend.title = element_blank()) +
  scale_color_manual(values=c("red", "aquamarine", "blue", "green4")) + 
  scale_fill_manual(values=c("red", "aquamarine", "blue", "green4")) 


# Frequency distribution table
freq <- ess_de %>% group_by(generation, wrclmch) %>% summarise(Freq=n()) %>% mutate(share=round(Freq/sum(Freq)*100,0)) %>% %>% arrange(desc(wrclmch))

genz <- freq %>% filter(generation=="Gen Z") %>% select(genz=share)
mil <- freq %>% filter(generation=="Millennials") %>% select(mil=share) 
genx <- freq %>% filter(generation=="Gen X") %>% select(genx=share)
boomer <- freq %>% filter(generation=="Baby Boomers") %>% select(boomer=share)
score <- factor(c("Extremely worried", "Very worried", "Somewhat worried", "Not very worried", "Not at all worried"))

freq_table <- tibble(score, genz, mil, genx, boomer)

# Make the table look pretty
gt(freq_table) %>% 
    title= "Frequncy distribution of scores by generation"
  ) %>% 
  cols_label(score="How worried?", genz="Gen Z (%)", 
mil="Millenials (%)", genx="Gen X (%)", boomer="Baby Boomers (%)") %>%


Which generation feels the most personally responsible for climate change?

About 50% of the population in Germany feel that they are personally responsible for solving climate change, with a median score of 7 out of 10. Although the median score does not vary by generation, the baby boomers feel a little more responsible than other generations.

# Summary statistics
responsibility <- ess_de %>% group_by(generation) %>%

summarize(mean=round(mean(ccrdprs),2), median=median(ccrdprs))

gt(responsibility) %>% tab_header(
    title= "Level of personal responsibility"
  ) %>% 
  cols_label(generation="Generation", mean="Mean", median="Median") %>%


The level of personal responsibility people feel is positively correlated with how worried people are about climate change. The box plot below shows that people who are more worried about climate change are likely to feel more personally responsible to solve the problem.

# Correlation between sense of responsibility and level of worries
ggplot(ess_de, aes(x=as.factor(wrclmch), y=ccrdprs)) + 
  geom_boxplot() +
  labs(x="1: Not at all worried     |     5: Extremely worried",
       y="Level of personal responsibility") +


Which generation supports climate policies the most?

The ESS researchers also asked respondents whether they support relevant policies such as tax on fossil fuels and providing subsidies to renewable energy providers. Possible answers are:

  • 1 Strongly in favour
  • 2 Somewhat in favour
  • 3 Neither in favour nor against
  • 4 Somewhat against
  • 5 Strongly against

In the stacked bar charts of the distribution of responses for these two questionnaires, a slight difference in the support level for different climate policies across generations can be observed.

Although Baby Boomers worry the most and personally feel responsible for reducing climate change, they are less likely to support the increase in tax on fossil fuels than the younger generations. 31% of the group are either somewhat or strongly in favor of the policy, whereas about 43-45% of the younger generations are.

Over 80% of each generation supports subsidy schemes for renewable energy. Support for this policy from the Gen Z group is about 10 percentage points higher than the Baby Boomers.

tax_summary <- ess_de %>% mutate (inctxff= factor (inctxff, levels= c (5,4,3,2,1))) %>% group_by (generation, inctxff) %>%

tax_summary <- ess_de %>% mutate(inctxff=factor(inctxff, levels=c(5,4,3,2,1))) %>% group_by(generation, inctxff) %>%
 summarize(freq=n()) %>% 

tax <- ggplot(tax_summary, aes(x=inctxff, y=share, fill=inctxff)) + 
  geom_bar(stat="identity") + 
  labs(title="Do you support increasing taxes on fossil fuels?",
       x="5: Strongly against     |     1: Strongly in favour",
       y="Share (%)") + theme_classic() +
        legend.title = element_blank(),
        legend.position="none") +
  scale_fill_manual(values=c("#13091f", "#8c8c8c", "#c9ccc8","#ffee6e", "#ffc94b")) +


subsidy_summary <- ess_de %>% 
mutate(sbsrnen=factor(sbsrnen, levels=c(5,4,3,2,1))) %>% group_by(generation, sbsrnen) %>%
  summarize(freq=n()) %>% 

subsidy <- ggplot(subsidy_summary, aes(x=sbsrnen, y=share, fill=sbsrnen)) + 
  geom_bar(stat="identity") + 
  labs(title="Do you support subsidies for renewable energy?",
   x="5: Strongly against     |     1: Strongly in favour",
   y="Share (%)") + theme_classic() +
  legend.title = element_blank(), 
  legend.position="none") +
  scale_fill_manual(values=c("#13091f", "#8c8c8c", "#c9ccc8","#ffee6e", "#ffc94b")) +


You are not alone

In Germany, Gen Z is not alone in the fight against climate change. This analysis found that there is strong inter-generational support for global climate action. The majority of each generation expresses concerns about climate change, feel personally responsible for the problem, and support relevant climate policies.

It also challenges the general assumption that the younger generations are more concerned about climate change than the elderly. Baby Boomers were more likely to be worried about climate change by 4-6 percentage points than other generations. A slightly higher percentage of Baby Boomers felt slightly more responsible for solving the problem than others as well.

Increasing tax on fossil fuels and providing subsidies for renewable energy providers are flagship climate policies that are crucial to curb carbon emissions. Contrary to the higher level of worries and personal responsibility, Baby Boomers are less likely to support increasing taxes on fossil fuels, by about 14 percentage points. On the other hand, renewable energy subsidies receive a high level of support (over 80%) across all generations.

This finding cannot be generalized to other EU countries because Germany is not a representative sample. Germany has the second-highest level of participation in the world, following the US. To draw EU-level insights, I would randomly sample subjects from each country, whose sample sizes are weighted by the proportion of the population.

You can also read this article on my blog, Uni Lee’s Conscious Table.