Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)
Multiple plots no correct answer
Correct answer
AI definition
What makes a product AI
What is not
Multiple plots correct answer
Calculate the score for the correct answers
There are three questions with corresponding correct answers. Participants who answer all three questions correctly will receive a score of 3, and so on, with the scoring scale decreasing for each question answered incorrectly.
Knowledge by country
Country
n
mean_score
sd
Czech Republic
35
2.5
0.7
Germany
21
2.5
0.5
Belgium
21
2.4
0.6
Countries with <10 participants
24
2.3
0.8
Latvia
51
1.9
0.9
Cyprus
223
1.8
0.9
India
64
1.7
0.9
Nepal
34
1.6
0.7
Cross-tabulation of score vs other variables
Proficiency vs score
How did you learn vs score
Expected benefit vs score
Likert Questions analysis
Knowledge
Attitudes
Ethics
Source Code
---title: "2024 Argyro Students Survey AI"author: "SU"date: 2024-05-29date-modified: last-modifiedlanguage: title-block-published: "CREATED" title-block-modified: "UPDATED"format: html: toc: truetoc-expand: 3code-fold: truecode-tools: trueeditor: visualexecute: echo: false cache: true warning: false message: false---# Packages```{r}# Load required libraries with pacman; installs them if not already installedpacman::p_load(tidyverse, # tools for data science visdat, #NAs janitor, # for data cleaning and tables here, # for reproducible research gtsummary, # for tables countrycode, # to normalize country data viridis, # colours easystats, # check https://easystats.github.io/easystats/ scales, patchwork, # for multiple plots sjPlot, # for the likert plots sjmisc, # for the likert plots likert, # for likert analysis lubridate )# FOR EDA try DataExplorer, SmartEDA o dllokr, check https://www.youtube.com/watch?v=sKrWYE63Vk4&t=7s```Set theme```{r}theme_set(theme_minimal())```# Data```{r}df_long <-read_rds(here("data", "df_long.rds"))``````{r}df <-read_rds(here("data", "df.rds"))```ange CHECK in country for NA```{r}df <- df |>mutate(Country =na_if(Country, "CHECK"))```# EDA## Total```{r}df |>select("Country", "Year of study:" ) |> gtsummary::tbl_summary()```## By Country```{r}df %>%mutate(Country =fct_lump_min(Country, min =8, other_level ="Countries with <8 participants")) |>ggplot(aes(x =fct_rev(fct_infreq(Country)))) +geom_bar() +labs(title ="Frequency of Countries",x ="Country",y ="Count") +coord_flip()``````{r}df |>select("Country", "Year of study:" ) |> gtsummary::tbl_summary(by ="Country")```## By Year```{r}df |>ggplot(aes(x =`Year of study:`)) +geom_bar() +labs(title ="Frequency of Year",x ="Year",y ="Count") ``````{r}df |>filter(!is.na(Country)) |>mutate(Country =fct_lump_min(Country, min =10, other_level ="Countries with <10 participants")) |>ggplot(aes(x =`Year of study:`, fill = Country)) +geom_bar() +labs(title ="Distribution of Countries by Year of Study",x ="Year of Study",y ="Total",fill ="Country") +scale_fill_viridis_d(option ="H") ``````{r}df |>filter(!is.na(Country)) |>mutate(Country =fct_lump_min(Country, min =10, other_level ="Countries with <10 participants")) |>ggplot(aes(x =`Year of study:`, fill = Country)) +geom_bar(position ="fill") +labs(title ="Distribution of Countries by Year of Study",x ="Year of Study",y ="Proportion",fill ="Country") +scale_fill_viridis_d(option ="H") ``````{r}# df |> # select("Country", "Year of study:" ) |># gtsummary::tbl_summary(by = "Year of study:") |> # gtsummary::add_overall()``````{r}df |>mutate(Country =fct_lump_min(Country, min =10, other_level =" <10 participants")) |>select("Country", "Year of study:" ) |> gtsummary::tbl_summary(by ="Year of study:") |> gtsummary::add_overall()```# Questions Figures and tables## No correct answer### Proficiency```{r}p1 <- df |>ggplot(aes(x =`Please rate your knowledge and proficiency in computers and IT technology:`)) +geom_bar() +labs(title ="Distribution of Knowledge and Proficiency in Computers and IT Technology",x ="",y ="Count" ) +coord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12) )``````{r}df |>ggplot(aes(x =`Please rate your knowledge and proficiency in computers and IT technology:`)) +geom_bar() +labs(title ="Distribution of Knowledge and Proficiency in Computers and IT Technology",x ="Knowledge and Proficiency Level",y ="Count" ) +coord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12) )``````{r}ggsave(here("figures", "01_proficiency.pdf"), width =22, height =10, units =c("cm"), dpi =300)```### First learn```{r}p2 <- df |>filter(!is.na(`How did you first learn about artificial intelligence during your studies?`)) |>ggplot(aes(x =fct_infreq(`How did you first learn about artificial intelligence during your studies?` ))) +geom_bar() +labs(title ="How did you first learn about artificial intelligence during your studies?",x ="", y ="Count" ) +coord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12) )``````{r}df |>filter(!is.na(`How did you first learn about artificial intelligence during your studies?`)) |>ggplot(aes(x =fct_infreq(`How did you first learn about artificial intelligence during your studies?` ))) +geom_bar() +labs(title ="How did you first learn about artificial intelligence during your studies?",x ="", y ="Count" ) +coord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12) )``````{r}ggsave(here("figures", "02_how_did_you_learn.pdf"), width =22, height =10, units =c("cm"), dpi =300)```### Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)```{r}p3 <- df %>%# separate the answersselect(`Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)`) %>%separate_rows(`Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)`, sep =", ") %>%filter(!is.na(`Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)`)) |># create the plotggplot(aes(x =fct_infreq(`Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)`))) +geom_bar() +labs(title ="Areas Expected to Benefit the Most from AI in Dentistry",x ="",y ="Count", caption ="Multiple answers possible" ) +coord_flip() +theme_minimal() +theme(axis.title.x =element_text(size =9),plot.title =element_text(size =12) )``````{r}ggsave(here("figures", "03_areas_expected_benefit_ai.pdf"), width =22, height =10, units =c("cm"), dpi =300)```### Multiple plots no correct answer```{r}(p1 / p2 / p3)``````{r}ggsave(here("figures", "04_no_correct_answer.pdf"), width =22, height =33, units =c("cm"), dpi =300)```## Correct answer### AI definition```{r}# Define custom colors using viridis palettecustom_colors <-c("Advanced computer programming"=viridis(5)[5], # reddish color"An algorithm that can answer all questions"=viridis(5)[5], # reddish color"Automation of tasks"=viridis(5)[5], # reddish color"Mimicking human intelligence by machines"="#21918c"# teal green from viridis palette)# Modify the levelsdf <- df %>%mutate(`How would you define artificial intelligence?`=fct_recode(`How would you define artificial intelligence?`,"Advanced computer programming"="Advanced computer programming","An algorithm that can answer all questions"="An algorithm that can answer all questions","Automation of tasks"="Automation of tasks","Mimicking human intelligence by machines"="Mimicking human intelligence by machines" ))# Create the bar plot with reordered factors, labels, title, and adjusted font sizesdf %>%filter(!is.na(`How would you define artificial intelligence?`)) %>%ggplot(aes(x =fct_infreq(`How would you define artificial intelligence?`), fill =`How would you define artificial intelligence?`)) +geom_bar() +labs(title ="How would you define artificial intelligence?",caption ="Correct answer in teal green", x ="", y ="Count" ) +scale_fill_manual(values = custom_colors) +# Apply custom colorscoord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12),legend.position ="none"# Remove legend if not needed )``````{r}ggsave(here("figures", "05_how_define_ai.pdf"), width =22, height =10, units =c("cm"), dpi =300)``````{r}p1 <- df %>%filter(!is.na(`How would you define artificial intelligence?`)) %>%ggplot(aes(x =fct_infreq(`How would you define artificial intelligence?`), fill =`How would you define artificial intelligence?`)) +geom_bar() +labs(title ="How would you define artificial intelligence?",# caption = "Correct answer in teal green", x ="", y ="Count" ) +scale_fill_manual(values = custom_colors) +# Apply custom colorscoord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12),legend.position ="none"# Remove legend if not needed )```### What makes a product AI```{r}# Define custom colors using viridis palettecustom_colors <-c("The product is capable of performing complex\ncalculations at high speeds"=viridis(5)[5], # greenish color"The product is equipped with sensors to detect\nphysical changes in the environment"=viridis(5)[5], # reddish color"The product utilizes traditional software algorithms\nto follow specific instructions without deviation"=viridis(5)[5], # reddish color"The product can improve its performance and make decisions\nbased on data, without being explicitly programmed for each case"=viridis(5)[3] # reddish color)# Modify the levels with line breaksdf <- df %>%mutate(`What makes a product AI?`=fct_recode(`What makes a product AI?`,"The product is capable of performing complex\ncalculations at high speeds"="The product is capable of performing complex calculations at high speeds","The product is equipped with sensors to detect\nphysical changes in the environment"="The product is equipped with sensors to detect physical changes in the environment","The product utilizes traditional software algorithms\nto follow specific instructions without deviation"="The product utilizes traditional software algorithms to follow specific instructions without deviation","The product can improve its performance and make decisions\nbased on data, without being explicitly programmed for each case"="The product can improve its performance and make decisions based on data, without being explicitly programmed for each case" ))# Create the bar plot with reordered factors, labels, title, and adjusted font sizesdf %>%filter(!is.na(`What makes a product AI?`)) %>%ggplot(aes(x =fct_infreq(`What makes a product AI?`), fill =`What makes a product AI?`)) +geom_bar() +labs(title ="What makes a product AI?",caption ="Correct answer in teal green", x ="", y ="Count" ) +scale_fill_manual(values = custom_colors) +# Apply custom colorscoord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12),legend.position ="none"# Remove legend if not needed )``````{r}ggsave(here("figures", "06_what_makes_a_product_ai.pdf"), width =22, height =10, units =c("cm"), dpi =300)``````{r}p2 <- df %>%filter(!is.na(`What makes a product AI?`)) %>%ggplot(aes(x =fct_infreq(`What makes a product AI?`), fill =`What makes a product AI?`)) +geom_bar() +labs(title ="What makes a product AI?",# caption = "Correct answer in teal green", x ="", y ="Count" ) +scale_fill_manual(values = custom_colors) +# Apply custom colorscoord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12),legend.position ="none"# Remove legend if not needed )```### What is not```{r}# Define custom colors using viridis palettecustom_colors <-c("3D printing"="#21918c", # teal green from viridis palette"Regenerative language models"=viridis(5)[5], # reddish color"Self-driving vehicles"=viridis(5)[5], # reddish color"Social media recommendation algorithms"=viridis(5)[5] # reddish color)# Modify the levels with line breaksdf <- df %>%mutate(`From the list below, what is not AI technology?`=fct_recode(`From the list below, what is not AI technology?`,"3D printing"="3D printing","Regenerative language models"="Regenerative language models","Self-driving vehicles"="Self-driving vehicles","Social media recommendation algorithms"="Social media recommendation algorithms" ))# Create the bar plot with reordered factors, labels, title, and adjusted font sizesdf %>%filter(!is.na(`From the list below, what is not AI technology?`)) %>%ggplot(aes(x =fct_infreq(`From the list below, what is not AI technology?`), fill =`From the list below, what is not AI technology?`)) +geom_bar() +labs(title ="From the list below, what is not AI technology?",caption ="Correct answer in teal green", x ="", y ="Count" ) +scale_fill_manual(values = custom_colors) +# Apply custom colorscoord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12),legend.position ="none"# Remove legend if not needed )``````{r}ggsave(here("figures", "07_what_is_not_ai.pdf"), width =22, height =10, units =c("cm"), dpi =300)``````{r}p3 <- df %>%filter(!is.na(`From the list below, what is not AI technology?`)) %>%ggplot(aes(x =fct_infreq(`From the list below, what is not AI technology?`), fill =`From the list below, what is not AI technology?`)) +geom_bar() +labs(title ="From the list below, what is not AI technology?",caption ="Correct answer in teal green", x ="", y ="Count" ) +scale_fill_manual(values = custom_colors) +# Apply custom colorscoord_flip() +theme(axis.title.x =element_text(size =9), plot.title =element_text(size =12),legend.position ="none"# Remove legend if not needed )```### Multiple plots correct answer```{r}(p1 / p2 / p3)``````{r}ggsave(here("figures", "08_correct_answer.pdf"), width =22, height =33, units =c("cm"), dpi =300)``````{r}rm(p1, p2, p3, custom_colors)```# Calculate the score for the correct answers```{r}df <-read_rds(here("data", "df.rds"))``````{r}# Define the custom color palettescore_colors <-c("3"="#4dac26", # dark green"2"="#b8e186", # light green"1"="#ffffbf", # yellowish"0"="#ca0020"# reddish)```There are three questions with corresponding correct answers. Participants who answer all three questions correctly will receive a score of 3, and so on, with the scoring scale decreasing for each question answered incorrectly.```{r}# Define the correct answerscorrect_answers <-list(`How would you define artificial intelligence?`="Mimicking human intelligence by machines",`What makes a product AI?`="The product can improve its performance and make decisions based on data, without being explicitly programmed for each case",`From the list below, what is not AI technology?`="3D printing")``````{r}df <- df %>%mutate(score =rowSums(tibble(`How would you define artificial intelligence?`== correct_answers$`How would you define artificial intelligence?`,`What makes a product AI?`== correct_answers$`What makes a product AI?`,`From the list below, what is not AI technology?`== correct_answers$`From the list below, what is not AI technology?` ) ) ) ``````{r}df |>ggplot(aes(x = score)) +geom_histogram(binwidth =1) +labs(title ="Score distribution",x ="Performance Score (0-3, Higher is Better)",y ="Count")```## Knowledge by country```{r}parse_country <-function(institution) {case_when(str_detect(institution, regex("Czechia|Czech Republic|CZ|Univerzity|Praha|Charles|Prague", ignore_case =TRUE)) ~"Czech Republic",str_detect(institution, regex("Belgium|BE|Leuven", ignore_case =TRUE)) ~"Belgium",str_detect(institution, regex("USA|United States|Boston", ignore_case =TRUE)) ~"United States",str_detect(institution, regex("India|Kgmu|george|LUCKNOW", ignore_case =TRUE)) ~"India",str_detect(institution, regex("Cyprus|Chypre|European University|EUC|European", ignore_case =TRUE)) ~"Cyprus",str_detect(institution, regex("Japan|Tokyo", ignore_case =TRUE)) ~"Japan",str_detect(institution, regex("Germany|LMU|Munich|Ludwig|München", ignore_case =TRUE)) ~"Germany",str_detect(institution, regex("France", ignore_case =TRUE)) ~"France",str_detect(institution, regex("Greece", ignore_case =TRUE)) ~"Greece",str_detect(institution, regex("Nepal|Kathmandu|Kusms", ignore_case =TRUE)) ~"Nepal",str_detect(institution, regex("Latvia|Riga|Rīga|Rīgas|Rigas|RSU", ignore_case =TRUE)) ~"Latvia",str_detect(institution, regex("Brazil|Brasil", ignore_case =TRUE)) ~"Brazil",str_detect(institution, regex("Hatieganu", ignore_case =TRUE)) ~"Romania",str_detect(institution, regex("LEEDS", ignore_case =TRUE)) ~"UK",TRUE~"CHECK" )}``````{r}df <- df |>mutate(Country =parse_country(`Which Dental School / Country are you studying in?`))``````{r}rm(parse_country)``````{r}df |>filter(Country !="CHECK") |>mutate(Country =fct_lump_min(Country, min =10, other_level ="Countries with <10 participants")) |>group_by(Country) |>summarise(n =n(), mean_score =mean(score, na.rm =TRUE), sd =sd(score, na.rm =TRUE)) |>arrange(desc(mean_score)) |>mutate(across(c(mean_score, sd), round, 1)) |> knitr::kable()```## Cross-tabulation of score vs other variables### Proficiency vs score```{r}df |>filter(!is.na(score)) |>ggplot(aes(x =`Please rate your knowledge and proficiency in computers and IT technology:`, fill =as.factor(score))) +geom_bar(position ="fill") +labs(title ="Distribution of Knowledge and Proficiency in Computers and IT Technology",x ="",y ="Count", fill ="Score" ) +coord_flip() +scale_fill_manual(values = score_colors) +# Apply the custom color palettetheme(axis.title.x =element_text(size =9), plot.title =element_text(size =12) ) ```### How did you learn vs score```{r}df |>filter(!is.na(score)) |>ggplot(aes(x =`How did you first learn about artificial intelligence during your studies?`, fill =as.factor(score))) +geom_bar(position ="fill") +labs(title ="Distribution of How Students First Learned About AI",x ="",y ="Count", fill ="Score" ) +coord_flip() +scale_fill_manual(values = score_colors) +# Apply the custom color palettetheme(axis.title.x =element_text(size =9), plot.title =element_text(size =12) )```### Expected benefit vs score```{r}df %>%# separate the answersselect(`id`, `Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)`, score) %>%separate_rows(`Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)`, sep =", ") %>%filter(!is.na(`Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)`)) %>%filter(!is.na(score)) %>%# create the plotggplot(aes(x =fct_infreq(`Which of the following areas do you think will benefit the most from AI in dentistry? (multiple answers possible)`), fill =as.factor(score))) +geom_bar(position ="fill") +labs(title ="Areas Expected to Benefit the Most from AI in Dentistry",x ="",y ="Count", fill ="Score" ) +coord_flip() +scale_fill_manual(values = score_colors) +# Apply the custom color palettetheme_minimal() +theme(axis.title.x =element_text(size =9),plot.title =element_text(size =12) ) ``````{r}rm(score_colors, correct_answers)```# Likert Questions analysis## Knowledge```{r}df_long %>%# Step 1: Select id and knowledge-related questions and responsesselect(`id`, `Knowledge-awareness Question`, `Knowledge-awareness Response`) %>%# remove spacesmutate(`Knowledge-awareness Response`=str_trim(`Knowledge-awareness Response`, side =c("both"))) |># remove NAsfilter(!is.na(`Knowledge-awareness Response`)) |># remove the I dont know columnfilter(`Knowledge-awareness Response`!="I do not know") |># Remove the ":" symbol from the levels of Knowledge-awareness Questionmutate(`Knowledge-awareness Question`=str_replace_all(`Knowledge-awareness Question`, ":", "")) %>%# CHECK# tabyl(`Knowledge-awareness Response`)# reorder the levels# Step 3: Convert the Knowledge-awareness Response to an ordered factormutate(`Knowledge-awareness Response`=fct_relevel(`Knowledge-awareness Response`,"Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree")) |># Check# tabyl(`Knowledge-awareness Response`)# Pivot wider to get each question as a separate columnpivot_wider(names_from =`Knowledge-awareness Question`, values_from =`Knowledge-awareness Response`, values_fn = list) %>%unnest(cols =everything() ) %>%# Remove the id columnselect(-`id`) %>%# Plot the data using plot_likertplot_likert(# geom.colors = "viridis", geom.colors ="RdBu",show.n =FALSE, reverse.scale =TRUE, cat.neutral =3,values ="sum.inside",show.prc.sign =TRUE, # grid.range = 1.3, sort.frq ="pos.asc") +# Additional formatting for the plotlabs(title ="Knowledge-awareness Questions and Responses",x ="",y ="" ) +theme(legend.position ="top", plot.title =element_text(size =14, face ="bold"),axis.title.x =element_text(size =12),axis.title.y =element_text(size =12) )``````{r}ggsave(here("figures", "09_knowledge.pdf"), width =22, height =15, units =c("cm"), dpi =300)```## ## Attitudes```{r}df_long %>%# Step 1: Select id and knowledge-related questions and responsesselect(`id`, `Attitudes-beliefs Question`, `Attitudes-beliefs Response`) %>%# remove spacesmutate(`Attitudes-beliefs Response`=str_trim(`Attitudes-beliefs Response`, side =c("both"))) |># remove NAsfilter(!is.na(`Attitudes-beliefs Response`)) |># remove the I dont know columnfilter(`Attitudes-beliefs Response`!="I do not know") |># Remove the ":" symbol from the levels of Attitudes-beliefs Questionmutate(`Attitudes-beliefs Question`=str_replace_all(`Attitudes-beliefs Question`, ":", "")) %>%# CHECK# tabyl(`Attitudes-beliefs Response`)# reorder the levels# Step 3: Convert the Attitudes-beliefs Response to an ordered factormutate(`Attitudes-beliefs Response`=fct_relevel(`Attitudes-beliefs Response`,"Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree")) |># Check# tabyl(`Attitudes-beliefs Response`)# Pivot wider to get each question as a separate columnpivot_wider(names_from =`Attitudes-beliefs Question`, values_from =`Attitudes-beliefs Response`, values_fn = list) %>%unnest(cols =everything() ) %>%# Remove the id columnselect(-`id`) %>%# Plot the data using plot_likertplot_likert(# geom.colors = "viridis", geom.colors ="RdBu",show.n =FALSE, reverse.scale =TRUE, cat.neutral =3,values ="sum.inside",show.prc.sign =TRUE, # grid.range = 1.3, sort.frq ="pos.asc") +# Additional formatting for the plotlabs(title ="Attitudes-beliefs Questions and Responses",x ="",y ="" ) +theme(legend.position ="top", plot.title =element_text(size =14, face ="bold"),axis.title.x =element_text(size =12),axis.title.y =element_text(size =12) )``````{r}ggsave(here("figures", "10_attitudes.pdf"), width =22, height =27, units =c("cm"), dpi =300)```## Ethics```{r}df_long %>%# Step 1: Select id and knowledge-related questions and responsesselect(`id`, `Ethics-concerns Question`, `Ethics-concerns Response`) %>%# remove spacesmutate(`Ethics-concerns Response`=str_trim(`Ethics-concerns Response`, side =c("both"))) |># remove NAsfilter(!is.na(`Ethics-concerns Response`)) |># remove the I dont know columnfilter(`Ethics-concerns Response`!="I do not know") |># Remove the ":" symbol from the levels of Ethics-concerns Questionmutate(`Ethics-concerns Question`=str_replace_all(`Ethics-concerns Question`, ":", "")) %>%mutate(`Ethics-concerns Question`=str_replace_all(`Ethics-concerns Question`, "\\?", "")) |># CHECK# tabyl(`Ethics-concerns Response`)# reorder the levels# Step 3: Convert the Ethics-concerns Response to an ordered factormutate(`Ethics-concerns Response`=fct_relevel(`Ethics-concerns Response`,"Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree")) |># Check# tabyl(`Ethics-concerns Response`)# Pivot wider to get each question as a separate columnpivot_wider(names_from =`Ethics-concerns Question`, values_from =`Ethics-concerns Response`, values_fn = list) %>%unnest(cols =everything() ) %>%# Remove the id columnselect(-`id`) %>%# Plot the data using plot_likertplot_likert(# geom.colors = "viridis", geom.colors ="RdBu",show.n =FALSE, reverse.scale =TRUE, cat.neutral =3,values ="sum.inside",show.prc.sign =TRUE, # grid.range = 1.3, sort.frq ="pos.asc") +# Additional formatting for the plotlabs(title ="Ethics-concerns Questions and Responses",x ="",y ="" ) +theme(legend.position ="top", plot.title =element_text(size =14, face ="bold"),axis.title.x =element_text(size =12),axis.title.y =element_text(size =12) )``````{r}ggsave(here("figures", "11_ethics.pdf"), width =22, height =24, units =c("cm"), dpi =300)```