This file contains descriptive statistics of the perception and concern questions in the survey, as well as some regression analyses of how background information and attitudes influences perceptions/concerns. We have also started analyzing the open ended survey questions using word clouds.
library(knitr)
library(haven)
library(ggplot2)
library(dplyr)
library(tidyr)
library(jtools)
library(summarytools)
library(kableExtra)
library(tm)
library(wordcloud)
library(skimr)
library(purrr)
library(labelled)
library(stargazer)
library(broom)
library(writexl)
library(modelsummary)
library(openxlsx)
library(psych)
library(scales)
library(readxl)
These data are used for descriptive statistics as they include the “Don’t know” option. We have also re-coded some variables so that they are easier to interpret.
# Load data
data <- read_sav("data.sav")
# Create a dummy variable for work experience
data <- data %>%
mutate(across(starts_with("Q5_"), as.character)) %>%
mutate(
workexperience = if_else(
Q5_1 == "1" | Q5_2 == "1" | Q5_3 == "1" | Q5_4 == "1" |
Q5_5 == "1" | Q5_6 == "1" | Q5_7 == "1" | Q5_8 == "1" |
Q5_9 == "1" | Q5_10 == "1" | Q5_11 == "1" | Q5_12 == "1" |
Q5_13 == "1" | Q5_14 == "1",
1,
0
)
)
# Recode the gender variable
data <- data %>%
mutate(resp_gender = ifelse(resp_gender == 1, 0, 1))
data <- data %>%
mutate(resp_gender = factor(resp_gender, labels = c("Men", "Women")))
# Make variable with age groups
data <- data %>%
mutate(AgeGroup = cut(Age_1,
breaks = c(18, 29, 39, 49, 59, 69, 79, Inf),
labels = c("18-29", "30-39", "40-49", "50-59", "60-69", "70-79", "80+"),
right = TRUE))
data <- data %>%
mutate(education_recode = case_when(
NO01EDU %in% c(1, 2) ~ 1,
NO01EDU == 3 ~ 2,
NO01EDU == 6 ~ 3,
NO01EDU == 7 ~ 4,
TRUE ~ NA_real_ # Keeps other values as NA
))
data %>%
select(resp_gender, AgeGroup, education_recode, Q10) %>%
dfSummary()
## Data Frame Summary
## data
## Dimensions: 1032 x 4
## Duplicates: 906
##
## ------------------------------------------------------------------------------------------------------------------------------------------------------
## No Variable Label Stats / Values Freqs (% of Valid) Graph Valid Missing
## ---- ------------------ ------------------------------------- ------------------------------ -------------------- --------------- ---------- ---------
## 1 resp_gender 1. Men 527 (51.1%) IIIIIIIIII 1032 0
## [factor] 2. Women 505 (48.9%) IIIIIIIII (100.0%) (0.0%)
##
## 2 AgeGroup 1. 18-29 199 (19.4%) III 1025 7
## [factor] 2. 30-39 185 (18.0%) III (99.3%) (0.7%)
## 3. 40-49 146 (14.2%) II
## 4. 50-59 220 (21.5%) IIII
## 5. 60-69 149 (14.5%) II
## 6. 70-79 109 (10.6%) II
## 7. 80+ 17 ( 1.7%)
##
## 3 education_recode Mean (sd) : 2.8 (0.9) 1 : 42 ( 4.1%) 1032 0
## [numeric] min < med < max: 2 : 351 (34.0%) IIIIII (100.0%) (0.0%)
## 1 < 3 < 4 3 : 375 (36.3%) IIIIIII
## IQR (CV) : 2 (0.3) 4 : 264 (25.6%) IIIII
##
## 4 Q10 Q10. Har du hørt om teknologier for 1. [1] Nei, jeg har aldri hø 174 (16.9%) III 1032 0
## [haven_labelled, CO2-fangst og -lagring? 2. [2] Ja, men jeg vet ikke 587 (56.9%) IIIIIIIIIII (100.0%) (0.0%)
## vctrs_vctr, 3. [3] Ja, jeg har hørt om d 271 (26.3%) IIIII
## double]
## ------------------------------------------------------------------------------------------------------------------------------------------------------
describe(data[, c("resp_gender", "AgeGroup", "education_recode")])
## vars n mean sd median trimmed mad min max range skew
## resp_gender* 1 1032 1.49 0.50 1 1.49 0.00 1 2 1 0.04
## AgeGroup* 2 1025 3.32 1.70 3 3.26 1.48 1 7 6 0.16
## education_recode 3 1032 2.83 0.86 3 2.84 1.48 1 4 3 -0.07
## kurtosis se
## resp_gender* -2.00 0.02
## AgeGroup* -1.08 0.05
## education_recode -0.95 0.03
char_vars <- names(data)[sapply(data, is.character)]
manual_exclude <- c("Age_1", "NO01EDU", "Q4", "Q5_1", "Q5_2", "Q5_3", "Q5_4", "Q5_5",
"Q5_6", "Q5_7", "Q5_8", "Q5_9", "Q5_10", "Q5_11", "Q5_12",
"Q5_13", "Q5_14", "Q5_15" )
exclude_vars <- union(char_vars, manual_exclude)
# Function to calculate proportions and counts
summarize_proportions <- function(data, exclude_vars = NULL) {
data <- data %>% select(-all_of(exclude_vars))
# Summarize proportions
result <- bind_rows(lapply(names(data), function(var) {
data %>%
count(!!sym(var)) %>%
mutate(
Proportion = n / sum(n),
Variable = var,
Category = as.character(!!sym(var))
) %>%
select(Variable, Category, n, Proportion)
}))
return(result)
}
# Apply function to dataset
summary_table <- summarize_proportions(data, exclude_vars)
summary_table <- summary_table %>%
mutate(Proportion = round(Proportion * 100, 1))
# Print result
kable(summary_table)
| Variable | Category | n | Proportion |
|---|---|---|---|
| resp_gender | Men | 527 | 51.1 |
| resp_gender | Women | 505 | 48.9 |
| Q6 | 1 | 114 | 11.0 |
| Q6 | 2 | 241 | 23.4 |
| Q6 | 3 | 274 | 26.6 |
| Q6 | 4 | 269 | 26.1 |
| Q6 | 5 | 134 | 13.0 |
| Q7 | 0 | 24 | 2.3 |
| Q7 | 1 | 31 | 3.0 |
| Q7 | 2 | 75 | 7.3 |
| Q7 | 3 | 96 | 9.3 |
| Q7 | 4 | 97 | 9.4 |
| Q7 | 5 | 251 | 24.3 |
| Q7 | 6 | 102 | 9.9 |
| Q7 | 7 | 145 | 14.1 |
| Q7 | 8 | 109 | 10.6 |
| Q7 | 9 | 51 | 4.9 |
| Q7 | 10 | 51 | 4.9 |
| Q8 | 0 | 25 | 2.4 |
| Q8 | 1 | 38 | 3.7 |
| Q8 | 2 | 91 | 8.8 |
| Q8 | 3 | 134 | 13.0 |
| Q8 | 4 | 109 | 10.6 |
| Q8 | 5 | 315 | 30.5 |
| Q8 | 6 | 109 | 10.6 |
| Q8 | 7 | 97 | 9.4 |
| Q8 | 8 | 62 | 6.0 |
| Q8 | 9 | 29 | 2.8 |
| Q8 | 10 | 23 | 2.2 |
| Q9 | 1 | 50 | 4.8 |
| Q9 | 2 | 339 | 32.8 |
| Q9 | 3 | 465 | 45.1 |
| Q9 | 4 | 140 | 13.6 |
| Q9 | 5 | 38 | 3.7 |
| Q10 | 1 | 174 | 16.9 |
| Q10 | 2 | 587 | 56.9 |
| Q10 | 3 | 271 | 26.3 |
| Q11 | 1 | 57 | 5.5 |
| Q11 | 2 | 350 | 33.9 |
| Q11 | 3 | 324 | 31.4 |
| Q11 | 4 | 56 | 5.4 |
| Q11 | 5 | 42 | 4.1 |
| Q11 | 6 | 203 | 19.7 |
| Q13 | 1 | 168 | 16.3 |
| Q13 | 2 | 262 | 25.4 |
| Q13 | 3 | 328 | 31.8 |
| Q13 | 4 | 73 | 7.1 |
| Q13 | 5 | 42 | 4.1 |
| Q13 | 6 | 159 | 15.4 |
| Q14 | 1 | 256 | 24.8 |
| Q14 | 2 | 257 | 24.9 |
| Q14 | 3 | 275 | 26.6 |
| Q14 | 4 | 71 | 6.9 |
| Q14 | 5 | 32 | 3.1 |
| Q14 | 6 | 141 | 13.7 |
| Q15 | 1 | 185 | 17.9 |
| Q15 | 2 | 275 | 26.6 |
| Q15 | 3 | 291 | 28.2 |
| Q15 | 4 | 119 | 11.5 |
| Q15 | 5 | 44 | 4.3 |
| Q15 | 6 | 118 | 11.4 |
| Q16_1 | 1 | 44 | 4.3 |
| Q16_1 | 2 | 204 | 19.8 |
| Q16_1 | 3 | 246 | 23.8 |
| Q16_1 | 4 | 153 | 14.8 |
| Q16_1 | 5 | 53 | 5.1 |
| Q16_1 | 6 | 29 | 2.8 |
| Q16_1 | NA | 303 | 29.4 |
| Q16_2 | 1 | 39 | 3.8 |
| Q16_2 | 2 | 221 | 21.4 |
| Q16_2 | 3 | 257 | 24.9 |
| Q16_2 | 4 | 140 | 13.6 |
| Q16_2 | 5 | 50 | 4.8 |
| Q16_2 | 6 | 22 | 2.1 |
| Q16_2 | NA | 303 | 29.4 |
| Q16_3 | 1 | 84 | 8.1 |
| Q16_3 | 2 | 234 | 22.7 |
| Q16_3 | 3 | 231 | 22.4 |
| Q16_3 | 4 | 105 | 10.2 |
| Q16_3 | 5 | 54 | 5.2 |
| Q16_3 | 6 | 21 | 2.0 |
| Q16_3 | NA | 303 | 29.4 |
| Q16_4 | 1 | 60 | 5.8 |
| Q16_4 | 2 | 236 | 22.9 |
| Q16_4 | 3 | 245 | 23.7 |
| Q16_4 | 4 | 115 | 11.1 |
| Q16_4 | 5 | 50 | 4.8 |
| Q16_4 | 6 | 23 | 2.2 |
| Q16_4 | NA | 303 | 29.4 |
| Q16_5 | 1 | 20 | 1.9 |
| Q16_5 | 2 | 172 | 16.7 |
| Q16_5 | 3 | 226 | 21.9 |
| Q16_5 | 4 | 211 | 20.4 |
| Q16_5 | 5 | 80 | 7.8 |
| Q16_5 | 6 | 20 | 1.9 |
| Q16_5 | NA | 303 | 29.4 |
| Q17 | 1 | 168 | 16.3 |
| Q17 | 2 | 248 | 24.0 |
| Q17 | 3 | 276 | 26.7 |
| Q17 | 4 | 153 | 14.8 |
| Q17 | 5 | 67 | 6.5 |
| Q17 | 6 | 120 | 11.6 |
| Q18 | 1 | 181 | 17.5 |
| Q18 | 2 | 245 | 23.7 |
| Q18 | 3 | 247 | 23.9 |
| Q18 | 4 | 163 | 15.8 |
| Q18 | 5 | 87 | 8.4 |
| Q18 | 6 | 109 | 10.6 |
| Q19 | 1 | 235 | 22.8 |
| Q19 | 2 | 245 | 23.7 |
| Q19 | 3 | 241 | 23.4 |
| Q19 | 4 | 114 | 11.0 |
| Q19 | 5 | 52 | 5.0 |
| Q19 | 6 | 145 | 14.1 |
| Q20 | 1 | 233 | 22.6 |
| Q20 | 2 | 242 | 23.4 |
| Q20 | 3 | 232 | 22.5 |
| Q20 | 4 | 132 | 12.8 |
| Q20 | 5 | 56 | 5.4 |
| Q20 | 6 | 137 | 13.3 |
| Q21_1 | 1 | 166 | 16.1 |
| Q21_1 | 2 | 191 | 18.5 |
| Q21_1 | 3 | 233 | 22.6 |
| Q21_1 | 4 | 178 | 17.2 |
| Q21_1 | 5 | 102 | 9.9 |
| Q21_1 | 6 | 162 | 15.7 |
| Q21_2 | 1 | 242 | 23.4 |
| Q21_2 | 2 | 186 | 18.0 |
| Q21_2 | 3 | 223 | 21.6 |
| Q21_2 | 4 | 148 | 14.3 |
| Q21_2 | 5 | 80 | 7.8 |
| Q21_2 | 6 | 153 | 14.8 |
| Q21_3 | 1 | 105 | 10.2 |
| Q21_3 | 2 | 186 | 18.0 |
| Q21_3 | 3 | 268 | 26.0 |
| Q21_3 | 4 | 183 | 17.7 |
| Q21_3 | 5 | 116 | 11.2 |
| Q21_3 | 6 | 174 | 16.9 |
| Q21_4 | 1 | 110 | 10.7 |
| Q21_4 | 2 | 174 | 16.9 |
| Q21_4 | 3 | 231 | 22.4 |
| Q21_4 | 4 | 173 | 16.8 |
| Q21_4 | 5 | 148 | 14.3 |
| Q21_4 | 6 | 196 | 19.0 |
| Q21_10 | 1 | 129 | 12.5 |
| Q21_10 | 2 | 211 | 20.4 |
| Q21_10 | 3 | 247 | 23.9 |
| Q21_10 | 4 | 173 | 16.8 |
| Q21_10 | 5 | 87 | 8.4 |
| Q21_10 | 6 | 185 | 17.9 |
| Q21_5 | 1 | 145 | 14.1 |
| Q21_5 | 2 | 219 | 21.2 |
| Q21_5 | 3 | 266 | 25.8 |
| Q21_5 | 4 | 176 | 17.1 |
| Q21_5 | 5 | 114 | 11.0 |
| Q21_5 | 6 | 112 | 10.9 |
| Q21_6 | 1 | 140 | 13.6 |
| Q21_6 | 2 | 220 | 21.3 |
| Q21_6 | 3 | 233 | 22.6 |
| Q21_6 | 4 | 225 | 21.8 |
| Q21_6 | 5 | 112 | 10.9 |
| Q21_6 | 6 | 102 | 9.9 |
| Q21_7 | 1 | 121 | 11.7 |
| Q21_7 | 2 | 215 | 20.8 |
| Q21_7 | 3 | 260 | 25.2 |
| Q21_7 | 4 | 197 | 19.1 |
| Q21_7 | 5 | 126 | 12.2 |
| Q21_7 | 6 | 113 | 10.9 |
| Q21_8 | 1 | 109 | 10.6 |
| Q21_8 | 2 | 205 | 19.9 |
| Q21_8 | 3 | 236 | 22.9 |
| Q21_8 | 4 | 214 | 20.7 |
| Q21_8 | 5 | 161 | 15.6 |
| Q21_8 | 6 | 107 | 10.4 |
| Q21_9 | 1 | 112 | 10.9 |
| Q21_9 | 2 | 184 | 17.8 |
| Q21_9 | 3 | 235 | 22.8 |
| Q21_9 | 4 | 208 | 20.2 |
| Q21_9 | 5 | 191 | 18.5 |
| Q21_9 | 6 | 102 | 9.9 |
| Q22_1 | 1 | 172 | 16.7 |
| Q22_1 | 2 | 318 | 30.8 |
| Q22_1 | 3 | 256 | 24.8 |
| Q22_1 | 4 | 83 | 8.0 |
| Q22_1 | 5 | 34 | 3.3 |
| Q22_1 | 6 | 169 | 16.4 |
| Q22_2 | 1 | 90 | 8.7 |
| Q22_2 | 2 | 353 | 34.2 |
| Q22_2 | 3 | 259 | 25.1 |
| Q22_2 | 4 | 91 | 8.8 |
| Q22_2 | 5 | 65 | 6.3 |
| Q22_2 | 6 | 174 | 16.9 |
| Q22_3 | 1 | 75 | 7.3 |
| Q22_3 | 2 | 317 | 30.7 |
| Q22_3 | 3 | 293 | 28.4 |
| Q22_3 | 4 | 83 | 8.0 |
| Q22_3 | 5 | 75 | 7.3 |
| Q22_3 | 6 | 189 | 18.3 |
| Q22_4 | 1 | 85 | 8.2 |
| Q22_4 | 2 | 343 | 33.2 |
| Q22_4 | 3 | 293 | 28.4 |
| Q22_4 | 4 | 71 | 6.9 |
| Q22_4 | 5 | 53 | 5.1 |
| Q22_4 | 6 | 187 | 18.1 |
| Q22_5 | 1 | 91 | 8.8 |
| Q22_5 | 2 | 251 | 24.3 |
| Q22_5 | 3 | 322 | 31.2 |
| Q22_5 | 4 | 85 | 8.2 |
| Q22_5 | 5 | 57 | 5.5 |
| Q22_5 | 6 | 226 | 21.9 |
| Q22_6 | 1 | 58 | 5.6 |
| Q22_6 | 2 | 274 | 26.6 |
| Q22_6 | 3 | 309 | 29.9 |
| Q22_6 | 4 | 47 | 4.6 |
| Q22_6 | 5 | 48 | 4.7 |
| Q22_6 | 6 | 296 | 28.7 |
| Q22_7 | 1 | 87 | 8.4 |
| Q22_7 | 2 | 411 | 39.8 |
| Q22_7 | 3 | 257 | 24.9 |
| Q22_7 | 4 | 77 | 7.5 |
| Q22_7 | 5 | 42 | 4.1 |
| Q22_7 | 6 | 158 | 15.3 |
| Q22_8 | 1 | 64 | 6.2 |
| Q22_8 | 2 | 291 | 28.2 |
| Q22_8 | 3 | 344 | 33.3 |
| Q22_8 | 4 | 81 | 7.8 |
| Q22_8 | 5 | 62 | 6.0 |
| Q22_8 | 6 | 190 | 18.4 |
| Q22_9 | 1 | 101 | 9.8 |
| Q22_9 | 2 | 240 | 23.3 |
| Q22_9 | 3 | 307 | 29.7 |
| Q22_9 | 4 | 171 | 16.6 |
| Q22_9 | 5 | 50 | 4.8 |
| Q22_9 | 6 | 163 | 15.8 |
| Q22_10 | 1 | 76 | 7.4 |
| Q22_10 | 2 | 298 | 28.9 |
| Q22_10 | 3 | 310 | 30.0 |
| Q22_10 | 4 | 122 | 11.8 |
| Q22_10 | 5 | 67 | 6.5 |
| Q22_10 | 6 | 159 | 15.4 |
| Q22_11 | 1 | 59 | 5.7 |
| Q22_11 | 2 | 218 | 21.1 |
| Q22_11 | 3 | 293 | 28.4 |
| Q22_11 | 4 | 156 | 15.1 |
| Q22_11 | 5 | 97 | 9.4 |
| Q22_11 | 6 | 209 | 20.3 |
| Q23_1 | 1 | 440 | 42.6 |
| Q23_1 | 2 | 356 | 34.5 |
| Q23_1 | 3 | 236 | 22.9 |
| Q23_2 | 1 | 243 | 23.5 |
| Q23_2 | 2 | 113 | 10.9 |
| Q23_2 | NA | 676 | 65.5 |
| Q24_1 | 1 | 464 | 45.0 |
| Q24_1 | 2 | 299 | 29.0 |
| Q24_1 | 3 | 269 | 26.1 |
| Q24_2 | 1 | 184 | 17.8 |
| Q24_2 | 2 | 115 | 11.1 |
| Q24_2 | NA | 733 | 71.0 |
| Q25 | 1 | 521 | 50.5 |
| Q25 | 2 | 342 | 33.1 |
| Q25 | 3 | 169 | 16.4 |
| Q27 | 1 | 144 | 14.0 |
| Q27 | 2 | 248 | 24.0 |
| Q27 | 3 | 438 | 42.4 |
| Q27 | 4 | 142 | 13.8 |
| Q27 | 5 | 60 | 5.8 |
| workexperience | 0 | 719 | 69.7 |
| workexperience | 1 | 313 | 30.3 |
| AgeGroup | 18-29 | 199 | 19.3 |
| AgeGroup | 30-39 | 185 | 17.9 |
| AgeGroup | 40-49 | 146 | 14.1 |
| AgeGroup | 50-59 | 220 | 21.3 |
| AgeGroup | 60-69 | 149 | 14.4 |
| AgeGroup | 70-79 | 109 | 10.6 |
| AgeGroup | 80+ | 17 | 1.6 |
| AgeGroup | NA | 7 | 0.7 |
| education_recode | 1 | 42 | 4.1 |
| education_recode | 2 | 351 | 34.0 |
| education_recode | 3 | 375 | 36.3 |
| education_recode | 4 | 264 | 25.6 |
These data are meant for regression analyses. Here, we define “Don’t know” as missing, we reverse scales so that our results are easier to interpret, and we prepare data for different types of models (linear and logistic regressions etc.).
# Define 'don't know' as missing
data_clean <- data %>%
mutate(
Q4 = ifelse(Q4 == 6, NA, Q4),
Q6 = ifelse(Q6 == 6, NA, Q6),
Q9 = ifelse(Q9 == 6, NA, Q9),
Q10 = ifelse(Q10 == 6, NA, Q10),
Q11 = ifelse(Q11 == 6, NA, Q11),
Q13 = ifelse(Q13 == 6, NA, Q13),
Q14 = ifelse(Q14 == 6, NA, Q14),
Q15 = ifelse(Q15 == 6, NA, Q15),
Q17 = ifelse(Q17 == 6, NA, Q17),
Q18 = ifelse(Q18 == 6, NA, Q18),
Q19 = ifelse(Q19 == 6, NA, Q19),
Q20 = ifelse(Q20 == 6, NA, Q20),
Q27 = ifelse(Q27 == 6, NA, Q27)
)
## Reverse scales on certain variables
data_clean$reversed_technology <- max(data_clean$Q9) + 1 - data_clean$Q9
# data_clean$reversed_industry <- max(data_clean$Q4) + 1 - data_clean$Q4
data_clean$Q10 <- as.factor(data_clean$Q10)
data_clean <- data_clean %>%
mutate(
Q11 = ifelse(is.na(Q11), NA, Q11),
reversed_perception1 = 5 + 1 - Q11
)
data_clean$AgeGroup <- as.factor(data_clean$AgeGroup)
data_clean$education_recode <- as.factor(data_clean$education_recode)
data_clean$Q10 <- as.factor(data_clean$Q10)
# Subset the data to only include women
women_df <- subset(data_clean, data_clean$resp_gender == "Women")
# Export data for comparative analysis
# merge_data <- data_clean %>%
# select(reversed_perception1, resp_gender, AgeGroup, workexperience,
# Q4, Q6, Q7, Q8, reversed_technology, Q10, Q13,
# Q14, Q15, Q17, Q18, Q19, Q20, Q27, Q22_1, Q22_2, Q22_3, Q22_4,
# Q22_5, Q22_6, Q22_7, Q22_8, Q22_9, Q22_10, Q22_11, Q21_1, Q21_2,
# Q21_3, Q21_4, Q21_5, Q21_6, Q21_7, Q21_8, Q21_9, Q21_10)
#
# # Export data set to excel
# write_xlsx(merge_data, "merge_data_norway.xlsx")
# # Add unique id
# data$id <- 1:nrow(data)
#
# # Select variables
# data_benefits <- data %>%
# select(id, Q12_1)
#
# data_concerns <- data %>%
# select(id, Q12_2)
#
# # Export data set to excel
# write_xlsx(data_benefits, "data_benefits.xlsx")
# write_xlsx(data_concerns, "data_concerns.xlsx")
## Table showing knowledge by gender
prop.table(table(data$resp_gender, data$Q10), margin = 1)
##
## 1 2 3
## Men 0.05882353 0.55028463 0.39089184
## Women 0.28316832 0.58811881 0.12871287
## Plot
ggplot(data, aes(x = as.factor(resp_gender), fill = as.factor(Q10))) +
geom_bar(position = "fill") + # Normalize to proportions
scale_fill_manual(
values = c("blue", "orange", "red"),
labels = c(
"Never heard of CCS",
"Heard of, but know little",
"Heard of and know about"
)
) +
labs(x = "Gender", y = "Proportion", fill = "Knowledge Level") +
theme_minimal()
ggplot(data, aes(x = as.factor(Q10), fill = as.factor(Q10))) +
geom_bar(aes(y = after_stat(count / sum(count))), position = "dodge") +
facet_wrap( ~ resp_gender) + # Separate plots for each gender
scale_fill_manual(
values = c("blue", "orange", "red"),
labels = c("Low", "Medium", "High")
) +
labs(x = "Knowledge Level", y = "Proportion", fill = "Knowledge Level") +
theme_minimal()
# First perception question
## Create a binary variable: 1 if "Don't know", 0 otherwise
data <- data %>%
mutate(dont_know_Q11 = ifelse(Q11 == 6, 1, 0))
## Table showing knowledge by don't know
prop.table(table(data$resp_gender, data$dont_know_Q11), margin = 1)
##
## 0 1
## Men 0.91840607 0.08159393
## Women 0.68316832 0.31683168
## Plot
ggplot(data, aes(x = as.factor(resp_gender), fill = as.factor(dont_know_Q11))) +
geom_bar(position = "dodge") +
scale_fill_manual(values = c("blue", "red"), labels = c("Other", "Don't know")) +
labs(x = "Gender", y = "proportion", fill = "Response") +
theme_minimal()
# Age distribution
#age <- ggplot(data, aes(x = Age_1)) +
# geom_histogram(binwidth = 5, fill = "skyblue", color = "black") +
# labs(title = "Age Distribution", x = "Age", y = "Count") +
# theme_minimal()
#age
ggplot(data, aes(x = as.factor(AgeGroup), fill = as.factor(Q10))) +
geom_bar(position = "fill") +
scale_fill_manual(
values = c("blue", "orange", "red"),
labels = c(
"Never heard of CCS",
"Heard of, but know little",
"Heard of and know about"
)
) +
labs(x = "Age", y = "Proportion", fill = "Knowledge Level") +
theme_minimal()
# By gender and age
ggplot(data, aes(x = as.factor(Q10), fill = as.factor(resp_gender))) +
geom_bar(aes(y = after_stat(count / sum(count))), position = "dodge") +
facet_wrap( ~ AgeGroup) +
labs(x = "Knowledge Level", y = "Proportion", fill = "Gender") +
theme_minimal()
# First perception question
perception1 <- ggplot(data, aes(
x = factor(Q11),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Very positive",
"2" = "Positive",
"3" = "Neutral",
"4" = "Negative",
"5" = "Very negative",
"6" = "Don't know"
)
) +
labs(title = "CCS perception", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
perception1
# Concerned about CCS
concern1 <- ggplot(data, aes(
x = factor(Q13),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
geom_bar(fill = "skyblue", color = "black") +
labs(title = "Concern about CCS", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concern1
# Concerned about capture
concerncapture <- ggplot(data, aes(
x = factor(Q14),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about capture", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concerncapture
# Concerned about transport
concerntransport <- ggplot(data, aes(
x = factor(Q15),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about transport", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concerntransport
# Concerned about transport by train
concerntransporttrain <- ggplot(data %>% filter(!is.na(Q16_1)), aes(
x = factor(Q16_1),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about transport by train", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concerntransporttrain
# Concerned about transport by ship
concerntransportship <- ggplot(data %>% filter(!is.na(Q16_2)), aes(
x = factor(Q16_2),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about transport by ship", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concerntransportship
# Concerned about transport by offshore pipeline
concerntransportoffhorepipeline <- ggplot(data %>% filter(!is.na(Q16_3)), aes(
x = factor(Q16_3),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about transport by offshore pipeline", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concerntransportoffhorepipeline
# Concerned about transport by onshore pipeline
concerntransportonhorepipeline <- ggplot(data %>% filter(!is.na(Q16_4)), aes(
x = factor(Q16_4),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about transport by onshore pipeline", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concerntransportonhorepipeline
# Concerned about transport by truck/tanker
concerntransporttruck <- ggplot(data %>% filter(!is.na(Q16_5)), aes(
x = factor(Q16_5),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about transport by truck/tanker", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concerntransporttruck
# concerned about storage (onshore)
concernstorageonshore <- ggplot(data, aes(
x = factor(Q17),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about onshore storage", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concernstorageonshore
# concerned about storage (offshore)
concernstorageoffshore <- ggplot(data, aes(
x = factor(Q18),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about offshore storage", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concernstorageoffshore
# concerned about monitoring (onshore)
concernmonitoringonshore <- ggplot(data, aes(
x = factor(Q19),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about onshore monitoring", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concernmonitoringonshore
# concerned about monitoring (offshore)
concernmonitoringoffshore <- ggplot(data, aes(
x = factor(Q20),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "very concerned",
"6" = "Don't know"
)
) +
labs(title = "Concern about offshore monitoring", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
concernmonitoringoffshore
# Final support question
support <- ggplot(data, aes(
x = factor(Q27),
y = after_stat(prop),
group = 1
)) +
geom_bar(fill = "skyblue", color = "black") +
scale_x_discrete(
labels = c(
"1" = "I do not support it at all",
"2" = "I support it to a small extent",
"3" = "I support it to some extent",
"4" = "I support it to a great extent",
"5" = "I fully support it"
)
) +
labs(title = "Support for implementing CCS in Norway", x = "", y = "Proportion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
support
battery <- data %>% select(Q14:Q15, Q17:Q20)
battery <- data %>%
select(Q14:Q15, Q17:Q20) %>%
mutate(across(everything(), as.factor))
battery_long <- battery %>%
pivot_longer(cols = everything(),
names_to = "Question",
values_to = "Response")
battery_labels <- c(
"Q13" = "Concern CCS",
"Q14" = "Concern capture",
"Q15" = "Concern transport",
"Q17" = "Concern storage onshore",
"Q18" = "Concern storage offshore",
"Q19" = "Concern monitoring onshore",
"Q20" = "Concern monitoring offshore"
)
battery_response_labels <- c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "Very concerned",
"6" = "Don't know"
)
# Stacked bar plot
# ggplot(battery_long, aes(x = Question, fill = as.factor(Response))) +
# geom_bar(position = "fill") +
# scale_fill_brewer(palette = "Set2", name = "Response", labels = battery_response_labels) +
# scale_x_discrete(labels = battery_labels) +
# labs(title = "CCS concerns", x = "", y = "Proportion") +
# theme_minimal() +
# coord_flip() +
# theme(axis.text.y = element_text(angle = 0, hjust = 1))
## counts + percent
battery_plotdata <- battery_long %>%
count(Question, Response) %>% # n = count
group_by(Question) %>%
mutate(percent = 100 * n / sum(n)) %>% # percent (0-100)
ungroup()
# Plot
ggplot(battery_plotdata, aes(x = Question, y = n, fill = Response)) +
geom_col(position = "fill", width = 0.8) +
geom_text(aes(label = paste0(round(percent), "%")),
position = position_fill(vjust = 0.5),
size = 3) +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2", name = "Response",
labels = battery_response_labels) +
scale_x_discrete(labels = battery_labels) +
labs(title = "CCS concerns", x = "", y = "Percentage") +
theme_minimal() +
coord_flip() +
theme(axis.text.y = element_text(angle = 0, hjust = 1))
battery_transport <- data %>%
select(Q16_1:Q16_5) %>%
mutate(across(everything(), as.factor))
battery_transport_long <- battery_transport %>%
pivot_longer(cols = everything(),
names_to = "Question",
values_to = "Response")
battery_transport_labels <- c(
"Q16_1" = "Train",
"Q16_2" = "Ship",
"Q16_3" = "Offshore pipeline",
"Q16_4" = "Onshore pipeline",
"Q16_5" = "Truck/tanker truck"
)
battery_response_labels <- c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "Very concerned",
"6" = "Don't know"
)
## counts + percent
battery_transport_plotdata <- battery_transport_long %>%
count(Question, Response) %>% # n = count
group_by(Question) %>%
mutate(percent = 100 * n / sum(n)) %>% # percent (0-100)
ungroup()
## plot
battery_transport_plotdata %>%
filter(!is.na(Response)) %>%
ggplot(aes(x = Question, y = n, fill = Response)) +
geom_col(position = "fill", width = 0.8) +
geom_text(aes(label = paste0(round(percent), "%")),
position = position_fill(vjust = 0.5),
size = 3) +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2", name = "Response",
labels = battery_response_labels) +
scale_x_discrete(labels = battery_transport_labels) +
labs(title = "Concerns about modes of CO2 transport", x = "", y = "Percentage") +
theme_minimal() +
coord_flip() +
theme(axis.text.y = element_text(angle = 0, hjust = 1))
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.4 ✔ tibble 3.2.1
## ✔ readr 2.1.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ psych::%+%() masks ggplot2::%+%()
## ✖ scales::alpha() masks psych::alpha(), ggplot2::alpha()
## ✖ NLP::annotate() masks ggplot2::annotate()
## ✖ readr::col_factor() masks scales::col_factor()
## ✖ scales::discard() masks purrr::discard()
## ✖ dplyr::filter() masks stats::filter()
## ✖ kableExtra::group_rows() masks dplyr::group_rows()
## ✖ dplyr::lag() masks stats::lag()
## ✖ tibble::view() masks summarytools::view()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(scales)
# Select battery questions
battery1 <- data %>%
select(c("Q21_1","Q21_2","Q21_3","Q21_4","Q21_5",
"Q21_6","Q21_7","Q21_8","Q21_9","Q21_10"))
# Convert to long format
battery1_long <- battery1 %>%
pivot_longer(
cols = everything(),
names_to = "Question",
values_to = "Response"
)
battery1_response_labels <- c(
"1" = "Not concerned at all",
"2" = "Slightly concerned",
"3" = "Somewhat concerned",
"4" = "Moderately concerned",
"5" = "Very concerned",
"6" = "Don't know"
)
# Labels
battery1_labels <- c(
"Q21_1" = "Comes at the expense of renewable energies",
"Q21_2" = "Leads to prolonged use of fossil energy sources",
"Q21_3" = "Will not deliver the envisioned emissions reduction",
"Q21_4" = "Will not be economically beneficial",
"Q21_5" = "Leakage from the capture process",
"Q21_6" = "Leakage during transport ",
"Q21_7" = "Leakage during injection for underground storage",
"Q21_8" = "Leakage from the storage site",
"Q21_9" = "Leakage contaminating groundwater",
"Q21_10" = "Tremors because of CO2 storage activities"
)
# Clean + label responses
battery1_long <- battery1_long %>%
filter(!is.na(Response)) %>%
mutate(
Question = factor(Question, levels = names(battery1_labels)),
Response = recode(as.character(Response), !!!battery1_response_labels),
Response = factor(
Response,
levels = unname(battery1_response_labels)
)
)
# Calculate counts and percentages
battery1_plotdata <- battery1_long %>%
count(Question, Response) %>%
group_by(Question) %>%
mutate(percent = n / sum(n)) %>%
ungroup()
# Calculate counts and percentages
battery1_plotdata <- battery1_plotdata %>%
group_by(Question) %>%
arrange(Response) %>%
mutate(label_pos = cumsum(percent) - percent/2) %>%
ungroup()
# Plot
ggplot(battery1_plotdata, aes(x = Question, y = percent, fill = Response)) +
geom_col(width = 0.8) +
geom_text(
aes(label = paste0(round(percent * 100), "%")),
position = position_stack(vjust = 0.5),
size = 2.5
) +
scale_y_continuous(labels = percent_format()) +
scale_fill_brewer(palette = "Set2", name = "Response") +
scale_x_discrete(labels = battery1_labels) +
labs(
title = "CCS Concerns",
x = "",
y = "Percentage"
) +
coord_flip() +
theme_minimal() +
theme(axis.text.y = element_text(hjust = 1))
library(tidyverse)
library(scales)
# Select battery questions
battery2 <- data %>%
select(c("Q22_1", "Q22_2", "Q22_3", "Q22_4", "Q22_5", "Q22_6",
"Q22_7", "Q22_8", "Q22_9", "Q22_10", "Q22_11"))
# Convert to long format
battery2_long <- battery2 %>%
pivot_longer(
cols = everything(),
names_to = "Question",
values_to = "Response"
)
battery2_response_labels <- c(
"1" = "Completely agree",
"2" = "Agree",
"3" = "Neither agree nor disagree",
"4" = "Disagree",
"5" = "Completely disagree",
"6" = "Don't know"
)
# Labels
battery2_labels <- c(
"Q22_1" = "Only addition to emissions reduction efforts",
"Q22_2" = "Important to reduce CO2-levels in the atmosphere",
"Q22_3" = "Needed to achieve internationally agreed climate goals",
"Q22_4" = "Necessary to offset hard to abate CO2 emissions",
"Q22_5" = "Compensation for people living near CCS",
"Q22_6" = "Important to capture emissions from blue hydrogen",
"Q22_7" = "CCS projects will lead to new jobs",
"Q22_8" = "Important to sustain European industrial activities",
"Q22_9" = "Only store in the country it is captured in",
"Q22_10" = "Store CO2 from countries with less storage",
"Q22_11" = "CO2 market should be open to import and export"
)
# Clean + label responses
battery2_long <- battery2_long %>%
filter(!is.na(Response)) %>%
mutate(
Question = factor(Question, levels = names(battery2_labels)),
Response = recode(as.character(Response), !!!battery2_response_labels),
Response = factor(
Response,
levels = unname(battery2_response_labels)
)
)
# Calculate counts and percentages
battery2_plotdata <- battery2_long %>%
count(Question, Response) %>%
group_by(Question) %>%
mutate(percent = n / sum(n)) %>%
ungroup()
# Calculate counts and percentages
battery2_plotdata <- battery2_plotdata %>%
group_by(Question) %>%
arrange(Response) %>%
mutate(label_pos = cumsum(percent) - percent/2) %>%
ungroup()
# Plot
ggplot(battery2_plotdata, aes(x = Question, y = percent, fill = Response)) +
geom_col(width = 0.8) +
geom_text(
aes(label = paste0(round(percent * 100), "%")),
position = position_stack(vjust = 0.5),
size = 2
) +
scale_y_continuous(labels = percent_format()) +
scale_fill_brewer(palette = "Set2", name = "Response") +
scale_x_discrete(labels = battery2_labels) +
labs(
title = "CCS statements",
x = "",
y = "Percentage"
) +
coord_flip() +
theme_minimal() +
theme(axis.text.y = element_text(hjust = 1))
model1 <-
lm(reversed_perception1 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model1)
##
## Call:
## lm(formula = reversed_perception1 ~ resp_gender + AgeGroup +
## education_recode + workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.8160 -0.4571 0.1148 0.5257 2.6128
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.739043 0.247164 7.036 4.24e-12 ***
## resp_genderWomen -0.174867 0.062987 -2.776 0.00563 **
## AgeGroup30-39 0.135812 0.097106 1.399 0.16232
## AgeGroup40-49 -0.015714 0.102333 -0.154 0.87800
## AgeGroup50-59 0.109090 0.089208 1.223 0.22174
## AgeGroup60-69 0.007155 0.100357 0.071 0.94318
## AgeGroup70-79 0.133616 0.107853 1.239 0.21575
## AgeGroup80+ -0.243251 0.211089 -1.152 0.24952
## education_recode2 -0.075975 0.145788 -0.521 0.60242
## education_recode3 0.100053 0.145263 0.689 0.49117
## education_recode4 0.134323 0.149057 0.901 0.36778
## workexperience 0.128194 0.062432 2.053 0.04036 *
## Q4 0.002663 0.025110 0.106 0.91555
## Q6 0.235032 0.025363 9.267 < 2e-16 ***
## Q7 -0.030226 0.014501 -2.084 0.03744 *
## Q8 -0.009932 0.015720 -0.632 0.52767
## reversed_technology 0.299709 0.032742 9.154 < 2e-16 ***
## Q102 0.128238 0.098878 1.297 0.19503
## Q103 -0.003001 0.108762 -0.028 0.97799
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7948 on 803 degrees of freedom
## (210 observations deleted due to missingness)
## Multiple R-squared: 0.2443, Adjusted R-squared: 0.2274
## F-statistic: 14.42 on 18 and 803 DF, p-value: < 2.2e-16
# Plot coefficients
plot_summs(
model1,
scale = TRUE,
coefs = c(
"Women" = "resp_genderWomen",
"Age 30-39" = "AgeGroup30-39",
"Age 40-49" = "AgeGroup40-49",
"Age 50-59" = "AgeGroup50-59",
"Age 60-69" = "AgeGroup60-69",
"Age 70-79" = "AgeGroup70-79",
"Age 80+" = "AgeGroup80+",
"Upper secondary schoool" = "education_recode2",
"Undergraduate degree" = "education_recode3",
"Higher degree" = "education_recode4",
"Work experience" = "workexperience",
"Industrial area" = "Q4",
"Concerned about climate change" = "Q6",
"Left - right" = "Q7",
"Liberal - conservative" = "Q8",
"Climate solved by technology" = "reversed_technology",
"CCS Knowledge medium" = "Q102",
"CCS knowledge high" = "Q103"
)
)
# Women only
model1W <-
lm(reversed_perception1 ~ AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = women_df)
summary(model1W)
##
## Call:
## lm(formula = reversed_perception1 ~ AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = women_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.59627 -0.37715 0.01425 0.49302 1.72754
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.94722 0.31602 6.162 2.15e-09 ***
## AgeGroup30-39 -0.01930 0.11026 -0.175 0.861190
## AgeGroup40-49 -0.24030 0.12868 -1.867 0.062747 .
## AgeGroup50-59 -0.07871 0.11020 -0.714 0.475613
## AgeGroup60-69 0.20141 0.16017 1.257 0.209508
## AgeGroup70-79 0.27162 0.17053 1.593 0.112190
## AgeGroup80+ -0.90224 0.41500 -2.174 0.030426 *
## education_recode2 -0.22031 0.23572 -0.935 0.350681
## education_recode3 0.04665 0.23428 0.199 0.842283
## education_recode4 -0.01177 0.23765 -0.050 0.960547
## workexperience 0.15055 0.09133 1.648 0.100243
## Q4 -0.01556 0.03610 -0.431 0.666814
## Q6 0.12148 0.03627 3.349 0.000907 ***
## Q7 -0.02779 0.02119 -1.312 0.190604
## Q8 0.01510 0.02396 0.630 0.529202
## reversed_technology 0.29647 0.04611 6.430 4.62e-10 ***
## Q102 0.26477 0.10507 2.520 0.012223 *
## Q103 0.25039 0.13492 1.856 0.064383 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6868 on 322 degrees of freedom
## (165 observations deleted due to missingness)
## Multiple R-squared: 0.252, Adjusted R-squared: 0.2126
## F-statistic: 6.383 on 17 and 322 DF, p-value: 5.704e-13
# Run the linear regression model
model2 <-
lm(Q13 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model2)
##
## Call:
## lm(formula = Q13 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.1327 -0.6673 -0.0043 0.5896 3.2130
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.612853 0.307822 8.488 < 2e-16 ***
## resp_genderWomen 0.199465 0.079425 2.511 0.01221 *
## AgeGroup30-39 -0.094236 0.119160 -0.791 0.42926
## AgeGroup40-49 -0.044588 0.123845 -0.360 0.71891
## AgeGroup50-59 -0.198715 0.113034 -1.758 0.07911 .
## AgeGroup60-69 -0.118479 0.126963 -0.933 0.35100
## AgeGroup70-79 -0.143112 0.134889 -1.061 0.28901
## AgeGroup80+ 0.691949 0.270051 2.562 0.01057 *
## education_recode2 0.108012 0.189306 0.571 0.56844
## education_recode3 -0.042103 0.188089 -0.224 0.82293
## education_recode4 -0.004550 0.193344 -0.024 0.98123
## workexperience -0.038903 0.078723 -0.494 0.62132
## Q4 -0.003354 0.031033 -0.108 0.91395
## Q6 0.103258 0.031892 3.238 0.00125 **
## Q7 0.008557 0.017935 0.477 0.63340
## Q8 0.010884 0.019113 0.569 0.56921
## reversed_technology -0.193199 0.040691 -4.748 2.41e-06 ***
## Q102 0.045465 0.112981 0.402 0.68748
## Q103 0.235179 0.130494 1.802 0.07187 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.022 on 847 degrees of freedom
## (166 observations deleted due to missingness)
## Multiple R-squared: 0.06542, Adjusted R-squared: 0.04555
## F-statistic: 3.294 on 18 and 847 DF, p-value: 4.549e-06
# Plot coefficients
plot_summs(
model2,
coefs = c(
"Women" = "resp_genderWomen",
"Age 30-39" = "AgeGroup30-39",
"Age 40-49" = "AgeGroup40-49",
"Age 50-59" = "AgeGroup50-59",
"Age 60-69" = "AgeGroup60-69",
"Age 70-79" = "AgeGroup70-79",
"Age 80+" = "AgeGroup80+",
"Upper secondary schoool" = "education_recode2",
"Undergraduate degree" = "education_recode3",
"Higher degree" = "education_recode4",
"Work experience" = "workexperience",
"Industrial area" = "Q4",
"Concerned about climate change" = "Q6",
"Left - right" = "Q7",
"Liberal - conservative" = "Q8",
"Climate solved by technology" = "reversed_technology",
"CCS Knowledge medium" = "Q102",
"CCS knowledge high" = "Q103"
)
)
# Women only
model2W <-
lm(Q13 ~ AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = women_df)
summary(model2W)
##
## Call:
## lm(formula = Q13 ~ AgeGroup + education_recode + workexperience +
## Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10, data = women_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.91375 -0.63184 0.09749 0.56204 2.67309
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.4162357 0.3979661 6.071 3.10e-09 ***
## AgeGroup30-39 0.1261377 0.1365273 0.924 0.35613
## AgeGroup40-49 0.1384184 0.1497492 0.924 0.35590
## AgeGroup50-59 0.0996115 0.1411986 0.705 0.48095
## AgeGroup60-69 0.1732812 0.2074517 0.835 0.40409
## AgeGroup70-79 -0.2043851 0.2169947 -0.942 0.34685
## AgeGroup80+ 1.5357132 0.5523584 2.780 0.00570 **
## education_recode2 -0.1603505 0.2953144 -0.543 0.58746
## education_recode3 -0.2587441 0.2930646 -0.883 0.37786
## education_recode4 -0.1518724 0.2980436 -0.510 0.61066
## workexperience 0.0402852 0.1162773 0.346 0.72919
## Q4 0.0314377 0.0431813 0.728 0.46704
## Q6 0.2244142 0.0447227 5.018 8.07e-07 ***
## Q7 -0.0004145 0.0253495 -0.016 0.98696
## Q8 -0.0028056 0.0272606 -0.103 0.91808
## reversed_technology -0.1702560 0.0582133 -2.925 0.00366 **
## Q102 0.0158463 0.1226341 0.129 0.89726
## Q103 -0.0733328 0.1696008 -0.432 0.66571
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9196 on 376 degrees of freedom
## (111 observations deleted due to missingness)
## Multiple R-squared: 0.1125, Adjusted R-squared: 0.07234
## F-statistic: 2.803 on 17 and 376 DF, p-value: 0.0001886
# Run the linear regression model
model3 <-
lm(Q14 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model3)
##
## Call:
## lm(formula = Q14 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.9434 -0.8998 -0.0959 0.7219 3.3031
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.696383 0.310413 8.686 < 2e-16 ***
## resp_genderWomen 0.175761 0.080709 2.178 0.029697 *
## AgeGroup30-39 -0.283663 0.119071 -2.382 0.017420 *
## AgeGroup40-49 -0.214622 0.124784 -1.720 0.085801 .
## AgeGroup50-59 -0.432121 0.114495 -3.774 0.000172 ***
## AgeGroup60-69 -0.201500 0.128851 -1.564 0.118224
## AgeGroup70-79 -0.276979 0.137545 -2.014 0.044347 *
## AgeGroup80+ 0.266414 0.285154 0.934 0.350419
## education_recode2 0.022687 0.194209 0.117 0.907032
## education_recode3 -0.094934 0.193084 -0.492 0.623077
## education_recode4 0.026943 0.198424 0.136 0.892021
## workexperience 0.045319 0.080171 0.565 0.572028
## Q4 -0.027561 0.031569 -0.873 0.382878
## Q6 0.083018 0.032182 2.580 0.010053 *
## Q7 0.007768 0.018232 0.426 0.670165
## Q8 0.050025 0.019537 2.560 0.010622 *
## reversed_technology -0.185783 0.041320 -4.496 7.86e-06 ***
## Q102 -0.131697 0.112282 -1.173 0.241151
## Q103 -0.082289 0.130108 -0.632 0.527252
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.049 on 865 degrees of freedom
## (148 observations deleted due to missingness)
## Multiple R-squared: 0.0689, Adjusted R-squared: 0.04953
## F-statistic: 3.556 on 18 and 865 DF, p-value: 8.58e-07
# Plot coefficients
plot_summs(
model3,
coefs = c(
"Women" = "resp_genderWomen",
"Age 30-39" = "AgeGroup30-39",
"Age 40-49" = "AgeGroup40-49",
"Age 50-59" = "AgeGroup50-59",
"Age 60-69" = "AgeGroup60-69",
"Age 70-79" = "AgeGroup70-79",
"Age 80+" = "AgeGroup80+",
"Upper secondary schoool" = "education_recode2",
"Undergraduate degree" = "education_recode3",
"Higher degree" = "education_recode4",
"Work experience" = "workexperience",
"Industrial area" = "Q4",
"Concerned about climate change" = "Q6",
"Left - right" = "Q7",
"Liberal - conservative" = "Q8",
"Climate solved by technology" = "reversed_technology",
"CCS Knowledge medium" = "Q102",
"CCS knowledge high" = "Q103"
)
)
# Women only
model3W <-
lm(Q14 ~ AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = women_df)
summary(model3W)
##
## Call:
## lm(formula = Q14 ~ AgeGroup + education_recode + workexperience +
## Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10, data = women_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.99635 -0.66900 0.04172 0.67642 2.98392
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.1721191 0.4208567 5.161 3.92e-07 ***
## AgeGroup30-39 0.0279361 0.1414714 0.197 0.84356
## AgeGroup40-49 0.0963380 0.1560945 0.617 0.53748
## AgeGroup50-59 -0.0839014 0.1471792 -0.570 0.56896
## AgeGroup60-69 -0.0656511 0.2115321 -0.310 0.75645
## AgeGroup70-79 -0.3754619 0.2278801 -1.648 0.10023
## AgeGroup80+ 1.1075128 0.7102084 1.559 0.11971
## education_recode2 0.0916475 0.3275792 0.280 0.77980
## education_recode3 -0.0773178 0.3247148 -0.238 0.81192
## education_recode4 0.0351285 0.3297705 0.107 0.91522
## workexperience 0.0895396 0.1211994 0.739 0.46049
## Q4 -0.0060302 0.0453775 -0.133 0.89435
## Q6 0.1831053 0.0460116 3.980 8.23e-05 ***
## Q7 0.0008891 0.0261298 0.034 0.97287
## Q8 0.0555353 0.0282428 1.966 0.04997 *
## reversed_technology -0.1891286 0.0590227 -3.204 0.00147 **
## Q102 -0.0256282 0.1251488 -0.205 0.83785
## Q103 -0.0583819 0.1740794 -0.335 0.73752
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9751 on 390 degrees of freedom
## (97 observations deleted due to missingness)
## Multiple R-squared: 0.08131, Adjusted R-squared: 0.04126
## F-statistic: 2.03 on 17 and 390 DF, p-value: 0.009173
# Run the linear regression model
model4 <-
lm(Q15 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model4)
##
## Call:
## lm(formula = Q15 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.17448 -0.77457 -0.07267 0.64156 3.03775
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.76565 0.31558 8.764 < 2e-16 ***
## resp_genderWomen 0.21695 0.08138 2.666 0.007815 **
## AgeGroup30-39 -0.37017 0.12050 -3.072 0.002191 **
## AgeGroup40-49 -0.39049 0.12692 -3.077 0.002158 **
## AgeGroup50-59 -0.59354 0.11526 -5.150 3.22e-07 ***
## AgeGroup60-69 -0.36884 0.12895 -2.860 0.004331 **
## AgeGroup70-79 -0.29736 0.13937 -2.134 0.033144 *
## AgeGroup80+ 0.14615 0.28158 0.519 0.603869
## education_recode2 -0.09696 0.19725 -0.492 0.623152
## education_recode3 -0.13656 0.19618 -0.696 0.486565
## education_recode4 -0.07907 0.20168 -0.392 0.695132
## workexperience -0.01820 0.08063 -0.226 0.821514
## Q4 0.01873 0.03174 0.590 0.555287
## Q6 0.12239 0.03239 3.778 0.000168 ***
## Q7 0.01630 0.01842 0.885 0.376459
## Q8 0.01426 0.01971 0.723 0.469568
## reversed_technology -0.14629 0.04163 -3.514 0.000464 ***
## Q102 -0.03550 0.11227 -0.316 0.751952
## Q103 -0.04563 0.13069 -0.349 0.727073
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.068 on 888 degrees of freedom
## (125 observations deleted due to missingness)
## Multiple R-squared: 0.07668, Adjusted R-squared: 0.05797
## F-statistic: 4.097 on 18 and 888 DF, p-value: 2.534e-08
# Plot coefficients
plot_summs(
model4,
coefs = c(
"Women" = "resp_genderWomen",
"Age 30-39" = "AgeGroup30-39",
"Age 40-49" = "AgeGroup40-49",
"Age 50-59" = "AgeGroup50-59",
"Age 60-69" = "AgeGroup60-69",
"Age 70-79" = "AgeGroup70-79",
"Age 80+" = "AgeGroup80+",
"Upper secondary schoool" = "education_recode2",
"Undergraduate degree" = "education_recode3",
"Higher degree" = "education_recode4",
"Work experience" = "workexperience",
"Industrial area" = "Q4",
"Concerned about climate change" = "Q6",
"Left - right" = "Q7",
"Liberal - conservative" = "Q8",
"Climate solved by technology" = "reversed_technology",
"CCS Knowledge medium" = "Q102",
"CCS knowledge high" = "Q103"
)
)
# Women only
model4W <-
lm(Q15 ~ AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = women_df)
summary(model4W)
##
## Call:
## lm(formula = Q15 ~ AgeGroup + education_recode + workexperience +
## Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10, data = women_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.18132 -0.69758 0.06998 0.62470 2.73031
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.103989 0.432191 4.868 1.61e-06 ***
## AgeGroup30-39 -0.060875 0.141164 -0.431 0.666528
## AgeGroup40-49 -0.047000 0.159085 -0.295 0.767812
## AgeGroup50-59 -0.162090 0.147440 -1.099 0.272259
## AgeGroup60-69 -0.152980 0.204714 -0.747 0.455322
## AgeGroup70-79 -0.186716 0.227862 -0.819 0.413024
## AgeGroup80+ 0.977974 0.593756 1.647 0.100310
## education_recode2 0.203425 0.331258 0.614 0.539493
## education_recode3 0.200422 0.329421 0.608 0.543258
## education_recode4 0.273028 0.334027 0.817 0.414187
## workexperience 0.065929 0.120032 0.549 0.583125
## Q4 0.027402 0.044888 0.610 0.541896
## Q6 0.256817 0.046285 5.549 5.20e-08 ***
## Q7 -0.008159 0.025835 -0.316 0.752309
## Q8 0.059432 0.027980 2.124 0.034266 *
## reversed_technology -0.219318 0.059309 -3.698 0.000247 ***
## Q102 -0.066705 0.123891 -0.538 0.590583
## Q103 -0.172845 0.175507 -0.985 0.325293
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9901 on 407 degrees of freedom
## (80 observations deleted due to missingness)
## Multiple R-squared: 0.1092, Adjusted R-squared: 0.07201
## F-statistic: 2.935 on 17 and 407 DF, p-value: 8.805e-05
# Run the linear regression model
model5 <-
lm(Q17 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model5)
##
## Call:
## lm(formula = Q17 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.39431 -0.86117 -0.04978 0.76084 3.02488
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.8064443 0.3392512 8.272 4.79e-16 ***
## resp_genderWomen 0.3046092 0.0869467 3.503 0.000482 ***
## AgeGroup30-39 -0.2201017 0.1271055 -1.732 0.083685 .
## AgeGroup40-49 -0.2042773 0.1339494 -1.525 0.127608
## AgeGroup50-59 -0.2626896 0.1221602 -2.150 0.031796 *
## AgeGroup60-69 -0.1989100 0.1388211 -1.433 0.152253
## AgeGroup70-79 -0.3181053 0.1489057 -2.136 0.032929 *
## AgeGroup80+ 0.3789062 0.3084154 1.229 0.219564
## education_recode2 -0.1088798 0.2126255 -0.512 0.608728
## education_recode3 -0.2089833 0.2118221 -0.987 0.324109
## education_recode4 -0.0246768 0.2174519 -0.113 0.909675
## workexperience -0.0380480 0.0865410 -0.440 0.660296
## Q4 0.0118907 0.0339112 0.351 0.725940
## Q6 0.1439775 0.0346809 4.151 3.62e-05 ***
## Q7 -0.0004981 0.0195692 -0.025 0.979699
## Q8 0.0127916 0.0207611 0.616 0.537964
## reversed_technology -0.1795075 0.0446239 -4.023 6.24e-05 ***
## Q102 0.0609793 0.1193119 0.511 0.609415
## Q103 0.1559851 0.1403152 1.112 0.266579
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.136 on 886 degrees of freedom
## (127 observations deleted due to missingness)
## Multiple R-squared: 0.07493, Adjusted R-squared: 0.05614
## F-statistic: 3.987 on 18 and 886 DF, p-value: 5.227e-08
# Plot coefficients
plot_summs(
model5,
coefs = c(
"Women" = "resp_genderWomen",
"Age 30-39" = "AgeGroup30-39",
"Age 40-49" = "AgeGroup40-49",
"Age 50-59" = "AgeGroup50-59",
"Age 60-69" = "AgeGroup60-69",
"Age 70-79" = "AgeGroup70-79",
"Age 80+" = "AgeGroup80+",
"Upper secondary schoool" = "education_recode2",
"Undergraduate degree" = "education_recode3",
"Higher degree" = "education_recode4",
"Work experience" = "workexperience",
"Industrial area" = "Q4",
"Concerned about climate change" = "Q6",
"Left - right" = "Q7",
"Liberal - conservative" = "Q8",
"Climate solved by technology" = "reversed_technology",
"CCS Knowledge medium" = "Q102",
"CCS knowledge high" = "Q103"
)
)
# Women only
model5W <-
lm(Q17 ~ AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = women_df)
summary(model5W)
##
## Call:
## lm(formula = Q17 ~ AgeGroup + education_recode + workexperience +
## Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10, data = women_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.37257 -0.72332 0.05684 0.69933 2.81468
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.20407 0.44981 4.900 1.38e-06 ***
## AgeGroup30-39 0.04379 0.14553 0.301 0.7637
## AgeGroup40-49 0.22383 0.16323 1.371 0.1711
## AgeGroup50-59 0.11447 0.15399 0.743 0.4577
## AgeGroup60-69 0.19597 0.22105 0.887 0.3758
## AgeGroup70-79 -0.29567 0.23781 -1.243 0.2145
## AgeGroup80+ 1.32028 0.62071 2.127 0.0340 *
## education_recode2 0.14375 0.34585 0.416 0.6779
## education_recode3 -0.01123 0.34373 -0.033 0.9740
## education_recode4 0.19420 0.34888 0.557 0.5781
## workexperience -0.01041 0.12690 -0.082 0.9347
## Q4 0.05593 0.04701 1.190 0.2349
## Q6 0.24441 0.04811 5.081 5.73e-07 ***
## Q7 -0.03407 0.02728 -1.249 0.2124
## Q8 0.01337 0.02920 0.458 0.6473
## reversed_technology -0.14433 0.06263 -2.305 0.0217 *
## Q102 0.10185 0.12580 0.810 0.4186
## Q103 0.07619 0.18176 0.419 0.6753
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.035 on 409 degrees of freedom
## (78 observations deleted due to missingness)
## Multiple R-squared: 0.1166, Adjusted R-squared: 0.0799
## F-statistic: 3.176 on 17 and 409 DF, p-value: 2.347e-05
# Run the linear regression model
model6 <-
lm(Q18 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model6)
##
## Call:
## lm(formula = Q18 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.34290 -0.90453 -0.07957 0.83512 3.14479
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.86698 0.35167 8.153 1.19e-15 ***
## resp_genderWomen 0.33620 0.09035 3.721 0.000211 ***
## AgeGroup30-39 -0.15449 0.13162 -1.174 0.240794
## AgeGroup40-49 -0.12583 0.14023 -0.897 0.369801
## AgeGroup50-59 -0.30146 0.12753 -2.364 0.018299 *
## AgeGroup60-69 -0.23373 0.14336 -1.630 0.103359
## AgeGroup70-79 -0.40150 0.15473 -2.595 0.009618 **
## AgeGroup80+ 0.08642 0.32267 0.268 0.788886
## education_recode2 0.01768 0.22258 0.079 0.936715
## education_recode3 -0.09522 0.22135 -0.430 0.667185
## education_recode4 0.14726 0.22771 0.647 0.517981
## workexperience -0.04665 0.08981 -0.519 0.603597
## Q4 -0.03342 0.03515 -0.951 0.342006
## Q6 0.14366 0.03602 3.988 7.19e-05 ***
## Q7 -0.01749 0.02032 -0.861 0.389643
## Q8 0.04212 0.02166 1.945 0.052127 .
## reversed_technology -0.21194 0.04632 -4.575 5.43e-06 ***
## Q102 0.13935 0.12387 1.125 0.260908
## Q103 0.16902 0.14543 1.162 0.245466
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.189 on 897 degrees of freedom
## (116 observations deleted due to missingness)
## Multiple R-squared: 0.08823, Adjusted R-squared: 0.06994
## F-statistic: 4.823 on 18 and 897 DF, p-value: 2.003e-10
# Plot coefficients
plot_summs(
model6,
coefs = c(
"Women" = "resp_genderWomen",
"Age 30-39" = "AgeGroup30-39",
"Age 40-49" = "AgeGroup40-49",
"Age 50-59" = "AgeGroup50-59",
"Age 60-69" = "AgeGroup60-69",
"Age 70-79" = "AgeGroup70-79",
"Age 80+" = "AgeGroup80+",
"Upper secondary schoool" = "education_recode2",
"Undergraduate degree" = "education_recode3",
"Higher degree" = "education_recode4",
"Work experience" = "workexperience",
"Industrial area" = "Q4",
"Concerned about climate change" = "Q6",
"Left - right" = "Q7",
"Liberal - conservative" = "Q8",
"Climate solved by technology" = "reversed_technology",
"CCS Knowledge medium" = "Q102",
"CCS knowledge high" = "Q103"
)
)
# Women only
model6W <-
lm(Q18 ~ AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = women_df)
summary(model6W)
##
## Call:
## lm(formula = Q18 ~ AgeGroup + education_recode + workexperience +
## Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10, data = women_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.5695 -0.7872 0.0028 0.8089 3.3639
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.25373 0.48810 4.617 5.20e-06 ***
## AgeGroup30-39 0.13710 0.15365 0.892 0.3727
## AgeGroup40-49 0.23374 0.17361 1.346 0.1789
## AgeGroup50-59 0.00397 0.16257 0.024 0.9805
## AgeGroup60-69 0.21759 0.23382 0.931 0.3526
## AgeGroup70-79 -0.61174 0.25183 -2.429 0.0156 *
## AgeGroup80+ 1.30202 0.65797 1.979 0.0485 *
## education_recode2 0.24519 0.38473 0.637 0.5243
## education_recode3 0.05878 0.38241 0.154 0.8779
## education_recode4 0.32062 0.38773 0.827 0.4088
## workexperience 0.01781 0.13439 0.133 0.8946
## Q4 -0.00161 0.04962 -0.032 0.9741
## Q6 0.27241 0.05098 5.343 1.52e-07 ***
## Q7 -0.06564 0.02870 -2.287 0.0227 *
## Q8 0.06345 0.03097 2.049 0.0411 *
## reversed_technology -0.15772 0.06597 -2.391 0.0173 *
## Q102 0.15199 0.13331 1.140 0.2549
## Q103 -0.03159 0.19150 -0.165 0.8691
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.098 on 411 degrees of freedom
## (76 observations deleted due to missingness)
## Multiple R-squared: 0.1389, Adjusted R-squared: 0.1033
## F-statistic: 3.901 on 17 and 411 DF, p-value: 3.916e-07
# Run the linear regression model
model7 <-
lm(Q19 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model7)
##
## Call:
## lm(formula = Q19 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.3532 -0.9242 -0.1800 0.7152 3.2536
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.816107 0.344514 8.174 1.06e-15 ***
## resp_genderWomen 0.236981 0.089255 2.655 0.00807 **
## AgeGroup30-39 -0.372318 0.132098 -2.818 0.00494 **
## AgeGroup40-49 -0.212656 0.136406 -1.559 0.11937
## AgeGroup50-59 -0.330771 0.126964 -2.605 0.00934 **
## AgeGroup60-69 -0.241912 0.140878 -1.717 0.08631 .
## AgeGroup70-79 -0.374299 0.153468 -2.439 0.01493 *
## AgeGroup80+ 0.024926 0.313083 0.080 0.93656
## education_recode2 -0.105710 0.215833 -0.490 0.62442
## education_recode3 -0.038447 0.214675 -0.179 0.85790
## education_recode4 0.096158 0.220934 0.435 0.66350
## workexperience 0.129159 0.088508 1.459 0.14485
## Q4 0.018705 0.034505 0.542 0.58789
## Q6 0.096541 0.035396 2.727 0.00651 **
## Q7 -0.005571 0.020214 -0.276 0.78294
## Q8 0.028886 0.021803 1.325 0.18556
## reversed_technology -0.212220 0.045527 -4.661 3.64e-06 ***
## Q102 -0.074683 0.122464 -0.610 0.54213
## Q103 -0.018388 0.143491 -0.128 0.89806
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.151 on 861 degrees of freedom
## (152 observations deleted due to missingness)
## Multiple R-squared: 0.06461, Adjusted R-squared: 0.04505
## F-statistic: 3.304 on 18 and 861 DF, p-value: 4.23e-06
# Plot coefficients
plot_summs(
model7,
coefs = c(
"Women" = "resp_genderWomen",
"Age 30-39" = "AgeGroup30-39",
"Age 40-49" = "AgeGroup40-49",
"Age 50-59" = "AgeGroup50-59",
"Age 60-69" = "AgeGroup60-69",
"Age 70-79" = "AgeGroup70-79",
"Age 80+" = "AgeGroup80+",
"Upper secondary schoool" = "education_recode2",
"Undergraduate degree" = "education_recode3",
"Higher degree" = "education_recode4",
"Work experience" = "workexperience",
"Industrial area" = "Q4",
"Concerned about climate change" = "Q6",
"Left - right" = "Q7",
"Liberal - conservative" = "Q8",
"Climate solved by technology" = "reversed_technology",
"CCS Knowledge medium" = "Q102",
"CCS knowledge high" = "Q103"
)
)
# Women only
model7W <-
lm(Q19 ~ AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = women_df)
summary(model7W)
##
## Call:
## lm(formula = Q19 ~ AgeGroup + education_recode + workexperience +
## Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10, data = women_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.03829 -0.80993 0.01264 0.67655 2.65063
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.97961 0.47972 4.127 4.49e-05 ***
## AgeGroup30-39 -0.03530 0.15923 -0.222 0.82468
## AgeGroup40-49 0.19727 0.17379 1.135 0.25701
## AgeGroup50-59 0.07835 0.16683 0.470 0.63889
## AgeGroup60-69 0.04921 0.23576 0.209 0.83477
## AgeGroup70-79 -0.27944 0.25807 -1.083 0.27956
## AgeGroup80+ 1.40985 0.65895 2.140 0.03300 *
## education_recode2 0.30514 0.36815 0.829 0.40769
## education_recode3 0.31591 0.36488 0.866 0.38712
## education_recode4 0.28511 0.37065 0.769 0.44222
## workexperience 0.14528 0.13632 1.066 0.28720
## Q4 0.02499 0.05026 0.497 0.61931
## Q6 0.21663 0.05215 4.154 4.01e-05 ***
## Q7 -0.03113 0.02978 -1.045 0.29646
## Q8 0.04926 0.03247 1.517 0.12999
## reversed_technology -0.18725 0.06795 -2.756 0.00612 **
## Q102 -0.03372 0.13653 -0.247 0.80506
## Q103 -0.05816 0.19535 -0.298 0.76608
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.098 on 395 degrees of freedom
## (92 observations deleted due to missingness)
## Multiple R-squared: 0.08399, Adjusted R-squared: 0.04457
## F-statistic: 2.13 on 17 and 395 DF, p-value: 0.005676
# Run the linear regression model
model8 <-
lm(Q20 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model8)
##
## Call:
## lm(formula = Q20 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.3065 -0.9767 -0.1389 0.7992 3.4138
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.490449 0.349548 7.125 2.19e-12 ***
## resp_genderWomen 0.303794 0.090392 3.361 0.000811 ***
## AgeGroup30-39 -0.435212 0.132578 -3.283 0.001069 **
## AgeGroup40-49 -0.172028 0.138792 -1.239 0.215506
## AgeGroup50-59 -0.343384 0.127595 -2.691 0.007256 **
## AgeGroup60-69 -0.347586 0.142345 -2.442 0.014810 *
## AgeGroup70-79 -0.320407 0.154493 -2.074 0.038381 *
## AgeGroup80+ -0.083376 0.317794 -0.262 0.793106
## education_recode2 0.146836 0.219194 0.670 0.503107
## education_recode3 0.126741 0.218137 0.581 0.561380
## education_recode4 0.307878 0.224428 1.372 0.170469
## workexperience -0.010958 0.089441 -0.123 0.902522
## Q4 0.008670 0.035012 0.248 0.804484
## Q6 0.100643 0.035763 2.814 0.005001 **
## Q7 -0.006168 0.020423 -0.302 0.762704
## Q8 0.031954 0.021893 1.460 0.144782
## reversed_technology -0.193678 0.046063 -4.205 2.89e-05 ***
## Q102 0.098446 0.124156 0.793 0.428041
## Q103 0.143606 0.145011 0.990 0.322296
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.169 on 869 degrees of freedom
## (144 observations deleted due to missingness)
## Multiple R-squared: 0.06882, Adjusted R-squared: 0.04953
## F-statistic: 3.568 on 18 and 869 DF, p-value: 7.947e-07
# Plot coefficients
plot_summs(
model8,
coefs = c(
"Women" = "resp_genderWomen",
"Age 30-39" = "AgeGroup30-39",
"Age 40-49" = "AgeGroup40-49",
"Age 50-59" = "AgeGroup50-59",
"Age 60-69" = "AgeGroup60-69",
"Age 70-79" = "AgeGroup70-79",
"Age 80+" = "AgeGroup80+",
"Upper secondary schoool" = "education_recode2",
"Undergraduate degree" = "education_recode3",
"Higher degree" = "education_recode4",
"Work experience" = "workexperience",
"Industrial area" = "Q4",
"Concerned about climate change" = "Q6",
"Left - right" = "Q7",
"Liberal - conservative" = "Q8",
"Climate solved by technology" = "reversed_technology",
"CCS Knowledge medium" = "Q102",
"CCS knowledge high" = "Q103"
)
)
# Women only
model8W <-
lm(Q20 ~ AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = women_df)
summary(model8W)
##
## Call:
## lm(formula = Q20 ~ AgeGroup + education_recode + workexperience +
## Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10, data = women_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.13094 -0.85974 0.01441 0.82752 2.70281
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.7715758 0.4932808 3.591 0.00037 ***
## AgeGroup30-39 -0.1155017 0.1575138 -0.733 0.46382
## AgeGroup40-49 0.2366054 0.1750091 1.352 0.17715
## AgeGroup50-59 0.0302986 0.1662163 0.182 0.85545
## AgeGroup60-69 0.0008664 0.2356986 0.004 0.99707
## AgeGroup70-79 -0.2608936 0.2542105 -1.026 0.30538
## AgeGroup80+ 1.3602999 0.6615909 2.056 0.04042 *
## education_recode2 0.4512070 0.3875834 1.164 0.24506
## education_recode3 0.3216572 0.3849040 0.836 0.40383
## education_recode4 0.3798613 0.3902608 0.973 0.33097
## workexperience 0.1000767 0.1363757 0.734 0.46348
## Q4 0.0346652 0.0504943 0.687 0.49279
## Q6 0.2442078 0.0520167 4.695 3.68e-06 ***
## Q7 -0.0139406 0.0297195 -0.469 0.63927
## Q8 0.0466329 0.0321880 1.449 0.14819
## reversed_technology -0.2186696 0.0672677 -3.251 0.00125 **
## Q102 0.1781157 0.1359530 1.310 0.19091
## Q103 0.0737587 0.1929845 0.382 0.70252
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.104 on 399 degrees of freedom
## (88 observations deleted due to missingness)
## Multiple R-squared: 0.1093, Adjusted R-squared: 0.0714
## F-statistic: 2.881 on 17 and 399 DF, p-value: 0.0001194
# Run the linear regression model
model9 <-
lm(Q27 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model9)
##
## Call:
## lm(formula = Q27 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.43634 -0.68665 0.05835 0.60144 2.82897
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.988307 0.257820 3.833 0.000134 ***
## resp_genderWomen -0.195061 0.068118 -2.864 0.004276 **
## AgeGroup30-39 0.061955 0.099980 0.620 0.535614
## AgeGroup40-49 -0.081592 0.105955 -0.770 0.441444
## AgeGroup50-59 0.110187 0.096347 1.144 0.253043
## AgeGroup60-69 0.047093 0.110054 0.428 0.668811
## AgeGroup70-79 -0.047950 0.120812 -0.397 0.691529
## AgeGroup80+ -0.337058 0.243686 -1.383 0.166920
## education_recode2 0.056430 0.158403 0.356 0.721733
## education_recode3 0.130646 0.158396 0.825 0.409675
## education_recode4 0.212177 0.163295 1.299 0.194122
## workexperience 0.227939 0.069122 3.298 0.001009 **
## Q4 0.016518 0.026754 0.617 0.537110
## Q6 0.235017 0.027098 8.673 < 2e-16 ***
## Q7 -0.008396 0.015628 -0.537 0.591207
## Q8 -0.032076 0.016743 -1.916 0.055672 .
## reversed_technology 0.271490 0.035434 7.662 4.3e-14 ***
## Q102 0.198871 0.087688 2.268 0.023545 *
## Q103 0.237648 0.106064 2.241 0.025269 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9527 on 1006 degrees of freedom
## (7 observations deleted due to missingness)
## Multiple R-squared: 0.1852, Adjusted R-squared: 0.1706
## F-statistic: 12.7 on 18 and 1006 DF, p-value: < 2.2e-16
# Plot coefficients
plot_summs(
model9,
coefs = c(
"Women" = "resp_genderWomen",
"Age 30-39" = "AgeGroup30-39",
"Age 40-49" = "AgeGroup40-49",
"Age 50-59" = "AgeGroup50-59",
"Age 60-69" = "AgeGroup60-69",
"Age 70-79" = "AgeGroup70-79",
"Age 80+" = "AgeGroup80+",
"Upper secondary schoool" = "education_recode2",
"Undergraduate degree" = "education_recode3",
"Higher degree" = "education_recode4",
"Work experience" = "workexperience",
"Industrial area" = "Q4",
"Concerned about climate change" = "Q6",
"Left - right" = "Q7",
"Liberal - conservative" = "Q8",
"Climate solved by technology" = "reversed_technology",
"CCS Knowledge medium" = "Q102",
"CCS knowledge high" = "Q103"
)
)
# Women only
model9W <-
lm(Q27 ~ AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = women_df)
summary(model9W)
##
## Call:
## lm(formula = Q27 ~ AgeGroup + education_recode + workexperience +
## Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10, data = women_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.0042 -0.5922 0.1255 0.4825 2.8667
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.407026 0.326836 4.305 2.02e-05 ***
## AgeGroup30-39 0.008026 0.112763 0.071 0.943288
## AgeGroup40-49 -0.168561 0.125712 -1.341 0.180601
## AgeGroup50-59 -0.064425 0.117057 -0.550 0.582321
## AgeGroup60-69 -0.272079 0.164815 -1.651 0.099427 .
## AgeGroup70-79 -0.090708 0.194121 -0.467 0.640515
## AgeGroup80+ -0.592118 0.510717 -1.159 0.246873
## education_recode2 -0.051809 0.234542 -0.221 0.825269
## education_recode3 0.041901 0.234513 0.179 0.858270
## education_recode4 0.122608 0.239257 0.512 0.608567
## workexperience 0.299854 0.098512 3.044 0.002464 **
## Q4 0.068063 0.035818 1.900 0.057999 .
## Q6 0.131755 0.036284 3.631 0.000312 ***
## Q7 -0.008184 0.021102 -0.388 0.698327
## Q8 -0.023460 0.023161 -1.013 0.311602
## reversed_technology 0.170453 0.048257 3.532 0.000452 ***
## Q102 0.195742 0.092058 2.126 0.033987 *
## Q103 0.229688 0.139299 1.649 0.099822 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8556 on 482 degrees of freedom
## (5 observations deleted due to missingness)
## Multiple R-squared: 0.1343, Adjusted R-squared: 0.1037
## F-statistic: 4.397 on 17 and 482 DF, p-value: 1.73e-08
# code for html table that can be imported to excel
reg_results <- capture.output(
stargazer(
model1,
model2,
model3,
model4,
model5,
model6,
model7,
model8,
model9,
type = "html",
out ="output.html",
star.cutoffs = c(0.1, 0.05, 0.01)
)
)
# Run the linear regression model
model_truck <-
lm(Q16_5 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model_truck)
##
## Call:
## lm(formula = Q16_5 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.6307 -0.8823 -0.0820 0.7510 3.3100
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.996294 0.351153 11.381 < 2e-16 ***
## resp_genderWomen 0.202022 0.092395 2.186 0.029108 *
## AgeGroup30-39 -0.506864 0.134394 -3.771 0.000176 ***
## AgeGroup40-49 -0.137665 0.145351 -0.947 0.343903
## AgeGroup50-59 -0.296218 0.130893 -2.263 0.023936 *
## AgeGroup60-69 -0.234152 0.147169 -1.591 0.112048
## AgeGroup70-79 -0.049218 0.157511 -0.312 0.754773
## AgeGroup80+ 0.319880 0.307791 1.039 0.299033
## education_recode2 -0.114627 0.220120 -0.521 0.602706
## education_recode3 -0.243506 0.218404 -1.115 0.265259
## education_recode4 -0.138576 0.224894 -0.616 0.537973
## workexperience 0.058558 0.093645 0.625 0.531964
## Q4 0.048135 0.036927 1.304 0.192824
## Q6 0.023301 0.038135 0.611 0.541393
## Q7 0.006556 0.021496 0.305 0.760460
## Q8 -0.045565 0.023520 -1.937 0.053103 .
## reversed_technology -0.135434 0.048531 -2.791 0.005402 **
## Q102 -0.115763 0.125488 -0.923 0.356583
## Q103 -0.008841 0.147545 -0.060 0.952236
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.09 on 704 degrees of freedom
## (309 observations deleted due to missingness)
## Multiple R-squared: 0.05746, Adjusted R-squared: 0.03337
## F-statistic: 2.385 on 18 and 704 DF, p-value: 0.001059
# Run the linear regression model
model_onshore_pipe <-
lm(Q16_4 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model_onshore_pipe)
##
## Call:
## lm(formula = Q16_4 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.3085 -0.8376 -0.0434 0.6699 3.4018
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.046838 0.369746 8.240 8.38e-16 ***
## resp_genderWomen 0.261721 0.097288 2.690 0.007311 **
## AgeGroup30-39 -0.302020 0.141511 -2.134 0.033166 *
## AgeGroup40-49 -0.070172 0.153048 -0.459 0.646735
## AgeGroup50-59 -0.345321 0.137823 -2.506 0.012451 *
## AgeGroup60-69 -0.085151 0.154961 -0.549 0.582838
## AgeGroup70-79 -0.222578 0.165851 -1.342 0.180017
## AgeGroup80+ 0.046275 0.324089 0.143 0.886500
## education_recode2 0.153390 0.231776 0.662 0.508315
## education_recode3 -0.038594 0.229968 -0.168 0.866770
## education_recode4 0.064981 0.236802 0.274 0.783850
## workexperience 0.108048 0.098604 1.096 0.273549
## Q4 0.066824 0.038882 1.719 0.086119 .
## Q6 0.021073 0.040154 0.525 0.599891
## Q7 0.012696 0.022634 0.561 0.575022
## Q8 0.007405 0.024765 0.299 0.765020
## reversed_technology -0.177748 0.051101 -3.478 0.000535 ***
## Q102 -0.043017 0.132133 -0.326 0.744853
## Q103 0.015171 0.155357 0.098 0.922234
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.148 on 704 degrees of freedom
## (309 observations deleted due to missingness)
## Multiple R-squared: 0.04944, Adjusted R-squared: 0.02513
## F-statistic: 2.034 on 18 and 704 DF, p-value: 0.006859
# Run the linear regression model
model_offshore_pipe <-
lm(Q16_3 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model_offshore_pipe)
##
## Call:
## lm(formula = Q16_3 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.3221 -0.8281 -0.1148 0.6822 3.5262
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.930354 0.376241 7.788 2.43e-14 ***
## resp_genderWomen 0.293525 0.098997 2.965 0.00313 **
## AgeGroup30-39 -0.263355 0.143997 -1.829 0.06784 .
## AgeGroup40-49 0.030504 0.155736 0.196 0.84477
## AgeGroup50-59 -0.379538 0.140245 -2.706 0.00697 **
## AgeGroup60-69 -0.127018 0.157683 -0.806 0.42079
## AgeGroup70-79 -0.224937 0.168765 -1.333 0.18301
## AgeGroup80+ 0.004658 0.329782 0.014 0.98873
## education_recode2 0.497560 0.235847 2.110 0.03524 *
## education_recode3 0.153977 0.234008 0.658 0.51075
## education_recode4 0.421734 0.240962 1.750 0.08052 .
## workexperience 0.113248 0.100336 1.129 0.25942
## Q4 0.056336 0.039565 1.424 0.15492
## Q6 0.034525 0.040860 0.845 0.39843
## Q7 -0.010138 0.023032 -0.440 0.65994
## Q8 0.005850 0.025200 0.232 0.81649
## reversed_technology -0.230762 0.051998 -4.438 1.05e-05 ***
## Q102 0.035480 0.134454 0.264 0.79195
## Q103 -0.021420 0.158086 -0.135 0.89226
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.168 on 704 degrees of freedom
## (309 observations deleted due to missingness)
## Multiple R-squared: 0.07905, Adjusted R-squared: 0.0555
## F-statistic: 3.357 on 18 and 704 DF, p-value: 3.405e-06
# Run the linear regression model
model_ship <-
lm(Q16_2 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model_ship)
##
## Call:
## lm(formula = Q16_2 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.5244 -0.8120 -0.0574 0.6427 3.2090
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.231614 0.352586 9.165 < 2e-16 ***
## resp_genderWomen 0.264190 0.092773 2.848 0.004532 **
## AgeGroup30-39 -0.434483 0.134943 -3.220 0.001342 **
## AgeGroup40-49 -0.309400 0.145945 -2.120 0.034357 *
## AgeGroup50-59 -0.377348 0.131427 -2.871 0.004212 **
## AgeGroup60-69 -0.277459 0.147769 -1.878 0.060842 .
## AgeGroup70-79 -0.421915 0.158154 -2.668 0.007812 **
## AgeGroup80+ -0.091148 0.309048 -0.295 0.768132
## education_recode2 0.338348 0.221019 1.531 0.126255
## education_recode3 0.156045 0.219295 0.712 0.476964
## education_recode4 0.341999 0.225812 1.515 0.130341
## workexperience 0.029590 0.094028 0.315 0.753083
## Q4 0.035092 0.037078 0.946 0.344244
## Q6 0.044928 0.038291 1.173 0.241059
## Q7 0.011821 0.021584 0.548 0.584099
## Q8 -0.002147 0.023616 -0.091 0.927596
## reversed_technology -0.187681 0.048729 -3.852 0.000128 ***
## Q102 -0.112641 0.126000 -0.894 0.371643
## Q103 0.044941 0.148147 0.303 0.761712
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.094 on 704 degrees of freedom
## (309 observations deleted due to missingness)
## Multiple R-squared: 0.06504, Adjusted R-squared: 0.04113
## F-statistic: 2.721 on 18 and 704 DF, p-value: 0.000157
# Run the linear regression model
model_train <-
lm(Q16_1 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# View the summary of the regression model
summary(model_train)
##
## Call:
## lm(formula = Q16_1 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.4171 -0.9412 -0.0806 0.8311 3.3808
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.135248 0.375261 8.355 3.48e-16 ***
## resp_genderWomen 0.245869 0.098739 2.490 0.013 *
## AgeGroup30-39 -0.204771 0.143621 -1.426 0.154
## AgeGroup40-49 -0.018960 0.155330 -0.122 0.903
## AgeGroup50-59 -0.080412 0.139879 -0.575 0.566
## AgeGroup60-69 0.065993 0.157272 0.420 0.675
## AgeGroup70-79 0.178380 0.168325 1.060 0.290
## AgeGroup80+ -0.117513 0.328922 -0.357 0.721
## education_recode2 0.073799 0.235232 0.314 0.754
## education_recode3 -0.082026 0.233398 -0.351 0.725
## education_recode4 0.024095 0.240334 0.100 0.920
## workexperience 0.068291 0.100074 0.682 0.495
## Q4 0.030145 0.039462 0.764 0.445
## Q6 0.027232 0.040753 0.668 0.504
## Q7 0.012486 0.022972 0.544 0.587
## Q8 0.002243 0.025134 0.089 0.929
## reversed_technology -0.100523 0.051863 -1.938 0.053 .
## Q102 -0.174276 0.134103 -1.300 0.194
## Q103 -0.091508 0.157674 -0.580 0.562
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.165 on 704 degrees of freedom
## (309 observations deleted due to missingness)
## Multiple R-squared: 0.02776, Adjusted R-squared: 0.0029
## F-statistic: 1.117 on 18 and 704 DF, p-value: 0.3304
# code for html table that can be imported to excel
transport_reg_results <- capture.output(
stargazer(
model_train,
model_truck,
model_onshore_pipe,
model_offshore_pipe,
model_ship,
type = "html",
out ="output_transport.html",
star.cutoffs = c(0.1, 0.05, 0.01)
)
)
model_battery_expense <-
lm(Q21_1 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_battery_prolonged <-
lm(Q21_2 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_battery_emissionreduction <-
lm(Q21_3 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_battery_econbeneficial <-
lm(Q21_4 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_battery_leakagecapture <-
lm(Q21_5 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_battery_leakagetransport <-
lm(Q21_6 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_battery_lekageinjection <-
lm(Q21_7 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_battery_leakagestorage <-
lm(Q21_8 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_battery_leakagecontamination <-
lm(Q21_9 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_battery_tremors <-
lm(Q21_10 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# code for html table that can be imported to excel
batteryconcerns_reg_results <- capture.output(
stargazer(
model_battery_expense,
model_battery_prolonged,
model_battery_emissionreduction,
model_battery_econbeneficial,
model_battery_leakagecapture,
model_battery_leakagetransport,
model_battery_lekageinjection,
model_battery_leakagestorage,
model_battery_leakagecontamination,
model_battery_tremors,
type = "html",
out ="output_batteryconcerns.html",
star.cutoffs = c(0.1, 0.05, 0.01)
)
)
# For the regressions, we want to reverse the scale of these statements
data_clean <- data_clean %>%
mutate(across(c(Q22_1, Q22_2, Q22_3, Q22_4, Q22_5, Q22_6, Q22_7, Q22_8,
Q22_9, Q22_10, Q22_11),
~ 6 - .))
# Then we run the regresions
model_addition <-
lm(Q22_1 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_reduceco2 <-
lm(Q22_2 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_climategoals <-
lm(Q22_3 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_hardtoabate <-
lm(Q22_4 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_compensation <-
lm(Q22_5 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_hydrogen <-
lm(Q22_6 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_jobs <-
lm(Q22_7 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4+ Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_industrialeurope <-
lm(Q22_8 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_storeincountry <-
lm(Q22_9 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_lesscapacity <-
lm(Q22_10 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
model_importexport <-
lm(Q22_11 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
# code for html table that can be imported to excel
batterystatements_reg_results <- capture.output(
stargazer(
model_addition,
model_reduceco2,
model_climategoals,
model_hardtoabate,
model_compensation,
model_hydrogen,
model_jobs,
model_industrialeurope,
model_storeincountry,
model_lesscapacity,
model_importexport,
type = "html",
out ="output_batterystatements.html",
star.cutoffs = c(0.1, 0.05, 0.01)
)
)
# Subset
pipline_data_subset <- subset(data_clean, Q23_1 %in% c(1, 2))
# Recode
pipline_data_subset$Q23_1_bin <- ifelse(pipline_data_subset$Q23_1 == 2, 1, 0)
# Run logistic regression
model_vote_pipeline <- glm(
Q23_1_bin ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = pipline_data_subset,
family = binomial(link = "logit")
)
vote_pipeline_results <- capture.output(
stargazer(
model_vote_pipeline,
type = "html",
out ="output_vote_pipeline.html",
star.cutoffs = c(0.1, 0.05, 0.01)
)
)
model_vote_offshore <-
lm(Q24_1 ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = data_clean)
summary(model_vote_offshore)
##
## Call:
## lm(formula = Q24_1 ~ resp_gender + AgeGroup + education_recode +
## workexperience + Q4 + Q6 + Q7 + Q8 + reversed_technology +
## Q10, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.52326 -0.60835 -0.07872 0.58139 1.73859
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.7843025 0.2046293 13.607 < 2e-16 ***
## resp_genderWomen 0.2908942 0.0540643 5.381 9.24e-08 ***
## AgeGroup30-39 -0.0516736 0.0793529 -0.651 0.51507
## AgeGroup40-49 0.0361219 0.0840954 0.430 0.66763
## AgeGroup50-59 -0.0327387 0.0764697 -0.428 0.66865
## AgeGroup60-69 -0.0121245 0.0873485 -0.139 0.88963
## AgeGroup70-79 0.0218393 0.0958872 0.228 0.81988
## AgeGroup80+ 0.1472833 0.1934109 0.762 0.44653
## education_recode2 -0.0878090 0.1257229 -0.698 0.48507
## education_recode3 -0.2598642 0.1257171 -2.067 0.03898 *
## education_recode4 -0.2505768 0.1296053 -1.933 0.05347 .
## workexperience -0.1030012 0.0548612 -1.877 0.06074 .
## Q4 0.0348494 0.0212341 1.641 0.10107
## Q6 -0.1037107 0.0215074 -4.822 1.64e-06 ***
## Q7 -0.0005819 0.0124037 -0.047 0.96259
## Q8 -0.0145321 0.0132885 -1.094 0.27440
## reversed_technology -0.0839258 0.0281236 -2.984 0.00291 **
## Q102 -0.3479824 0.0695974 -5.000 6.76e-07 ***
## Q103 -0.5484462 0.0841820 -6.515 1.15e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7562 on 1006 degrees of freedom
## (7 observations deleted due to missingness)
## Multiple R-squared: 0.1697, Adjusted R-squared: 0.1549
## F-statistic: 11.42 on 18 and 1006 DF, p-value: < 2.2e-16
vote_offshore_results <- capture.output(
stargazer(
model_vote_offshore,
type = "html",
out ="output_vote_offshore.html",
star.cutoffs = c(0.1, 0.05, 0.01)
)
)
# Subset
storage_data_subset <- subset(data_clean, Q24_1 %in% c(1, 2))
# Recode
storage_data_subset$Q24_1_bin <- ifelse(storage_data_subset$Q24_1 == 2, 1, 0)
# Run logistic regression
model_vote_storage <- glm(
Q24_1_bin ~ resp_gender + AgeGroup + education_recode + workexperience +
Q4 + Q6 + Q7 + Q8 + reversed_technology + Q10,
data = storage_data_subset,
family = binomial(link = "logit")
)
vote_storage_results <- capture.output(
stargazer(
model_vote_storage,
type = "html",
out ="output_vote_storage.html",
star.cutoffs = c(0.1, 0.05, 0.01)
)
)
# Dataset on benefits
open_benefits <- read_excel("openquestions.xlsx", sheet = "Benefits")
# Datset on concerns
open_concerns <- read_excel("openquestions.xlsx", sheet = "Concerns")
# Figure benefits
open_benefits <- open_benefits %>%
mutate(Category = reorder(Category, N))
ggplot(open_benefits, aes(x = N, y = Category)) +
geom_col(fill = "steelblue") +
labs(x = "Number of responses", y = "Category") +
theme_minimal()
# Figure concerns
open_concerns <- open_concerns %>%
mutate(Category = reorder(Category, N))
ggplot(open_concerns, aes(x = N, y = Category)) +
geom_col(fill = "steelblue") +
labs(x = "Number of responses", y = "Category") +
theme_minimal()