---
title: "rum"
format:
html:
code-fold: true # Enables dropdown for code
code-tools: true # (Optional) Adds buttons like "Show Code"
code-summary: "Show code" # (Optional) Custom label for dropdown
toc: true
toc-location: left
page-layout: full
editor: visual
---
# Rum
This script will run a RUM model on our data assuming a stay at home option and compare it to our result of the MDCEV.
### Data
Need to run the same data for the MDCEV which gives us final_data_2018. So going to clip the code from the file R script high cost.
The first code will produce final_data_yyyy by year and then should be able to run all the rest of the data
```{r}
library(dplyr)
library(tidyr)
library(haven)
library(readr)
library(mlogit)
library(lmtest)
library(purrr)
library(stringr)
library(readr)
library(ggplot2)
library(stargazer)
library(readxl)
library(patchwork)
library(broom)
library(tidyverse)
library(sf)
library(tigris)
library(ggrepel)
library(ggspatial)
library(ggpattern)
```
reservation_data \<- read_dta("reservation_data_merged_id_complete.dta")
```{r}
#| cache: true
#| message: false
#| warning: false
#| code-fold: true
#| code-summary: "Show the Code"
# Load datasets
reservation_data <- read_dta("data/reservation_data_merged_id_complete.dta")
intra_island_distance <- read.csv("data/intra_island_distance2.csv")
# Add year
reservation_data$year <- as.numeric(format(as.Date(reservation_data$CheckinDate, "%Y-%m-%d"), "%Y"))
reservation_data <- reservation_data %>%
mutate(zip = ifelse(zip == 96812, 96813, zip))
# Group and compute yearly averages
avg_days_per_year <- reservation_data %>%
group_by(year, id) %>%
summarize(avg_days_visited = mean(days_visited, na.rm = TRUE)) %>%
ungroup()
avg_days_2018 <- avg_days_per_year %>% filter(year == 2018)
avg_days_2019 <- avg_days_per_year %>% filter(year == 2019)
avg_days_2020 <- avg_days_per_year %>% filter(year == 2020)
avg_days_2021 <- avg_days_per_year %>% filter(year == 2021)
avg_days_2022 <- avg_days_per_year %>% filter(year == 2022)
avg_days_2023 <- avg_days_per_year %>% filter(year == 2023)
# Function to process data for a single year
process_year <- function(year_input) {
data_year <- reservation_data %>% filter(year == year_input)
unique_visits <- data_year %>%
filter(!is.na(CheckinDate)) %>%
distinct(id, parkname, CheckinDate) %>%
group_by(id, parkname) %>%
summarize(VisitCount = n(), .groups = "drop")
all_combinations <- expand.grid(
id = unique(data_year$id),
parkname = unique(data_year$parkname),
stringsAsFactors = FALSE
)
visit_data <- all_combinations %>%
left_join(unique_visits, by = c("id", "parkname")) %>%
mutate(VisitCount = ifelse(is.na(VisitCount), 0, VisitCount))
person_info <- data_year %>%
select(id, Permittee, zip, Zip, NoOfGuests, days_visited, year) %>%
distinct()
long_resdata_count <- left_join(visit_data, person_info, by = "id")
long_resdata_count <- long_resdata_count %>%
mutate(island_park = case_when(
parkname == "Ainapo Cabin" ~ "Hawaii",
parkname == "Hipalau" ~ "Kauai",
parkname == "Kaluahaulu" ~ "Kauai",
parkname == "Kamananui Trail" ~ "Oahu",
parkname == "Kaunala Trail" ~ "Oahu",
parkname == "Kawaikoi" ~ "Kauai",
parkname == "Keanakolu Ranger & Bunkhouse Cabins" ~ "Hawaii",
parkname == "Kuaokala Trail" ~ "Oahu",
parkname == "Kulanaahane Trail" ~ "Oahu",
parkname == "Kuliouou Trail" ~ "Oahu",
parkname == "Lonomea" ~ "Kauai",
parkname == "Maakua Ridge Trail" ~ "Oahu",
parkname == "Manana Trail" ~ "Oahu",
parkname == "Peacock Flats Campsite" ~ "Oahu",
parkname == "Sugi Grove" ~ "Kauai",
parkname == "Waialae Cabin Campsite" ~ "Kauai",
parkname == "Waikoali" ~ "Kauai",
parkname == "Waikolu" ~ "Molokai",
parkname == "Waimano Trail" ~ "Oahu",
parkname == "Waimanu Campsite" ~ "Hawaii",
parkname == "Wiliwili" ~ "Kauai",
parkname == "Wiliwilinui Ridge Trail" ~ "Oahu",
TRUE ~ NA_character_
))
long_resdata_count <- long_resdata_count[order(long_resdata_count$id, long_resdata_count$parkname), ]
long_resdata_count$parkname_numeric <- as.integer(factor(long_resdata_count$parkname, levels = unique(long_resdata_count$parkname)))
long_resdata_count <- long_resdata_count %>%
distinct(id, parkname, .keep_all = TRUE)
final_data <- long_resdata_count %>%
left_join(
intra_island_distance %>%
select(zip, parkname, income, residents_distance_meters, residents_duration, island_live),
by = c("zip", "parkname")
)
final_data <- final_data %>%
group_by(id) %>%
mutate(visited_another_island = ifelse(any(island_park != island_live & VisitCount > 0), 1, 0)) %>%
ungroup()
final_data$travel_distance_km <- (final_data$residents_distance_meters / 1000) * 2
return(final_data)
}
# Run the function for each year
final_data_2018 <- process_year(2018)
final_data_2019 <- process_year(2019)
final_data_2020 <- process_year(2020)
final_data_2021 <- process_year(2021)
final_data_2022 <- process_year(2022)
final_data_2023 <- process_year(2023)
# Add correct avg_days_visited for each year by joining on id
final_data_2018 <- final_data_2018 %>%
left_join(avg_days_2018 %>% select(id, avg_days_visited), by = "id") %>%
mutate(days_visited = avg_days_visited)
final_data_2019 <- final_data_2019 %>%
left_join(avg_days_2019 %>% select(id, avg_days_visited), by = "id") %>%
mutate(days_visited = avg_days_visited)
final_data_2020 <- final_data_2020 %>%
left_join(avg_days_2020 %>% select(id, avg_days_visited), by = "id") %>%
mutate(days_visited = avg_days_visited)
final_data_2021 <- final_data_2021 %>%
left_join(avg_days_2021 %>% select(id, avg_days_visited), by = "id") %>%
mutate(days_visited = avg_days_visited)
final_data_2022 <- final_data_2022 %>%
left_join(avg_days_2022 %>% select(id, avg_days_visited), by = "id") %>%
mutate(days_visited = avg_days_visited)
final_data_2023 <- final_data_2023 %>%
left_join(avg_days_2023 %>% select(id, avg_days_visited), by = "id") %>%
mutate(days_visited = avg_days_visited)
## Travel cost per year calculations ##
##Adjusted for inflation
gas_prices <- data.frame(
year = c(2018, 2019, 2020, 2021, 2022, 2023),
gas_price = c(4.68, 4.49, 4.09, 4.75, 5.81, 5.09)
)
mean_gas_price <- (4.68+4.49+4.09+4.75+5.81+5.09)/6
# Inputs based on AAA Brochure 2018
fuel_efficiency_mpg <- 25
gas_price_hawaii_2018 <- 4.68 # in USD/gallon
maintenance_per_mile <- 0.0858*1.2816 # in USD/mile 2025 price
annual_miles <- 15000
annual_ownership_cost <- 6202*1.2816 # USD 2025 price
# Calculate total cost per mile
cost_per_mile <- (
(1 / fuel_efficiency_mpg * gas_price_hawaii_2018 * annual_miles) + # fuel cost
(maintenance_per_mile * annual_miles) + # maintenance
annual_ownership_cost # ownership
) / annual_miles # divide by miles to get per-mile cost
#https://exchange.aaa.com/wp-content/uploads/2018/09/18-0090_2018-Your-Driving-Costs-Brochure_FNL-Lo-5-2.pdf
# Show result
cost_per_mile
miles_to_km <- 1.60934
cost_per_km <- cost_per_mile / miles_to_km
cost_per_km
final_data_2018$price <- (final_data_2018$travel_distance_km * cost_per_km) / 3 +
((final_data_2018$income * 0.75) / 2080 * final_data_2018$travel_distance_km / 50)
# Inputs based on AAA Brochure 2019
fuel_efficiency_mpg <- 25
gas_price_hawaii_2019 <- 4.49 # in USD/gallon
maintenance_per_mile <- 0.0960*1.262 # in USD/mile 2025 price
annual_miles <- 15000
annual_ownership_cost <- 6845*1.262 # USD 2025 price
# Calculate total cost per mile
cost_per_mile <- (
(1 / fuel_efficiency_mpg * gas_price_hawaii_2019 * annual_miles) + # fuel cost
(maintenance_per_mile * annual_miles) + # maintenance
annual_ownership_cost # ownership
) / annual_miles # divide by miles to get per-mile cost
#https://exchange.aaa.com/wp-content/uploads/2019/09/AAA-Your-Driving-Costs-2019.pdf
# Show result
cost_per_mile
miles_to_km <- 1.60934
cost_per_km <- cost_per_mile / miles_to_km
cost_per_km
final_data_2019$price <- (final_data_2019$travel_distance_km * cost_per_km) / 3 +
((final_data_2019$income * 0.75) / 2080 * final_data_2019$travel_distance_km / 50)
# Inputs based on AAA Brochure 2020
fuel_efficiency_mpg <- 25
gas_price_hawaii_2020 <- 4.09 # in USD/gallon
maintenance_per_mile <- 0.1011*1.2314 # in USD/mile 2025 price
annual_miles <- 15000
annual_ownership_cost <- 6831*1.2314 # USD 2025 price
# Calculate total cost per mile
cost_per_mile <- (
(1 / fuel_efficiency_mpg * gas_price_hawaii_2020 * annual_miles) + # fuel cost
(maintenance_per_mile * annual_miles) + # maintenance
annual_ownership_cost # ownership
) / annual_miles # divide by miles to get per-mile cost
#https://newsroom.aaa.com/wp-content/uploads/2020/12/2020-Your-Driving-Costs-Brochure-Interactive-FINAL-12-9-20.pdf
# Show result
cost_per_mile
miles_to_km <- 1.60934
cost_per_km <- cost_per_mile / miles_to_km
cost_per_km
final_data_2020$price <- (final_data_2020$travel_distance_km * cost_per_km) / 3 +
((final_data_2020$income * 0.75) / 2080 * final_data_2020$travel_distance_km / 50)
# Inputs based on AAA Brochure 2021
fuel_efficiency_mpg <- 25
gas_price_hawaii_2021 <- 4.75 # in USD/gallon
maintenance_per_mile <- 0.1043*1.12144 # in USD/mile 2025 price
annual_miles <- 15000
annual_ownership_cost <- 6633*1.12144 # USD 2025 price
# Calculate total cost per mile
cost_per_mile <- (
(1 / fuel_efficiency_mpg * gas_price_hawaii_2021 * annual_miles) + # fuel cost
(maintenance_per_mile * annual_miles) + # maintenance
annual_ownership_cost # ownership
) / annual_miles # divide by miles to get per-mile cost
#https://newsroom.aaa.com/wp-content/uploads/2021/08/2021-YDC-Brochure-Live.pdf
# Show result
cost_per_mile
miles_to_km <- 1.60934
cost_per_km <- cost_per_mile / miles_to_km
cost_per_km
final_data_2021$price <- (final_data_2021$travel_distance_km * cost_per_km) / 3 +
((final_data_2021$income * 0.75) / 2080 * final_data_2021$travel_distance_km / 50)
# Inputs based on AAA Brochure 2022
fuel_efficiency_mpg <- 25
gas_price_hawaii_2022 <- 5.81 # in USD/gallon
maintenance_per_mile <- 0.1064*1.113 # in USD/mile 2025 price
annual_miles <- 15000
annual_ownership_cost <- 6599*1.113 # USD 2025 price
# Calculate total cost per mile
cost_per_mile <- (
(1 / fuel_efficiency_mpg * gas_price_hawaii_2022 * annual_miles) + # fuel cost
(maintenance_per_mile * annual_miles) + # maintenance
annual_ownership_cost # ownership
) / annual_miles # divide by miles to get per-mile cost
# Show result
cost_per_mile
miles_to_km <- 1.60934
cost_per_km <- cost_per_mile / miles_to_km
cost_per_km
final_data_2022$price <- (final_data_2022$travel_distance_km * cost_per_km) / 3 +
((final_data_2022$income * 0.75) / 2080 * final_data_2022$travel_distance_km / 50)
#https://newsroom.aaa.com/wp-content/uploads/2022/08/2022-YDC-Costs-Break-Out-by-Category.pdf
# Inputs based on AAA Brochure 2023
fuel_efficiency_mpg <- 25
gas_price_hawaii_2023 <- 5.09 # in USD/gallon
maintenance_per_mile <- 0.1085*1.0618 # in USD/mile 2025 price
annual_miles <- 15000
annual_ownership_cost <- 7542*1.0618 # USD 2025 price
# Calculate total cost per mile
cost_per_mile <- (
(1 / fuel_efficiency_mpg * gas_price_hawaii_2023 * annual_miles) + # fuel cost
(maintenance_per_mile * annual_miles) + # maintenance
annual_ownership_cost # ownership
) / annual_miles # divide by miles to get per-mile cost
# Show result
cost_per_mile
miles_to_km <- 1.60934
cost_per_km <- cost_per_mile / miles_to_km
cost_per_km
final_data_2023$price <- (final_data_2023$travel_distance_km * cost_per_km) / 3 +
((final_data_2023$income * 0.75) / 2080 * final_data_2023$travel_distance_km / 50)
#https://newsroom.aaa.com/wp-content/uploads/2023/08/YDC-Brochure_2023-FINAL-8.30.23-.pdf
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(parkname == "Ainapo Cabin", (30*days_visited)/3, 0),
price = price + ifelse(parkname == "Hipalau", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaluahaulu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kamananui Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaunala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kawaikoi", (20*days_visited)/3, 0),
price = price + ifelse(parkname == "Keanakolu Ranger & Bunkhouse Cabins", (60*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuaokala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kulanaahane Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuliouou Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Lonomea", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Maakua Ridge Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Manana Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Peacock Flats Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Sugi Grove", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waialae Cabin Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikoali", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikolu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimano Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimanu Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwili", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwilinui Ridge Trail", (12*days_visited)/3, 0))
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(parkname == "Ainapo Cabin", (30*days_visited)/3, 0),
price = price + ifelse(parkname == "Hipalau", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaluahaulu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kamananui Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaunala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kawaikoi", (20*days_visited)/3, 0),
price = price + ifelse(parkname == "Keanakolu Ranger & Bunkhouse Cabins", (60*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuaokala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kulanaahane Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuliouou Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Lonomea", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Maakua Ridge Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Manana Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Peacock Flats Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Sugi Grove", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waialae Cabin Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikoali", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikolu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimano Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimanu Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwili", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwilinui Ridge Trail", (12*days_visited)/3, 0))
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(parkname == "Ainapo Cabin", (30*days_visited)/3, 0),
price = price + ifelse(parkname == "Hipalau", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaluahaulu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kamananui Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaunala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kawaikoi", (20*days_visited)/3, 0),
price = price + ifelse(parkname == "Keanakolu Ranger & Bunkhouse Cabins", (60*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuaokala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kulanaahane Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuliouou Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Lonomea", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Maakua Ridge Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Manana Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Peacock Flats Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Sugi Grove", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waialae Cabin Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikoali", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikolu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimano Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimanu Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwili", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwilinui Ridge Trail", (12*days_visited)/3, 0))
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(parkname == "Ainapo Cabin", (30*days_visited)/3, 0),
price = price + ifelse(parkname == "Hipalau", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaluahaulu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kamananui Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaunala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kawaikoi", (20*days_visited)/3, 0),
price = price + ifelse(parkname == "Keanakolu Ranger & Bunkhouse Cabins", (60*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuaokala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kulanaahane Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuliouou Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Lonomea", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Maakua Ridge Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Manana Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Peacock Flats Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Sugi Grove", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waialae Cabin Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikoali", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikolu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimano Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimanu Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwili", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwilinui Ridge Trail", (12*days_visited)/3, 0))
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(parkname == "Ainapo Cabin", (30*days_visited)/3, 0),
price = price + ifelse(parkname == "Hipalau", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaluahaulu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kamananui Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaunala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kawaikoi", (20*days_visited)/3, 0),
price = price + ifelse(parkname == "Keanakolu Ranger & Bunkhouse Cabins", (60*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuaokala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kulanaahane Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuliouou Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Lonomea", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Maakua Ridge Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Manana Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Peacock Flats Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Sugi Grove", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waialae Cabin Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikoali", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikolu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimano Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimanu Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwili", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwilinui Ridge Trail", (12*days_visited)/3, 0))
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(parkname == "Ainapo Cabin", (30*days_visited)/3, 0),
price = price + ifelse(parkname == "Hipalau", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaluahaulu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kamananui Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kaunala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kawaikoi", (20*days_visited)/3, 0),
price = price + ifelse(parkname == "Keanakolu Ranger & Bunkhouse Cabins", (60*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuaokala Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kulanaahane Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Kuliouou Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Lonomea", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Maakua Ridge Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Manana Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Peacock Flats Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Sugi Grove", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waialae Cabin Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikoali", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waikolu", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimano Trail", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Waimanu Campsite", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwili", (12*days_visited)/3, 0),
price = price + ifelse(parkname == "Wiliwilinui Ridge Trail", (12*days_visited)/3, 0))
#########Value of travel time in air#########
### BIG ISLAND ###
##Insert value of spare time of travelling with flight to BI if live in Oahu (90 minutes before flight + 50 minutes flight time)
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu",
(((income * 0.75) / 2080) * 2.33) * 2, 0))
##Insert value of spare time of travelling with flight to BI if live in Kauai (90 minutes before flight + 55 minutes flight time)
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai",
(((income * 0.75) / 2080) * 2.42) * 2, 0))
##Insert value of spare time of travelling with flight to BI if live in Molokai (90 minutes before flight + 1.5 hour flight time one way)
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai",
(((income * 0.75) / 2080) * 3.5) * 2, 0))
### OAHU ###
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii",
(((income * 0.75) / 2080) * 2.33) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai",
(((income * 0.75) / 2080) * 2.17) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Molokai",
(((income * 0.75) / 2080) * 2.17) * 2, 0))
### KAUAI ###
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii",
(((income * 0.75) / 2080) * 2.42) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu",
(((income * 0.75) / 2080) * 2.17) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Molokai",
(((income * 0.75) / 2080) * 3.5) * 2, 0))
### MOLOKAI ###
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii",
(((income * 0.75) / 2080) * 3.5) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu",
(((income * 0.75) / 2080) * 2.17) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai",
(((income * 0.75) / 2080) * 3.5) * 2, 0))
### MAUI ###
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Maui",
(((income * 0.75) / 2080) * 2) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Maui",
(((income * 0.75) / 2080) * 2.17) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Maui",
(((income * 0.75) / 2080) * 2.33) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Maui",
(((income * 0.75) / 2080) * 2.17) * 2, 0))
### LANAI ###
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Lanai",
(((income * 0.75) / 2080) * 2) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Lanai",
(((income * 0.75) / 2080) * 2.17) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Lanai",
(((income * 0.75) / 2080) * 4.34) * 2, 0))
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai",
(((income * 0.75) / 2080) * 4.34) * 2, 0))
#########Value of travel time in air#########
### BIG ISLAND ###
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### OAHU ###
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### KAUAI ###
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MOLOKAI ###
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 3.5) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MAUI ###
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Maui", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### LANAI ###
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0))
#########Value of travel time in air#########
### BIG ISLAND ###
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### OAHU ###
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### KAUAI ###
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MOLOKAI ###
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 3.5) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MAUI ###
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Maui", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### LANAI ###
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0))
##
### BIG ISLAND ###
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### OAHU ###
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### KAUAI ###
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MOLOKAI ###
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 3.5) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MAUI ###
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Maui", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### LANAI ###
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0))
##
### BIG ISLAND ###
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### OAHU ###
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### KAUAI ###
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MOLOKAI ###
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 3.5) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MAUI ###
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Maui", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### LANAI ###
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0))
##
### BIG ISLAND ###
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### OAHU ###
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### KAUAI ###
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 2.42) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MOLOKAI ###
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (((income * 0.75) / 2080) * 3.5) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (((income * 0.75) / 2080) * 3.5) * 2, 0))
### MAUI ###
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Maui", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", (((income * 0.75) / 2080) * 2.33) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", (((income * 0.75) / 2080) * 2.17) * 2, 0))
### LANAI ###
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", (((income * 0.75) / 2080) * 2) * 2, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", (((income * 0.75) / 2080) * 2.17) * 2, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", (((income * 0.75) / 2080) * 4.34) * 2, 0))
## Flight costs 2018
#########Flight cost - 2018 #########
## BIG ISLAND ##
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", 354.0447586, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", 368.0753954, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", 308.7662656, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", 273.2598837, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", 354.0447586 + 137.8000852, 0)) # via Oahu
## OAHU ##
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", 354.0447586, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", 269.4129138, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", 112.5000815, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", 291.0965957, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", 137.8000852, 0))
## KAUAI ##
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", 368.0753954, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", 269.4129138, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", 317.7951903, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", 359.4733617, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", 336.1283623, 0))
## MOLOKAI ##
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", 308.7662656, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", 112.5000815, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", 317.7951903, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Maui", 118.8094464, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", 137.8000852 + 112.5000815, 0)) # via Oahu
## Flight costs 2019
## BIG ISLAND ##
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", 348.630216, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", 362.446277, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", 304.044185, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", 269.080816, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", 348.630216 + 135.692656, 0)) # via Oahu
## OAHU ##
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", 348.630216, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", 265.292679, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", 110.779575, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", 286.644744, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", 135.692656, 0))
## KAUAI ##
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", 362.446277, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", 265.292679, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", 312.935027, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", 353.975798, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", 330.987822, 0))
## MOLOKAI ##
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", 304.044185, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", 110.779575, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", 312.935027, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Maui", 118.809446, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", 135.692656 + 110.779575, 0)) # via Oahu
## Flight costs 2020
## BIG ISLAND ##
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", 340.176901, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", 353.657960, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", 296.671957, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", 262.556352, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", 340.176901 + 132.402485, 0)) # via Oahu
## OAHU ##
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", 340.176901, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", 258.860067, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", 108.093477, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", 279.694404, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", 132.402485, 0))
## KAUAI ##
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", 353.657960, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", 258.860067, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", 305.347220, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", 345.392866, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", 322.962286, 0))
## MOLOKAI ##
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", 296.671957, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", 108.093477, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", 305.347220, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Maui", 108.093477 + 279.6944039, 0), # via Oahu
price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", 132.402485 + 108.093477, 0)) # via Oahu
##Flight costs 2021
## Flight costs 2021
## BIG ISLAND ##
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", 309.800214, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", 322.077459, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", 296.6719565, 0), #Use value for 2020
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", 239.110927, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", 309.800214 + 132.4024851, 0)) # via Oahu #Use value for 2020 for Oahu to Lanai
## OAHU ##
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", 309.800214, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", 235.744708, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", 126.263151, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", 254.718607, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", 132.4024851, 0)) #Use value for 2020
## KAUAI ##
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", 322.077459, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", 235.744708, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", 389.441668, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", 314.550411, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", 235.744708 + 132.4024851, 0)) # via Oahu #Use value for 2020 for Oahu to Lanai
## MOLOKAI ##
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", 296.6719565, 0), #Use value for 2020
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", 120.699975, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", 389.441668, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Maui", 120.699975 + 254.718607, 0), # via Oahu
price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", 126.263151 + 120.699975, 0)) # via Oahu
##Flight cost 2022
## Flight costs 2022
## BIG ISLAND ##
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", 307.468646, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", 319.6534918, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", 296.6719565, 0), #Use value for 2020
price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", 237.311369, 0),
price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", 307.468646 + 132.4024851, 0)) # via Oahu
## OAHU ##
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", 307.468646, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", 233.970485, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", 169.716317, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Maui", 252.801585, 0),
price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", 132.4024851, 0)) #Use value for 2020
## KAUAI ##
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", 319.6534918, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", 233.970485, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", 589.133955, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Maui", 312.1830927, 0),
price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", 233.970485 + 132.4024851, 0)) # via Oahu #Use value for 2020
## MOLOKAI ##
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", 296.6719565, 0), #Use value for 2020
price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", 169.716317, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", 275.9878642, 0),
price = price + ifelse(island_park == "Molokai" & island_live == "Maui", 169.716317 + 252.8015848, 0), # via Oahu
price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", 169.716317 + 132.4024851, 0)) # via Oahu
##Flight cost 2023
## HAWAII ##
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", 293.324536, 0)) %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", 304.948857, 0)) %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", 296.6719565, 0)) %>% #Use value for 2020
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Maui", 226.39462, 0)) %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Lanai", 132.4024851 + 293.324536, 0))
## OAHU ##
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", 293.324536, 0)) %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", 223.207422, 0)) %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", 169.464607, 0)) %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Maui", 241.172258, 0)) %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Lanai", 132.4024851, 0)) #Use value for 2020
## KAUAI ##
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", 304.948857, 0)) %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", 223.207422, 0)) %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", 500.736032, 0)) %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Maui", 297.822109, 0)) %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Lanai", 223.207422 + 132.4024851, 0))
## MOLOKAI ##
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", 296.6719565, 0)) %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", 169.464607, 0)) %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", 263.291927, 0)) %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Maui", 241.172258 + 169.464607, 0)) %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Lanai", 132.4024851 + 169.464607, 0))
#########Car rental cost#########
### BIG ISLAND ###
#On average a rental car in The Big Island costs $430 per week ($61 per day).
##Insert car rental cost in BI
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (61 * days_visited)/3.78, 0))
### OAHU ###
#On average a rental car in Oahu is $48/day
##Insert car rental cost in Oahu
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (48 * days_visited)/3.78, 0))
### Kauai ###
#On average a rental car in Kauai is $62/day
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (63 * days_visited)/3.78, 0))
### Molokai ###
#On average a rental car in Molokai is $107/day
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (107 * days_visited)/3.78, 0))
#########Parking fees#########
### Oahu ###
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
### Kauai ###
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
### Big Island ###
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2018 <- final_data_2018 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
### BIG ISLAND ###
#On average a rental car in The Big Island costs $430 per week ($61 per day).
##Insert car rental cost in BI
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (61 * days_visited)/3.78, 0))
### OAHU ###
#On average a rental car in Oahu is $48/day
##Insert car rental cost in Oahu
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (48 * days_visited)/3.78, 0))
### Kauai ###
#On average a rental car in Kauai is $62/day
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (63 * days_visited)/3.78, 0))
### Molokai ###
#On average a rental car in Molokai is $107/day
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (107 * days_visited)/3.78, 0))
#########Parking fees#########
### Oahu ###
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
### Kauai ###
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
### Big Island ###
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2019 <- final_data_2019 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
### BIG ISLAND ###
#On average a rental car in The Big Island costs $430 per week ($61 per day).
##Insert car rental cost in BI
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (61 * days_visited)/3.78, 0))
### OAHU ###
#On average a rental car in Oahu is $48/day
##Insert car rental cost in Oahu
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (48 * days_visited)/3.78, 0))
### Kauai ###
#On average a rental car in Kauai is $62/day
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (63 * days_visited)/3.78, 0))
### Molokai ###
#On average a rental car in Molokai is $107/day
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (107 * days_visited)/3.78, 0))
#########Parking fees#########
### Oahu ###
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
### Kauai ###
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
### Big Island ###
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2020 <- final_data_2020 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
### BIG ISLAND ###
#On average a rental car in The Big Island costs $430 per week ($61 per day).
##Insert car rental cost in BI
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (61 * days_visited)/3.78, 0))
### OAHU ###
#On average a rental car in Oahu is $48/day
##Insert car rental cost in Oahu
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (48 * days_visited)/3.78, 0))
### Kauai ###
#On average a rental car in Kauai is $62/day
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (63 * days_visited)/3.78, 0))
### Molokai ###
#On average a rental car in Molokai is $107/day
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (107 * days_visited)/3.78, 0))
#########Parking fees#########
### Oahu ###
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
### Kauai ###
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
### Big Island ###
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2021 <- final_data_2021 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
### BIG ISLAND ###
#On average a rental car in The Big Island costs $430 per week ($61 per day).
##Insert car rental cost in BI
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (61 * days_visited)/3.78, 0))
### OAHU ###
#On average a rental car in Oahu is $48/day
##Insert car rental cost in Oahu
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (48 * days_visited)/3.78, 0))
### Kauai ###
#On average a rental car in Kauai is $62/day
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (63 * days_visited)/3.78, 0))
### Molokai ###
#On average a rental car in Molokai is $107/day
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (107 * days_visited)/3.78, 0))
#########Parking fees#########
### Oahu ###
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
### Kauai ###
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
### Big Island ###
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2022 <- final_data_2022 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
### BIG ISLAND ###
#On average a rental car in The Big Island costs $430 per week ($61 per day).
##Insert car rental cost in BI
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (61 * days_visited)/3.78, 0))
##Insert car rental cost in BI
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Molokai", (61 * days_visited)/3.78, 0))
### OAHU ###
#On average a rental car in Oahu is $48/day
##Insert car rental cost in Oahu
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (48 * days_visited)/3.78, 0))
##Insert car rental cost in Oahu
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Molokai", (48 * days_visited)/3.78, 0))
### Kauai ###
#On average a rental car in Kauai is $62/day
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (63 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Molokai", (63 * days_visited)/3.78, 0))
### Molokai ###
#On average a rental car in Molokai is $107/day
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (107 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (107 * days_visited)/3.78, 0))
#########Parking fees#########
### Oahu ###
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Oahu", (22 * days_visited)/3.78, 0))
### Kauai ###
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Hawaii" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Kauai", (24 * days_visited)/3.78, 0))
### Big Island ###
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Oahu" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Kauai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Insert car rental cost in Kauai
final_data_2023 <- final_data_2023 %>%
mutate(price = price + ifelse(island_park == "Molokai" & island_live == "Hawaii", (24 * days_visited)/3.78, 0))
##Mean travel cost
summary(final_data_2018$price)
final_data_2018 <- final_data_2018 %>%
arrange(Permittee, parkname)
final_data_2018$parkname_numeric <- as.integer(factor(final_data_2018$parkname, levels = unique(final_data_2018$parkname)))
##Mean travel cost
summary(final_data_2019$price)
final_data_2019 <- final_data_2019 %>%
arrange(Permittee, parkname)
final_data_2019$parkname_numeric <- as.integer(factor(final_data_2019$parkname, levels = unique(final_data_2019$parkname)))
##Mean travel cost
summary(final_data_2020$price)
final_data_2020 <- final_data_2020 %>%
arrange(Permittee, parkname)
final_data_2020$parkname_numeric <- as.integer(factor(final_data_2020$parkname, levels = unique(final_data_2020$parkname)))
##Mean travel cost
summary(final_data_2021$price)
final_data_2021 <- final_data_2021 %>%
arrange(Permittee, parkname)
final_data_2021$parkname_numeric <- as.integer(factor(final_data_2021$parkname, levels = unique(final_data_2021$parkname)))
##Mean travel cost
summary(final_data_2022$price)
final_data_2022 <- final_data_2022 %>%
arrange(Permittee, parkname)
final_data_2022$parkname_numeric <- as.integer(factor(final_data_2022$parkname, levels = unique(final_data_2022$parkname)))
##Mean travel cost
summary(final_data_2023$price)
final_data_2023 <- final_data_2023 %>%
arrange(Permittee, parkname)
final_data_2023$parkname_numeric <- as.integer(factor(final_data_2023$parkname, levels = unique(final_data_2023$parkname)))
```
#### Rum
```{r setup}
#| cache: true
#| message: false
#| warning: false
#| code-fold: true
#| code-summary: "Show the Code"
# Create unique choice occasions for every visit
data_rum <- final_data_2018 %>%
filter(VisitCount > 0) %>%
uncount(VisitCount) %>%
group_by(id) %>%
mutate(choice_id = paste0(id, "_", row_number())) %>%
ungroup() %>%
select(choice_id, id, chosen_park = parkname) %>%
expand_grid(parkname = unique(final_data_2018$parkname)) %>%
mutate(choice = (chosen_park == parkname)) %>%
left_join(final_data_2018 %>% select(id, parkname, price/NoOfGuests, travel_distance_km,income,zip),
by = c("id", "parkname"))
# Create Stay at Home
# Create the Stay-at-Home option for every choice occasion
outside_home <- data_rum %>%
distinct(choice_id, id,income,zip) %>%
mutate(
parkname = "Stay_Home",
choice = FALSE,
price = 0,
travel_distance_km = 0
)
# Combine with your existing data
data_rum<- bind_rows(data_rum, outside_home)
# Re-format for mlogit
df_rum <- dfidx(data_rum,
idx = list("choice_id", "parkname"),
shape = "long")
# Simple Multinomial Logit
rum_mle <- mlogit(choice ~ price | 1, data = df_rum)
summary(rum_mle)
# Calculate the 'Logsum' (Total Utility) for the status quo
logsum_base <- logsum(rum_mle)
# 1. Convert df_rum to a standard data frame for our math
df_math <- as.data.frame(df_rum)
# 2. Extract the IDs and Park names from the 'idx' column
# idx(df_rum, 1) gets the 'choice_id'
# idx(df_rum, 2) gets the 'parkname'
df_math$trip_id <- as.character(idx(df_rum, 1))
df_math$park_name <- as.character(idx(df_rum, 2))
# 3. Calculate the Systematic Utility (V)
# This uses the model coefficients and the data matrix
df_math$V <- as.numeric(model.matrix(rum_mle) %*% coef(rum_mle))
# 4. Double check the columns are there
head(df_math[, c("trip_id", "park_name", "V")])
```
#### McFaddenR2
The mlogit gives NA so running manually to calculate McFadden to double check the R2
and it above .2 so that great
```{r}
#| cache: true
# 1. Estimate your model (The "Full" model)
rum_full <- mlogit(choice ~ price | 1, data = df_rum)
# 2. Estimate the "Null" model (Intersects only, no price)
# Use '0' for the first part of the formula to remove choice-specific variables
rum_null <- mlogit(choice ~ 0 | 1, data = df_rum)
# 3. Use the lrtest function to get your Chi-square and p-value
lr_test_result <- lrtest(rum_full, rum_null)
print(lr_test_result)
# 4. Calculate McFadden's R-squared manually
ll_full <- as.numeric(logLik(rum_full))
ll_null <- as.numeric(logLik(rum_null))
mcfadden_r2 <- 1 - (ll_full / ll_null)
print(paste("Manual McFadden R2:", round(mcfadden_r2, 4)))
```
## Function
This function calculate the rum welfare manual and is used for each year to get a comparison to the MDCEV.
# Per Person Stay-At-Home
```{r}
#| cache: true
#| message: false
#| warning: false
#| code-fold: true
#| code-summary: "Show the Code"
years <- 2018:2023
mcfadden_list <- list()
model_list_obs <- list()
# --- 1. Robust Welfare Function ---
# Passing 'mle' and 'data' as arguments to avoid "Global Object" confusion
calc_rum_welfare <- function(target_park, current_mle, current_math_df) {
beta_price <- coef(current_mle)["price"]
welfare <- current_math_df %>%
group_by(trip_id) %>%
summarise(
ls_base = log(sum(exp(V))),
# Calculate utility if the target park/Stay_Home was REMOVED
ls_policy = log(sum(exp(V[park_name != target_park]))),
.groups = "drop"
) %>%
mutate(cv_trip = (ls_policy - ls_base) / -beta_price) %>%
mutate(id = as.character(str_remove(trip_id, "_\\d+$"))) %>%
group_by(id) %>%
summarise(annual_rum_loss = sum(cv_trip, na.rm = TRUE), .groups = "drop")
return(welfare)
}
# --- 2. Main Loop ---
final_comparison <- map_df(years, function(yr) {
message(paste(">>> Processing Year:", yr))
# Load data (ensure it exists)
current_data <- get(paste0("final_data_", yr))
# CLEANING: Ensure unique user profiles to avoid "Many-to-Many" warnings
unique_users <- current_data %>%
group_by(id) %>%
summarise(zip = first(zip), income = first(income), .groups = "drop") %>%
mutate(id = as.character(id))
# SITE MAPPING: Force "Stay_Home" to Site 22
physical_parks <- unique(current_data$parkname)
site_lookup <- data.frame(
site = seq_along(physical_parks),
parkname = physical_parks
) %>%
bind_rows(data.frame(site = 22, parkname = "Stay_Home"))
# List of all alternatives to test (including Stay_Home)
parks_to_test <- site_lookup$parkname
# 1. Create Choice Data
data_rum_raw <- current_data %>%
filter(VisitCount > 0) %>%
uncount(VisitCount) %>%
group_by(id) %>%
mutate(choice_id = paste0(id, "_", row_number())) %>%
ungroup() %>%
select(choice_id, id, chosen_park = parkname) %>%
expand_grid(parkname = physical_parks) %>%
mutate(choice = (chosen_park == parkname)) %>%
left_join(current_data %>% select(id, parkname, price), by = c("id", "parkname"))
# 2. Add Outside Option
outside_home <- data_rum_raw %>%
distinct(choice_id, id) %>%
mutate(parkname = "Stay_Home", choice = FALSE, price = 0)
data_rum_combined <- bind_rows(data_rum_raw, outside_home)
# 3. Model Estimation with Error Handling (Fixes the 2020 crash)
df_idx_local <- dfidx(data_rum_combined, idx = list("choice_id", "parkname"), shape = "long")
rum_mle <- tryCatch({
mlogit(choice ~ price | 1, data = df_idx_local, method = "nr")
}, error = function(e) {
# Try BHHH method if NR fails (common in 2020 data)
message("NR failed, trying BHHH solver...")
mlogit(choice ~ price | 1, data = df_idx_local, method = "bhhh")
})
model_list_obs[[paste0("Year_", yr)]] <<- rum_mle
# 4. Prepare Math Data for this specific year
df_math_local <- as.data.frame(df_idx_local)
df_math_local$trip_id <- as.character(idx(df_idx_local, 1))
df_math_local$park_name <- as.character(idx(df_idx_local, 2))
df_math_local$V <- as.numeric(model.matrix(rum_mle) %*% coef(rum_mle))
# 5. RUM Welfare Calculation (Now includes Stay_Home)
rum_results <- map_df(parks_to_test, function(p) {
res <- calc_rum_welfare(p, rum_mle, df_math_local)
res$parkname <- p
return(res)
})
# 6. Bring in MDCEV Data (Using Site 22 for Stay_Home)
mdcev_indiv <- read_csv(paste0("data/welfare_", yr, "_ind.csv"), show_col_types = FALSE) %>%
left_join(site_lookup, by = "site") %>%
mutate(id = as.character(id)) %>%
select(id, parkname, mdcev_annual_loss = mean_value) %>%
filter(!is.na(parkname)) # Remove sites not in our lookup
# 7. Final Join
year_comparison <- rum_results %>%
left_join(mdcev_indiv, by = c("id", "parkname")) %>%
left_join(unique_users, by = "id") %>%
mutate(
year = yr,
difference = annual_rum_loss - mdcev_annual_loss
)
return(year_comparison)
})
saveRDS(model_list_obs, "data/model_list_obs.rds")
```
# Per person 52-weeks
```{r}
#| cache: true
#| message: false
#| warning: false
#| code-fold: true
#| code-summary: "Show the Code"
years <- 2018:2023
# Same Mcfadden and coefficient holders
model_list_52 <- list()
mcfadden_list_52 <- list()
#Welfare Function ---
calc_rum_welfare_per_person <- function(target_park, current_mle, current_math_df) {
beta_price <- coef(current_mle)["price"]
welfare_by_id <- current_math_df %>%
group_by(trip_id) %>%
summarise(
ls_base = log(sum(exp(V))),
ls_policy = log(sum(exp(V[park_name != target_park]))),
.groups = "drop"
) %>%
mutate(cv_week = (ls_policy - ls_base) / -beta_price) %>%
mutate(id = as.character(str_remove(trip_id, "_w\\d+$"))) %>%
group_by(id) %>%
summarise(annual_rum_loss = sum(cv_week, na.rm = TRUE), .groups = "drop")
return(welfare_by_id)
}
# --- 2. Main Loop ---
final_comparison_52_person <- map_df(years, function(yr) {
message(paste(">>> Processing Year (52-week):", yr))
current_data <- get(paste0("final_data_", yr))
# Setup a 52 week decision
unique_users <- current_data %>%
group_by(id) %>%
summarise(zip = first(zip), income = first(income), .groups = "drop") %>%
mutate(id = as.character(id))
all_parks <- unique(current_data$parkname)
# --- SITE LOOKUP: Force Stay_Home to Site 22 ---
site_lookup <- data.frame(
site = seq_along(all_parks),
parkname = all_parks
) %>%
bind_rows(data.frame(site = 22, parkname = "Stay_Home"))
# Ensure "Stay_Home" is in the welfare test list
parks_to_test <- site_lookup$parkname
# Expand to 52 Weeks
df_52_weeks <- unique_users %>%
expand_grid(week = 1:52) %>%
mutate(choice_id = paste0(id, "_w", week))
actual_trips <- current_data %>%
filter(VisitCount > 0) %>%
uncount(VisitCount) %>%
group_by(id) %>%
mutate(week = row_number()) %>%
filter(week <= 52) %>%
ungroup() %>%
select(id, week, chosen_park = parkname) %>%
mutate(id = as.character(id))
# 2. Build Choice Set
df_rum_final <- df_52_weeks %>%
left_join(actual_trips, by = c("id", "week")) %>%
mutate(chosen_park = replace_na(chosen_park, "Stay_Home")) %>%
expand_grid(parkname = c(all_parks, "Stay_Home")) %>%
mutate(choice = (chosen_park == parkname)) %>%
left_join(current_data %>% mutate(id = as.character(id)) %>% select(id, parkname, price),
by = c("id", "parkname")) %>%
mutate(price = replace_na(price, 0))
# Model Estimation with tryCatch (Fixes 2020 error)
df_idx_local <- dfidx(df_rum_final, idx = list("choice_id", "parkname"), shape = "long")
rum_mle_52 <- tryCatch({
mlogit(choice ~ price | 1 , data = df_idx_local, method = "nr")
}, error = function(e) {
message("NR Solver failed, trying BHHH...")
mlogit(choice ~ price | 1 , data = df_idx_local, method = "bhhh")
})
model_list_52[[paste("52wk", yr)]] <<- rum_mle_52
# McFadden R2 calculation
rum_null <- mlogit(choice ~ 1 | 1, data = df_idx_local)
ll_mod <- as.numeric(logLik(rum_mle_52))
ll_null <- as.numeric(logLik(rum_null))
mcf_r2 <- 1 - (ll_mod / ll_null)
mcfadden_list_52[[paste("52weeks", yr)]] <<- format(round(mcf_r2, 3), nsmall = 3)
df_math_local <- as.data.frame(df_idx_local)
df_math_local$trip_id <- as.character(idx(df_idx_local, 1))
df_math_local$park_name <- as.character(idx(df_idx_local, 2))
df_math_local$V <- as.numeric(model.matrix(rum_mle_52) %*% coef(rum_mle_52))
# RUM Welfare Calculations (Including Stay_Home)
rum_person_results <- map_df(parks_to_test, function(p) {
res <- calc_rum_welfare_per_person(p, rum_mle_52, df_math_local)
res$parkname <- p
return(res)
})
# Bring in MDCEV Individual Welfare
mdcev_indiv <- read_csv(paste0("data/welfare_", yr, "_ind.csv"), show_col_types = FALSE) %>%
left_join(site_lookup, by = "site") %>%
mutate(id = as.character(id)) %>%
select(id, parkname, mdcev_annual_loss = mean_value) %>%
filter(!is.na(parkname)) # Ensures we only keep matched sites
# Final Join
year_comparison <- rum_person_results %>%
left_join(mdcev_indiv, by = c("id", "parkname")) %>%
left_join(unique_users, by = "id") %>%
mutate(
year = yr,
difference = annual_rum_loss - mdcev_annual_loss
)
return(year_comparison)
})
saveRDS(model_list_52, "data/model_list_52.rds")
```
# Full Closure
```{r}
#| cache: true
#| message: false
#| warning: false
#| code-fold: true
#| code-summary: "Show the Code"
# 1. Extract the Price Coefficient
beta_price <- coef(rum_mle)["price"]
# 2. Calculate Total System Welfare Loss
# We compare the current state (All Parks) to the "Closed" state (Stay_Home Only)
total_system_welfare <- df_math %>%
group_by(trip_id) %>%
summarise(
# Inclusive value (Log-Sum) of the current world:
ls_base = log(sum(exp(V))),
# Inclusive value if ONLY 'Stay_Home' exists (Everything else removed):
ls_policy = log(sum(exp(V[park_name == "Stay_Home"]))),
.groups = "drop"
) %>%
# Welfare formula: (LS_policy - LS_base) / -beta_price
mutate(cv_week = (ls_policy - ls_base) / -beta_price) %>%
# Group by User ID to get the Annual Total
mutate(id = as.character(str_remove(trip_id, "_w\\d+$"))) %>%
group_by(id) %>%
summarise(annual_system_loss = sum(cv_week, na.rm = TRUE), .groups = "drop")
# 3. View the Results
summary_stats <- total_system_welfare %>%
summarise(
Mean_Annual_Value = mean(annual_system_loss),
Median_Annual_Value = median(annual_system_loss),
Total_Sample_Value = sum(annual_system_loss)
)
print(summary_stats)
```
# Coeffienct Table
```{r}
#| cache: true
#| message: false
#| warning: false
#| code-fold: true
#| code-summary: "Show the Code"
# Create a specific list for the 2018/2023 comparison
# We alternate them: [Obs 2018, 52wk 2018, Obs 2023, 52wk 2023]
comparison_list <- list(
"Observed" = model_list_obs[["Year_2018"]],
"52-Week" = model_list_52[["52wk 2018"]],
"Observed" = model_list_obs[["Year_2023"]],
"52-Week" = model_list_52[["52wk 2023"]]
)
```
```{r}
#| cache: true
#| eval: false
# 2. Generate the Professionally Grouped Table
# Ensure your lists exist and are not empty before running this
stargazer(
comparison_list,
type = "html",
out = "tables/rum_comparison_results.html",
title = "Table: Comparison of RUM Specifications (2018 vs. 2023)",
# --- THE KEY ARGUMENT FOR SIDE-BY-SIDE SEs ---
single.row = TRUE,
column.labels = c("2018", "2023"),
column.separate = c(2, 2),
model.names = TRUE,
dep.var.labels.include = FALSE,
model.numbers = FALSE,
# Pulling Price (22) and Bunker (6) to the top
order = c(22, 6),
covariate.labels = c("Travel Cost (Price)", "Keanakolu Bunkhouse"),
omit.stat = c("f", "ser", "lr", "rsq", "adj.rsq"),
star.cutoffs = c(0.05, 0.01, 0.001),
no.space = TRUE,
notes = "Standard errors in parentheses next to coefficients. 52-Week model includes 'Stay-at-Home'."
)
```
# All Coefficent
```{r}
#| cache: true
#| message: false
#| warning: false
#| code-fold: true
#| code-summary: "Show the Code"
# Create a specific list for the 2018/2023 comparison
comparison_list <- list(
"Observed" = model_list_obs[["Year_2018"]],
"52-Week" = model_list_52[["52wk 2018"]],
"Observed" = model_list_obs[["Year_2019"]],
"52-Week" = model_list_52[["52wk 2019"]],
"Observed" = model_list_obs[["Year_2020"]],
"52-Week" = model_list_52[["52wk 2020"]],
"Observed" = model_list_obs[["Year_2021"]],
"52-Week" = model_list_52[["52wk 2021"]],
"Observed" = model_list_obs[["Year_2022"]],
"52-Week" = model_list_52[["52wk 2022"]],
"Observed" = model_list_obs[["Year_2023"]],
"52-Week" = model_list_52[["52wk 2023"]]
)
```
```{r}
#| cache: true
#| eval: false
stargazer(
comparison_list,
type = "html",
out = "tables/rum_comparison_results_appendix.html",
title = "Table: Comparison of RUM Specifications (2018 vs. 2023)",
column.labels = c("2018", "2019","2020","2021","2022","2023"),
column.separate = c(2, 2),
model.names = TRUE,
dep.var.labels.include = FALSE,
model.numbers = FALSE,
# Use 'order' to pull Price (22) and Bunker (6) to the top of the table
# This keeps the table concise and professional
order = c(23, 6),
# Rename only the ones we kept at the top
covariate.labels = c("Travel Cost (Price)", "Keanakolu Bunkhouse"),
omit.stat = c("f", "ser", "lr", "rsq", "adj.rsq"),
star.cutoffs = c(0.05, 0.01, 0.001),
no.space = TRUE,
notes = "Standard errors in parentheses. 52-Week model includes 'Stay-at-Home' as a weekly choice."
)
```
#### Merge
```{r}
#| cache: true
#| message: false
#| warning: false
#| code-fold: true
#| code-summary: "Show the Code"
final_comparison_master <- final_comparison %>%
# Select and rename columns from the first dataset
select(id, parkname, year, zip, income,
loss_rum_observed = annual_rum_loss,
loss_mdcev = mdcev_annual_loss) %>%
full_join(
final_comparison_52_person %>%
select(id, parkname, year, loss_rum_52wk = annual_rum_loss),
by = c("id", "parkname", "year")
)
head(final_comparison_master)
#write_csv(final_comparison_master, "data/final_comparison_master.csv")
```