From 2046f2718cf24d3d6d35ee0361dd7045efa6e694 Mon Sep 17 00:00:00 2001 From: George Athanasopoulos Date: Sat, 22 Feb 2025 14:48:21 +1100 Subject: [PATCH] Added image for Trips --- .../week1/activities/execute-results/html.json | 4 ++-- week1/activities.qmd | 5 +++++ week1/figs/Tourism.png | Bin 0 -> 46763 bytes 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 week1/figs/Tourism.png diff --git a/_freeze/week1/activities/execute-results/html.json b/_freeze/week1/activities/execute-results/html.json index 9e986fa..db82325 100644 --- a/_freeze/week1/activities/execute-results/html.json +++ b/_freeze/week1/activities/execute-results/html.json @@ -1,8 +1,8 @@ { - "hash": "77e2bf37feef44a796133831be3a0ef6", + "hash": "ffdf6a503f91b09a9256ca050a4ab108", "result": { "engine": "knitr", - "markdown": "---\ntitle: \"Activities: Week 1\"\neditor: source\nengine: knitr\nfilters:\n - live\n - quiz-teachr\nojs-engine: true\nwebr:\n packages:\n - qlcheckr\n - fpp3\n - urca\n autoload-packages: false\n repos:\n - https://repo.r-wasm.org/\n - https://learnr-academy.github.io/qlcheckr\n---\n\n::: {.cell}\n\n:::\n\n\n\n\n# Time series data and patterns\n\n## Exercise 1\n\nThe `pedestrian` dataset contains hourly pedestrian counts from 2015-01-01 to 2016-12-31 at 4 sensors in the city of Melbourne.\n\nThe data is shown below:\n\n\n\n::: {.cell}\n::: {.cell-output .cell-output-stdout}\n\n```\n# A tibble: 66,037 × 5\n Sensor Date_Time Date Time Count\n \n 1 Birrarung Marr 2015-01-01 00:00:00 2015-01-01 0 1630\n 2 Birrarung Marr 2015-01-01 01:00:00 2015-01-01 1 826\n 3 Birrarung Marr 2015-01-01 02:00:00 2015-01-01 2 567\n 4 Birrarung Marr 2015-01-01 03:00:00 2015-01-01 3 264\n 5 Birrarung Marr 2015-01-01 04:00:00 2015-01-01 4 139\n 6 Birrarung Marr 2015-01-01 05:00:00 2015-01-01 5 77\n 7 Birrarung Marr 2015-01-01 06:00:00 2015-01-01 6 44\n 8 Birrarung Marr 2015-01-01 07:00:00 2015-01-01 7 56\n 9 Birrarung Marr 2015-01-01 08:00:00 2015-01-01 8 113\n10 Birrarung Marr 2015-01-01 09:00:00 2015-01-01 9 166\n# ℹ 66,027 more rows\n```\n\n\n:::\n:::\n\n\n\n::: {.callout-caution}\n## Your turn!\n\nIdentify the `index` variable, `key` variable(s), and measured variable(s) of this dataset.\n:::\n\n::: {.callout-tip}\n## Hint\n\n* The `index` variable contains the complete time information\n* The `key` variable(s) identify each time series\n* The measured variable(s) are what you want to explore/forecast.\n:::\n\n::: columns\n\n::: {.column width=\"30%\"}\n\n## `index` variable\n:::{.quiz-singlechoice}\n- [ ] [Sensor]{hint=\"x\"}\n- [X] [Date_Time]{hint=\"o\"}\n- [ ] [Date]{hint=\"x\"}\n- [ ] [Time]{hint=\"x\"}\n- [ ] [Count]{hint=\"x\"}\n:::\n:::\n\n::: {.column width=\"30%\"}\n\n## `key` variable(s)\n:::{.quiz-multichoice}\n- [X] [Sensor]{hint=\"o\"}\n- [ ] [Date_Time]{hint=\"x\"}\n- [ ] [Date]{hint=\"x\"}\n- [ ] [Time]{hint=\"x\"}\n- [ ] [Count]{hint=\"x\"}\n:::\n:::\n\n::: {.column width=\"40%\"}\n\n## measured variable(s)\n:::{.quiz-multichoice}\n- [ ] [Sensor]{hint=\"x\"}\n- [ ] [Date_Time]{hint=\"x\"}\n- [ ] [Date]{hint=\"x\"}\n- [ ] [Time]{hint=\"x\"}\n- [X] [Count]{hint=\"o\"}\n:::\n:::\n:::\n\n## Exercise 2\n\nThe `aus_accommodation` dataset contains quarterly data on Australian tourist accommodation from short-term non-residential accommodation with 15 or more rooms, 1998 Q1 - 2016 Q2. The first few lines are shown below.\n\n![](figs/spreadsheet.png)\n\nThe units of the measured variables are as follows:\n\n* Takings are in millions of Australian dollars\n* Occupancy is a percentage of rooms occupied\n* CPI is an index with value 100 in 2012 Q1.\n\n::: {.callout-caution}\n## Your turn!\n\nComplete the code to convert this dataset into a tsibble.\n:::\n\n\n\n::: {.cell exercise='make_tsibble'}\n```{webr}\n#| exercise: make_tsibble\nlibrary(______)\n\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(Date = as.Date(Date)) |>\n as_tsibble(\n ______\n )\naus_accommodation\n```\n:::\n\n::: {.cell exercise='make_tsibble' check='true'}\n```{webr}\n#| exercise: make_tsibble\n#| check: true\nlibrary(qlcheckr)\n\napply_checks(\n c(\n \"You need to load the fpp3 package!\" = !(\"fpp3\" %in% .packages()),\n \"You need to use the as_tsibble() function to convert the data into a tsibble.\" = !search_ast(ql_ast(), .fn = as_tsibble),\n \"You should specify which column provides the time of the measurements with `index`.\" = exists_in(ql_messages(), grepl, pattern = \"as index variable\", fixed = TRUE),\n \"You need to specify the key variables that identify each time series\" = exists_in(ql_errors(), grepl, pattern = \"distinct rows\", fixed = TRUE)\n ),\n .msg_correct = if (!exists_in(ql_results(), \\(x) is_tsibble(x) && is_yearquarter(x[[index_var(x)]]))) \"Great, you've got a tsibble!
Although something doesn't look right - check the frequency of the data, why isn't it quarterly?\" else \"That's correct! Well done.\"\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"make_tsibble\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nBegin by loading the `fpp3` library to use its time series functions.\n\n```r\nlibrary(fpp3)\n```\n:::\n:::\n\n::: { .hint exercise=\"make_tsibble\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter loading the `fpp3` package, convert the data frame into a tsibble.\n\n```r\nlibrary(fpp3)\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |> mutate(Date = as.Date(Date))\n```\n:::\n:::\n\n::: { .hint exercise=\"make_tsibble\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nRemember to specify the time index and key for `as_tsibble()` to function correctly.\n\n```r\nlibrary(fpp3)\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(Date = as.Date(Date)) |>\n as_tsibble(key = State, index = Date)\n```\n:::\n:::\n\n## Exercise 3\n\n:::{.callout-important}\n## Temporal granularity\n\nThe previous exercise produced a dataset with daily frequency - although clearly the data is quarterly! This is because we are using a daily granularity which is inappropriate for this data.\n:::\n\nCommon temporal granularities can be created with these functions:\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n\n\n|Granularity |Function |\n|:-----------|:--------------------|\n|Annual |`as.integer()` |\n|Quarterly |`yearquarter()` |\n|Monthly |`yearmonth()` |\n|Weekly |`yearweek()` |\n|Daily |`as_date()`, `ymd()` |\n|Sub-daily |`as_datetime()` |\n\n\n:::\n:::\n\n\n\n\n::: {.callout-caution}\n## Your turn!\n\nUse the appropriate granularity for the `aus_accommodation` dataset, and verify that the frequency is now quarterly.\n:::\n\n\n\n\n::: {.cell exercise='process_accommodation_data'}\n```{webr}\n#| exercise: process_accommodation_data\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(______) |>\n as_tsibble(\n key = State, index = ______\n )\n```\n:::\n\n::: {.cell exercise='process_accommodation_data' check='true'}\n```{webr}\n#| exercise: process_accommodation_data\n#| check: true\nlibrary(qlcheckr)\napply_checks(\n c(\n \"You need to load the fpp3 package!\" = !(\"fpp3\" %in% .packages()),\n \"You need to save the dataset as `aus_accommodation`\" = !exists(\"aus_accommodation\"),\n \"You need to use the as_tsibble() function to convert the data into a tsibble.\" = !search_ast(ql_ast(), .fn = as_tsibble),\n \"You need to specify the key variables that identify each time series\" = exists_in(ql_errors(), grepl, pattern = \"distinct rows\", fixed = TRUE),\n \"You should use `yearquarter()` to change the time column into a quarterly granularity\" = !is_yearquarter(aus_accommodation[[index_var(aus_accommodation)]])\n )\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"process_accommodation_data\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nStart by reading the CSV file and transform the data using `mutate()` and `yearquarter()` for the Date column.\n\n```r\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(Quarter = yearquarter(Date))\n```\n:::\n:::\n\n::: { .hint exercise=\"process_accommodation_data\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter transforming the Date column, make sure you convert the data frame to a tsibble.\n\n```r\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(Quarter = yearquarter(Date)) |>\n as_tsibble(key = State, index = Quarter)\n```\n:::\n:::\n\n## Exercise 4\n\nThe `tourism` dataset contains the quarterly overnight trips from 1998 Q1 to 2016 Q4 across Australia.\n\nIt is disaggregated by 3 key variables:\n\n* `State`: States and territories of Australia\n* `Region`: The tourism regions are formed through the aggregation of Statistical Local Areas (SLAs) which are defined by the various State and Territory tourism authorities according to their research and marketing needs\n* `Purpose`: Stopover purpose of visit: \"Holiday\", \"Visiting friends and relatives\", \"Business\", \"Other reason\".\n\nCalculate the total quarterly tourists visiting Victoria from the `tourism` dataset.\n\n\n\n::: {.cell exercise='filter_summarise_tourism'}\n```{webr}\n#| exercise: filter_summarise_tourism\ntourism |>\n filter(______) |>\n summarise(______)\n```\n:::\n\n::: {.cell exercise='filter_summarise_tourism' check='true'}\n```{webr}\n#| exercise: filter_summarise_tourism\n#| check: true\nlibrary(qlcheckr)\napply_checks(\n c(\n \"You need to load the fpp3 package!\" = !(\"fpp3\" %in% .packages()),\n \"You need to use the filter() function to extract only Victorian tourists.\" = !search_ast(ql_ast(), .fn = filter),\n \"You need to use the summarise() function to sum over the Region and Purpose keys.\" = !search_ast(ql_ast(), .fn = summarise)\n )\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"filter_summarise_tourism\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nTo start off, filter the `tourism` dataset for only Victoria.\n\n```r\ntourism |>\n filter(State == \"Victoria\")\n```\n:::\n:::\n\n::: { .hint exercise=\"filter_summarise_tourism\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter filtering, summarise the total trips for Victoria.\n\n```r\ntourism |>\n filter(State == \"Victoria\") |>\n summarise(Trips = sum(Trips))\n```\n:::\n:::\n\nFind what combination of `Region` and `Purpose` had the maximum number of overnight trips on average.\n\n\n\n::: {.cell exercise='group_summarise_filter_tourism'}\n```{webr}\n#| exercise: group_summarise_filter_tourism\ntourism |>\n as_tibble() |>\n group_by(______) |>\n summarise(______) |>\n filter(______)\n```\n:::\n\n::: {.cell exercise='group_summarise_filter_tourism' check='true'}\n```{webr}\n#| exercise: group_summarise_filter_tourism\n#| check: true\nlibrary(qlcheckr)\napply_checks(\n c(\n \"You need to load the fpp3 package!\" = !(\"fpp3\" %in% .packages()),\n \"You need to use the as_tibble() function to convert back to a tibble object.\" = !search_ast(ql_ast(), .fn = as_tibble),\n \"You need to use the group_by() function to group by Region and Purpose.\" = !search_ast(ql_ast(), .fn = group_by)\n )\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"group_summarise_filter_tourism\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nStart by using `as_tibble()` to convert `tourism` back to a tibble and group it by Region and Purpose.\n\n```r\ntourism |>\n as_tibble() |>\n group_by(Region, Purpose)\n```\n:::\n:::\n\n::: { .hint exercise=\"group_summarise_filter_tourism\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter grouping, summarise the mean number of trips and filter for maximum trips.\n\n```r\ntourism |>\n as_tibble() |>\n group_by(Region, Purpose) |>\n summarise(Trips = mean(Trips), .groups = \"drop\") |>\n filter(Trips == max(Trips))\n```\n:::\n:::\n\nCreate a new tsibble which combines the Purposes and Regions, and just has total trips by State.\n\n\n\n::: {.cell exercise='summarise_tourism_by_state'}\n```{webr}\n#| exercise: summarise_tourism_by_state\ntourism |>\n group_by(______) |>\n summarise(______)\n```\n:::\n\n::: {.cell exercise='summarise_tourism_by_state' check='true'}\n```{webr}\n#| exercise: summarise_tourism_by_state\n#| check: true\nlibrary(qlcheckr)\napply_checks(\n c(\n \"You need to group by the State to summarise trips for each state.\" = !search_ast(ql_ast(), .expr = group_by(State)),\n \"You need to use the summarise() function to sum trips for each state.\" = !search_ast(ql_ast(), .expr = summarise(Trips = sum(Trips)))\n )\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"summarise_tourism_by_state\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nTo summarise the number of trips by each State, start by grouping the data by State.\n\n```r\ntourism |>\n group_by(State)\n```\n:::\n:::\n\n::: { .hint exercise=\"summarise_tourism_by_state\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter grouping, use the `summarise()` function to sum the trips.\n\n```r\ntourism |>\n group_by(State) |>\n summarise(Trips = sum(Trips))\n```\n:::\n:::\n", + "markdown": "---\ntitle: \"Activities: Week 1\"\neditor: source\nengine: knitr\nfilters:\n - live\n - quiz-teachr\nojs-engine: true\nwebr:\n packages:\n - qlcheckr\n - fpp3\n - urca\n autoload-packages: false\n repos:\n - https://repo.r-wasm.org/\n - https://learnr-academy.github.io/qlcheckr\n---\n\n::: {.cell}\n\n:::\n\n\n\n\n# Time series data and patterns\n\n## Exercise 1\n\nThe `pedestrian` dataset contains hourly pedestrian counts from 2015-01-01 to 2016-12-31 at 4 sensors in the city of Melbourne.\n\nThe data is shown below:\n\n\n\n::: {.cell}\n::: {.cell-output .cell-output-stdout}\n\n```\n# A tibble: 66,037 × 5\n Sensor Date_Time Date Time Count\n \n 1 Birrarung Marr 2015-01-01 00:00:00 2015-01-01 0 1630\n 2 Birrarung Marr 2015-01-01 01:00:00 2015-01-01 1 826\n 3 Birrarung Marr 2015-01-01 02:00:00 2015-01-01 2 567\n 4 Birrarung Marr 2015-01-01 03:00:00 2015-01-01 3 264\n 5 Birrarung Marr 2015-01-01 04:00:00 2015-01-01 4 139\n 6 Birrarung Marr 2015-01-01 05:00:00 2015-01-01 5 77\n 7 Birrarung Marr 2015-01-01 06:00:00 2015-01-01 6 44\n 8 Birrarung Marr 2015-01-01 07:00:00 2015-01-01 7 56\n 9 Birrarung Marr 2015-01-01 08:00:00 2015-01-01 8 113\n10 Birrarung Marr 2015-01-01 09:00:00 2015-01-01 9 166\n# ℹ 66,027 more rows\n```\n\n\n:::\n:::\n\n\n\n::: {.callout-caution}\n## Your turn!\n\nIdentify the `index` variable, `key` variable(s), and measured variable(s) of this dataset.\n:::\n\n::: {.callout-tip}\n## Hint\n\n* The `index` variable contains the complete time information\n* The `key` variable(s) identify each time series\n* The measured variable(s) are what you want to explore/forecast.\n:::\n\n::: columns\n\n::: {.column width=\"30%\"}\n\n## `index` variable\n:::{.quiz-singlechoice}\n- [ ] [Sensor]{hint=\"x\"}\n- [X] [Date_Time]{hint=\"o\"}\n- [ ] [Date]{hint=\"x\"}\n- [ ] [Time]{hint=\"x\"}\n- [ ] [Count]{hint=\"x\"}\n:::\n:::\n\n::: {.column width=\"30%\"}\n\n## `key` variable(s)\n:::{.quiz-multichoice}\n- [X] [Sensor]{hint=\"o\"}\n- [ ] [Date_Time]{hint=\"x\"}\n- [ ] [Date]{hint=\"x\"}\n- [ ] [Time]{hint=\"x\"}\n- [ ] [Count]{hint=\"x\"}\n:::\n:::\n\n::: {.column width=\"40%\"}\n\n## measured variable(s)\n:::{.quiz-multichoice}\n- [ ] [Sensor]{hint=\"x\"}\n- [ ] [Date_Time]{hint=\"x\"}\n- [ ] [Date]{hint=\"x\"}\n- [ ] [Time]{hint=\"x\"}\n- [X] [Count]{hint=\"o\"}\n:::\n:::\n:::\n\n## Exercise 2\n\nThe `aus_accommodation` dataset contains quarterly data on Australian tourist accommodation from short-term non-residential accommodation with 15 or more rooms, 1998 Q1 - 2016 Q2. The first few lines are shown below.\n\n![](figs/spreadsheet.png)\n\nThe units of the measured variables are as follows:\n\n* Takings are in millions of Australian dollars\n* Occupancy is a percentage of rooms occupied\n* CPI is an index with value 100 in 2012 Q1.\n\n::: {.callout-caution}\n## Your turn!\n\nComplete the code to convert this dataset into a tsibble.\n:::\n\n\n\n::: {.cell exercise='make_tsibble'}\n```{webr}\n#| exercise: make_tsibble\nlibrary(______)\n\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(Date = as.Date(Date)) |>\n as_tsibble(\n ______\n )\naus_accommodation\n```\n:::\n\n::: {.cell exercise='make_tsibble' check='true'}\n```{webr}\n#| exercise: make_tsibble\n#| check: true\nlibrary(qlcheckr)\n\napply_checks(\n c(\n \"You need to load the fpp3 package!\" = !(\"fpp3\" %in% .packages()),\n \"You need to use the as_tsibble() function to convert the data into a tsibble.\" = !search_ast(ql_ast(), .fn = as_tsibble),\n \"You should specify which column provides the time of the measurements with `index`.\" = exists_in(ql_messages(), grepl, pattern = \"as index variable\", fixed = TRUE),\n \"You need to specify the key variables that identify each time series\" = exists_in(ql_errors(), grepl, pattern = \"distinct rows\", fixed = TRUE)\n ),\n .msg_correct = if (!exists_in(ql_results(), \\(x) is_tsibble(x) && is_yearquarter(x[[index_var(x)]]))) \"Great, you've got a tsibble!
Although something doesn't look right - check the frequency of the data, why isn't it quarterly?\" else \"That's correct! Well done.\"\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"make_tsibble\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nBegin by loading the `fpp3` library to use its time series functions.\n\n```r\nlibrary(fpp3)\n```\n:::\n:::\n\n::: { .hint exercise=\"make_tsibble\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter loading the `fpp3` package, convert the data frame into a tsibble.\n\n```r\nlibrary(fpp3)\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |> mutate(Date = as.Date(Date))\n```\n:::\n:::\n\n::: { .hint exercise=\"make_tsibble\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nRemember to specify the time index and key for `as_tsibble()` to function correctly.\n\n```r\nlibrary(fpp3)\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(Date = as.Date(Date)) |>\n as_tsibble(key = State, index = Date)\n```\n:::\n:::\n\n## Exercise 3\n\n:::{.callout-important}\n## Temporal granularity\n\nThe previous exercise produced a dataset with daily frequency - although clearly the data is quarterly! This is because we are using a daily granularity which is inappropriate for this data.\n:::\n\nCommon temporal granularities can be created with these functions:\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n\n\n|Granularity |Function |\n|:-----------|:--------------------|\n|Annual |`as.integer()` |\n|Quarterly |`yearquarter()` |\n|Monthly |`yearmonth()` |\n|Weekly |`yearweek()` |\n|Daily |`as_date()`, `ymd()` |\n|Sub-daily |`as_datetime()` |\n\n\n:::\n:::\n\n\n\n\n::: {.callout-caution}\n## Your turn!\n\nUse the appropriate granularity for the `aus_accommodation` dataset, and verify that the frequency is now quarterly.\n:::\n\n\n\n\n::: {.cell exercise='process_accommodation_data'}\n```{webr}\n#| exercise: process_accommodation_data\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(______) |>\n as_tsibble(\n key = State, index = ______\n )\n```\n:::\n\n::: {.cell exercise='process_accommodation_data' check='true'}\n```{webr}\n#| exercise: process_accommodation_data\n#| check: true\nlibrary(qlcheckr)\napply_checks(\n c(\n \"You need to load the fpp3 package!\" = !(\"fpp3\" %in% .packages()),\n \"You need to save the dataset as `aus_accommodation`\" = !exists(\"aus_accommodation\"),\n \"You need to use the as_tsibble() function to convert the data into a tsibble.\" = !search_ast(ql_ast(), .fn = as_tsibble),\n \"You need to specify the key variables that identify each time series\" = exists_in(ql_errors(), grepl, pattern = \"distinct rows\", fixed = TRUE),\n \"You should use `yearquarter()` to change the time column into a quarterly granularity\" = !is_yearquarter(aus_accommodation[[index_var(aus_accommodation)]])\n )\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"process_accommodation_data\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nStart by reading the CSV file and transform the data using `mutate()` and `yearquarter()` for the Date column.\n\n```r\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(Quarter = yearquarter(Date))\n```\n:::\n:::\n\n::: { .hint exercise=\"process_accommodation_data\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter transforming the Date column, make sure you convert the data frame to a tsibble.\n\n```r\naus_accommodation <- read.csv(\n \"https://workshop.nectric.com.au/user2024/data/aus_accommodation.csv\"\n) |>\n mutate(Quarter = yearquarter(Date)) |>\n as_tsibble(key = State, index = Quarter)\n```\n:::\n:::\n\n## Exercise 4\n\nThe `tourism` dataset contains the quarterly overnight trips from 1998 Q1 to 2016 Q4 across Australia.\n\nIt is disaggregated by 3 key variables:\n\n* `State`: States and territories of Australia\n* `Region`: The tourism regions are formed through the aggregation of Statistical Local Areas (SLAs) which are defined by the various State and Territory tourism authorities according to their research and marketing needs\n* `Purpose`: Stopover purpose of visit: \"Holiday\", \"Visiting friends and relatives\", \"Business\", \"Other reason\".\n\nBelow is a preview.\n\n![](figs/Tourism.png){width=450px}\n\n\nCalculate the total quarterly tourists visiting Victoria from the `tourism` dataset.\n\n\n\n::: {.cell exercise='filter_summarise_tourism'}\n```{webr}\n#| exercise: filter_summarise_tourism\ntourism |>\n filter(______) |>\n summarise(______)\n```\n:::\n\n::: {.cell exercise='filter_summarise_tourism' check='true'}\n```{webr}\n#| exercise: filter_summarise_tourism\n#| check: true\nlibrary(qlcheckr)\napply_checks(\n c(\n \"You need to load the fpp3 package!\" = !(\"fpp3\" %in% .packages()),\n \"You need to use the filter() function to extract only Victorian tourists.\" = !search_ast(ql_ast(), .fn = filter),\n \"You need to use the summarise() function to sum over the Region and Purpose keys.\" = !search_ast(ql_ast(), .fn = summarise)\n )\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"filter_summarise_tourism\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nTo start off, filter the `tourism` dataset for only Victoria.\n\n```r\ntourism |>\n filter(State == \"Victoria\")\n```\n:::\n:::\n\n::: { .hint exercise=\"filter_summarise_tourism\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter filtering, summarise the total trips for Victoria.\n\n```r\ntourism |>\n filter(State == \"Victoria\") |>\n summarise(Trips = sum(Trips))\n```\n:::\n:::\n\nFind what combination of `Region` and `Purpose` had the maximum number of overnight trips on average.\n\n\n\n::: {.cell exercise='group_summarise_filter_tourism'}\n```{webr}\n#| exercise: group_summarise_filter_tourism\ntourism |>\n as_tibble() |>\n group_by(______) |>\n summarise(______) |>\n filter(______)\n```\n:::\n\n::: {.cell exercise='group_summarise_filter_tourism' check='true'}\n```{webr}\n#| exercise: group_summarise_filter_tourism\n#| check: true\nlibrary(qlcheckr)\napply_checks(\n c(\n \"You need to load the fpp3 package!\" = !(\"fpp3\" %in% .packages()),\n \"You need to use the as_tibble() function to convert back to a tibble object.\" = !search_ast(ql_ast(), .fn = as_tibble),\n \"You need to use the group_by() function to group by Region and Purpose.\" = !search_ast(ql_ast(), .fn = group_by)\n )\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"group_summarise_filter_tourism\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nStart by using `as_tibble()` to convert `tourism` back to a tibble and group it by Region and Purpose.\n\n```r\ntourism |>\n as_tibble() |>\n group_by(Region, Purpose)\n```\n:::\n:::\n\n::: { .hint exercise=\"group_summarise_filter_tourism\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter grouping, summarise the mean number of trips and filter for maximum trips.\n\n```r\ntourism |>\n as_tibble() |>\n group_by(Region, Purpose) |>\n summarise(Trips = mean(Trips), .groups = \"drop\") |>\n filter(Trips == max(Trips))\n```\n:::\n:::\n\nCreate a new tsibble which combines the Purposes and Regions, and just has total trips by State.\n\n\n\n::: {.cell exercise='summarise_tourism_by_state'}\n```{webr}\n#| exercise: summarise_tourism_by_state\ntourism |>\n group_by(______) |>\n summarise(______)\n```\n:::\n\n::: {.cell exercise='summarise_tourism_by_state' check='true'}\n```{webr}\n#| exercise: summarise_tourism_by_state\n#| check: true\nlibrary(qlcheckr)\napply_checks(\n c(\n \"You need to group by the State to summarise trips for each state.\" = !search_ast(ql_ast(), .expr = group_by(State)),\n \"You need to use the summarise() function to sum trips for each state.\" = !search_ast(ql_ast(), .expr = summarise(Trips = sum(Trips)))\n )\n)\n```\n:::\n\n\n\n::: { .hint exercise=\"summarise_tourism_by_state\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nTo summarise the number of trips by each State, start by grouping the data by State.\n\n```r\ntourism |>\n group_by(State)\n```\n:::\n:::\n\n::: { .hint exercise=\"summarise_tourism_by_state\"}\n::: { .callout-note collapse=\"false\"}\n## Hint\n\nAfter grouping, use the `summarise()` function to sum the trips.\n\n```r\ntourism |>\n group_by(State) |>\n summarise(Trips = sum(Trips))\n```\n:::\n:::\n", "supporting": [], "filters": [ "rmarkdown/pagebreak.lua" diff --git a/week1/activities.qmd b/week1/activities.qmd index 44274c5..d031dae 100644 --- a/week1/activities.qmd +++ b/week1/activities.qmd @@ -278,6 +278,11 @@ It is disaggregated by 3 key variables: * `Region`: The tourism regions are formed through the aggregation of Statistical Local Areas (SLAs) which are defined by the various State and Territory tourism authorities according to their research and marketing needs * `Purpose`: Stopover purpose of visit: "Holiday", "Visiting friends and relatives", "Business", "Other reason". +Below is a preview. + +![](figs/Tourism.png){width=450px} + + Calculate the total quarterly tourists visiting Victoria from the `tourism` dataset. ```{webr} diff --git a/week1/figs/Tourism.png b/week1/figs/Tourism.png new file mode 100644 index 0000000000000000000000000000000000000000..6856feaf3c6ed53d533a0250cd3e98859fcec96e GIT binary patch literal 46763 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 S`wF^rv`tGxSG`=-D)e7K_1`Z5 literal 0 HcmV?d00001