From d95797f5a77f2c7b6b48daeeb34d516f25fa7d70 Mon Sep 17 00:00:00 2001 From: Quarto GHA Workflow Runner Date: Mon, 28 Oct 2024 10:15:30 +0000 Subject: [PATCH] Built site for gh-pages --- .nojekyll | 2 +- Aalto2024.html | 4 +- assignments/search.json | 4 +- assignments/template1.html | 4 +- .../figure-html/unnamed-chunk-10-2.png | Bin 67451 -> 67321 bytes assignments/template7.html | 859 +++++++++--------- search.json | 2 +- sitemap.xml | 24 +- 8 files changed, 438 insertions(+), 461 deletions(-) diff --git a/.nojekyll b/.nojekyll index 64309386..c72921c2 100644 --- a/.nojekyll +++ b/.nojekyll @@ -1 +1 @@ -f1989b81 \ No newline at end of file +f1410d11 \ No newline at end of file diff --git a/Aalto2024.html b/Aalto2024.html index 3020a93a..16e57996 100644 --- a/Aalto2024.html +++ b/Aalto2024.html @@ -359,7 +359,7 @@

Schedule overview

7. Hierarchical models and exchangeability BDA3 Chapter 5 2023 Lecture 7.1,
2023 Lecture 7.2,
2022 Project info,
Slides 7 -Old Assignment 7 +Assignment 7 2024-10-28 2024-11-10 @@ -579,7 +579,7 @@

7) BDA3 Ch 5
  • Read the additional comments for Chapter 5
  • Check R demos or Python demos for Chapter 5
  • -
  • Make and submit Old Assignment 7. Deadline Sunday 2024-11-10 23:59 (two weeks for this assignment)
  • +
  • Make and submit Assignment 7. Deadline Sunday 2024-11-10 23:59 (two weeks for this assignment)
  • TA sessions 2024-10-30 14-16, 2024-10-31 12-14,
  • Highly recommended, but optional: Make BDA3 exercises 5.1 and 5.2 (model solution available for 5.3-5.5, 5.7-5.12)
  • Start reading Chapters 6-7 and additional material, see instructions below.
  • diff --git a/assignments/search.json b/assignments/search.json index ec2a9420..dd1315b3 100644 --- a/assignments/search.json +++ b/assignments/search.json @@ -37,7 +37,7 @@ "href": "template7.html", "title": "Notebook for Assignment 7", "section": "", - "text": "1 General information\nThis assignment relates to Lecture 7 and Chapter 5.\nWe recommend using JupyterHub (which has all the needed packages pre-installed).\n\nReading instructions:\n\nThe reading instructions for BDA3 Chapter 5.\n\n\n\n\n\n\n\n\nGeneral Instructions for Answering the Assignment Questions\n\n\n\n\n\n\nQuestions below are exact copies of the text found in the MyCourses quiz and should serve as a notebook where you can store notes and code.\nWe recommend opening these notebooks in the Aalto JupyterHub, see how to use R and RStudio remotely.\nFor inspiration for code, have a look at the BDA R Demos and the specific Assignment code notebooks\nRecommended additional self study exercises for each chapter in BDA3 are listed in the course web page. These will help to gain deeper understanding of the topic.\nCommon questions and answers regarding installation and technical problems can be found in Frequently Asked Questions (FAQ).\nDeadlines for all assignments can be found on the course web page and in MyCourses.\nYou are allowed to discuss assignments with your friends, but it is not allowed to copy solutions directly from other students or from internet.\nDo not share your answers publicly.\nDo not copy answers from the internet or from previous years. We compare the answers to the answers from previous years and to the answers from other students this year.\nUse of AI is allowed on the course, but the most of the work needs to by the student, and you need to report whether you used AI and in which way you used them (See points 5 and 6 in Aalto guidelines for use of AI in teaching).\nAll suspected plagiarism will be reported and investigated. See more about the Aalto University Code of Academic Integrity and Handling Violations Thereof.\nIf you have any suggestions or improvements to the course material, please post in the course chat feedback channel, create an issue, or submit a pull request to the public repository!\n\n\n\n\n\nif (!require(tidybayes)) {\n install.packages(\"tidybayes\")\n library(tidybayes)\n}\n\nLoading required package: tidybayes\n\n\nWarning in library(package, lib.loc = lib.loc, character.only = TRUE,\nlogical.return = TRUE, : there is no package called 'tidybayes'\n\n\nInstalling package into '/home/runner/work/_temp/Library'\n(as 'lib' is unspecified)\n\n\nalso installing the dependencies 'svUnit', 'arrayhelpers'\n\nif (!require(brms)) {\n install.packages(\"brms\")\n library(brms)\n}\n\nLoading required package: brms\n\n\nLoading required package: Rcpp\n\n\nLoading 'brms' package (version 2.22.0). Useful instructions\ncan be found by typing help('brms'). A more detailed introduction\nto the package is available through vignette('brms_overview').\n\n\n\nAttaching package: 'brms'\n\n\nThe following objects are masked from 'package:tidybayes':\n\n dstudent_t, pstudent_t, qstudent_t, rstudent_t\n\n\nThe following object is masked from 'package:stats':\n\n ar\n\nif (!require(metadat)) {\n install.packages(\"metadat\")\n library(metadat)\n}\n\nLoading required package: metadat\n\n\nWarning in library(package, lib.loc = lib.loc, character.only = TRUE,\nlogical.return = TRUE, : there is no package called 'metadat'\n\n\nInstalling package into '/home/runner/work/_temp/Library'\n(as 'lib' is unspecified)\n\n\nalso installing the dependency 'mathjaxr'\n\nif(!require(cmdstanr)){\n install.packages(\"cmdstanr\", repos = c(\"https://mc-stan.org/r-packages/\", getOption(\"repos\")))\n library(cmdstanr)\n}\n\nLoading required package: cmdstanr\n\n\nThis is cmdstanr version 0.8.1\n\n\n- CmdStanR documentation and vignettes: mc-stan.org/cmdstanr\n\n\n- CmdStan path: /home/runner/.cmdstan/cmdstan-2.35.0\n\n\n- CmdStan version: 2.35.0\n\ncmdstan_installed <- function(){\n res <- try(out <- cmdstanr::cmdstan_path(), silent = TRUE)\n !inherits(res, \"try-error\")\n}\nif(!cmdstan_installed()){\n install_cmdstan()\n}\n\n\n\n2 Simulation warm-up\nHere is the function to simulate and plot observations from a hierarchical data-generating process.\n\nhierarchical_sim <- function(group_pop_mean,\n between_group_sd,\n within_group_sd,\n n_groups,\n n_obs_per_group\n ) {\n # Generate group means\n group_means <- rnorm(\n n = n_groups,\n mean = group_pop_mean,\n sd = between_group_sd\n )\n\n # Generate observations\n\n ## Create an empty vector for observations\n y <- numeric()\n ## Create a vector for the group identifier\n group <- rep(1:n_groups, each = n_obs_per_group)\n \n for (j in 1:n_groups) {\n ### Generate one group observations\n group_y <- rnorm(\n n = n_obs_per_group,\n mean = group_means[j],\n sd = within_group_sd\n )\n ### Append the group observations to the vector\n y <- c(y, group_y)\n }\n\n # Combine into a data frame\n data <- data.frame(\n group = factor(group),\n y = y\n )\n\n # Plot the data\n ggplot(data, aes(x = y, y = group)) +\n geom_point() +\n geom_vline(xintercept = group_pop_mean, linetype = \"dashed\")\n}\n\nExample using the function:\n\nhierarchical_sim(\n group_pop_mean = 50,\n between_group_sd = 5,\n within_group_sd = 1,\n n_groups = 10,\n n_obs_per_group = 5\n )\n\nError in ggplot(data, aes(x = y, y = group)): could not find function \"ggplot\"\n\n\n\n\n3 Sleep deprivation\nThe dataset sleepstudy is available by using the command data(sleepstudy, package = \"lme4\")\nBelow is some code for fitting a brms model. This model is a simple pooled model. You will need to fit a hierarchical model as explained in the assignment, but this code should help getting started.\nLoad the dataset\n\ndata(sleepstudy, package = \"lme4\")\n\nError in find.package(package, lib.loc, verbose = verbose): there is no package called 'lme4'\n\n\nSpecify the formula and observation family:\n\nsleepstudy_pooled_formula <- bf(\n Reaction ~ 1 + Days,\n family = \"gaussian\",\n center = FALSE\n)\n\nWe can see the parameters and default priors with\n\nget_prior(pooled_formula, data = sleepstudy)\n\nError: object 'pooled_formula' not found\n\n\nWe can then specify the priors:\n\n(sleepstudy_pooled_priors <- c(\n prior(\n normal(400, 100),\n class = \"b\",\n coef = \"Intercept\"\n ),\n prior(\n normal(0, 50),\n class = \"b\",\n coef = \"Days\"\n ),\n prior(\n normal(0, 50),\n class = \"sigma\"\n )\n))\n\n prior class coef group resp dpar nlpar lb ub source\n normal(400, 100) b Intercept <NA> <NA> user\n normal(0, 50) b Days <NA> <NA> user\n normal(0, 50) sigma <NA> <NA> user\n\n\nAnd then fit the model:\n\nsleepstudy_pooled_fit <- brm(\n formula = pooled_formula,\n prior = pooled_priors,\n data = sleepstudy\n)\n\nError: object 'pooled_formula' not found\n\n\nWe can inspect the model fit:\n\nsummary(pooled_fit)\n\nError: object 'pooled_fit' not found\n\n\n\n\n4 School calendar\nMeta-analysis models can be fit in brms. When the standard error is known, the se() function can be used to specify it.\nThe dataset dat.konstantopoulos2011 has the observations for the school calendar intervention meta-analysis.\n\ndata(dat.konstantopoulos2011, package = \"metadat\")\n\nAs mentioned in the assignment instructions, a unique identifier for school needs to be created by combining the district and school:\n\nschoolcalendar_data <- dat.konstantopoulos2011 |>\n dplyr::mutate(\n school = factor(school),\n district = factor(district),\n district_school = interaction(district, school, drop = TRUE, sep = \"_\")\n )\n\nThen the models can be fit\n\nschoolcalendar_pooled_formula <- bf(\n formula = yi | se(sqrt(vi)) ~ 1,\n family = \"gaussian\"\n) \n\nschoolcalendar_pooled_fit <- brm(\n formula = schoolcalendar_pooled_formula,\n data = schoolcalendar_data\n)\nPredictions for a new school can be made using the posterior_epred function:\n\nnew_school <- data.frame(\n school = factor(1),\n district = factor(1),\n district_school = factor(\"1_1\"),\n vi = 0 # the expectation of the prediction is not affected by the sampling variance, so this can be any number\n)\n \n\nschoolcalendar_post_epred <- posterior_epred(\n schoolcalendar_pooled_fit,\n newdata = new_school,\n allow_new_levels = TRUE\n )\nIt can be helpful to plot the posterior estimates. Here is a function that will do this:\n\nplot_school_posteriors <- function(fit, dataset) {\n tidybayes::add_predicted_draws(dataset, fit) |>\n ggplot(\n aes(\n x = .prediction,\n y = interaction(district, school, sep = \", \", lex.order = TRUE))) +\n tidybayes::stat_halfeye() +\n ylab(\"District, school\") +\n xlab(\"Posterior effect\")\n}\n\nAnd can be used as follows:\nplot_school_posteriors(\n fit = schoolcalendar_pooled_fit,\n dataset = school_calendar_data\n)", + "text": "1 General information\nThis assignment relates to Lecture 7 and Chapter 5.\nWe recommend using JupyterHub (which has all the needed packages pre-installed).\n\nReading instructions:\n\nThe reading instructions for BDA3 Chapter 5.\n\n\n\n\n\n\n\n\nGeneral Instructions for Answering the Assignment Questions\n\n\n\n\n\n\nQuestions below are exact copies of the text found in the MyCourses quiz and should serve as a notebook where you can store notes and code.\nWe recommend opening these notebooks in the Aalto JupyterHub, see how to use R and RStudio remotely.\nFor inspiration for code, have a look at the BDA R Demos and the specific Assignment code notebooks\nRecommended additional self study exercises for each chapter in BDA3 are listed in the course web page. These will help to gain deeper understanding of the topic.\nCommon questions and answers regarding installation and technical problems can be found in Frequently Asked Questions (FAQ).\nDeadlines for all assignments can be found on the course web page and in MyCourses.\nYou are allowed to discuss assignments with your friends, but it is not allowed to copy solutions directly from other students or from internet.\nDo not share your answers publicly.\nDo not copy answers from the internet or from previous years. We compare the answers to the answers from previous years and to the answers from other students this year.\nUse of AI is allowed on the course, but the most of the work needs to by the student, and you need to report whether you used AI and in which way you used them (See points 5 and 6 in Aalto guidelines for use of AI in teaching).\nAll suspected plagiarism will be reported and investigated. See more about the Aalto University Code of Academic Integrity and Handling Violations Thereof.\nIf you have any suggestions or improvements to the course material, please post in the course chat feedback channel, create an issue, or submit a pull request to the public repository!\n\n\n\n\n\nif (!require(tidybayes)) {\n install.packages(\"tidybayes\")\n library(tidybayes)\n}\n\nLoading required package: tidybayes\n\nif (!require(brms)) {\n install.packages(\"brms\")\n library(brms)\n}\n\nLoading required package: brms\n\n\nLoading required package: Rcpp\n\n\nLoading 'brms' package (version 2.22.0). Useful instructions\ncan be found by typing help('brms'). A more detailed introduction\nto the package is available through vignette('brms_overview').\n\n\n\nAttaching package: 'brms'\n\n\nThe following objects are masked from 'package:tidybayes':\n\n dstudent_t, pstudent_t, qstudent_t, rstudent_t\n\n\nThe following object is masked from 'package:stats':\n\n ar\n\nif (!require(metadat)) {\n install.packages(\"metadat\")\n library(metadat)\n}\n\nLoading required package: metadat\n\nif(!require(cmdstanr)){\n install.packages(\"cmdstanr\", repos = c(\"https://mc-stan.org/r-packages/\", getOption(\"repos\")))\n library(cmdstanr)\n}\n\nLoading required package: cmdstanr\n\n\nThis is cmdstanr version 0.8.1\n\n\n- CmdStanR documentation and vignettes: mc-stan.org/cmdstanr\n\n\n- CmdStan path: /home/runner/.cmdstan/cmdstan-2.35.0\n\n\n- CmdStan version: 2.35.0\n\ncmdstan_installed <- function(){\n res <- try(out <- cmdstanr::cmdstan_path(), silent = TRUE)\n !inherits(res, \"try-error\")\n}\nif(!cmdstan_installed()){\n install_cmdstan()\n}\n\n\n\n2 Simulation warm-up\nHere is the function to simulate and plot observations from a hierarchical data-generating process.\n\nhierarchical_sim <- function(group_pop_mean,\n between_group_sd,\n within_group_sd,\n n_groups,\n n_obs_per_group\n ) {\n # Generate group means\n group_means <- rnorm(\n n = n_groups,\n mean = group_pop_mean,\n sd = between_group_sd\n )\n\n # Generate observations\n\n ## Create an empty vector for observations\n y <- numeric()\n ## Create a vector for the group identifier\n group <- rep(1:n_groups, each = n_obs_per_group)\n \n for (j in 1:n_groups) {\n ### Generate one group observations\n group_y <- rnorm(\n n = n_obs_per_group,\n mean = group_means[j],\n sd = within_group_sd\n )\n ### Append the group observations to the vector\n y <- c(y, group_y)\n }\n\n # Combine into a data frame\n data <- data.frame(\n group = factor(group),\n y = y\n )\n\n # Plot the data\n ggplot(data, aes(x = y, y = group)) +\n geom_point() +\n geom_vline(xintercept = group_pop_mean, linetype = \"dashed\")\n}\n\nExample using the function:\n\nhierarchical_sim(\n group_pop_mean = 50,\n between_group_sd = 5,\n within_group_sd = 1,\n n_groups = 10,\n n_obs_per_group = 5\n )\n\nError in ggplot(data, aes(x = y, y = group)): could not find function \"ggplot\"\n\n\n\n\n3 Sleep deprivation\nThe dataset sleepstudy is available by using the command data(sleepstudy, package = \"lme4\")\nBelow is some code for fitting a brms model. This model is a simple pooled model. You will need to fit a hierarchical model as explained in the assignment, but this code should help getting started.\nLoad the dataset\n\ndata(sleepstudy, package = \"lme4\")\n\nError in find.package(package, lib.loc, verbose = verbose): there is no package called 'lme4'\n\n\nSpecify the formula and observation family:\n\nsleepstudy_pooled_formula <- bf(\n Reaction ~ 1 + Days,\n family = \"gaussian\",\n center = FALSE\n)\n\nWe can see the parameters and default priors with\n\nget_prior(pooled_formula, data = sleepstudy)\n\nWe can then specify the priors:\n\n(sleepstudy_pooled_priors <- c(\n prior(\n normal(400, 100),\n class = \"b\",\n coef = \"Intercept\"\n ),\n prior(\n normal(0, 50),\n class = \"b\",\n coef = \"Days\"\n ),\n prior(\n normal(0, 50),\n class = \"sigma\"\n )\n))\n\nAnd then fit the model:\n\nsleepstudy_pooled_fit <- brm(\n formula = pooled_formula,\n prior = pooled_priors,\n data = sleepstudy\n)\n\nWe can inspect the model fit:\n\nsummary(pooled_fit)\n\n\n\n4 School calendar\nMeta-analysis models can be fit in brms. When the standard error is known, the se() function can be used to specify it.\nThe dataset dat.konstantopoulos2011 has the observations for the school calendar intervention meta-analysis.\n\ndata(dat.konstantopoulos2011, package = \"metadat\")\n\nAs mentioned in the assignment instructions, a unique identifier for school needs to be created by combining the district and school:\n\nschoolcalendar_data <- dat.konstantopoulos2011 |>\n dplyr::mutate(\n school = factor(school),\n district = factor(district),\n district_school = interaction(district, school, drop = TRUE, sep = \"_\")\n )\n\nThen the models can be fit\n\nschoolcalendar_pooled_formula <- bf(\n formula = yi | se(sqrt(vi)) ~ 1,\n family = \"gaussian\"\n) \n\nschoolcalendar_pooled_fit <- brm(\n formula = schoolcalendar_pooled_formula,\n data = schoolcalendar_data\n)\n\nPredictions for a new school can be made using the posterior_epred function:\n\nnew_school <- data.frame(\n school = factor(1),\n district = factor(1),\n district_school = factor(\"1_1\"),\n vi = 0 # the expectation of the prediction is not affected by the sampling variance, so this can be any number\n)\n \n\nschoolcalendar_post_epred <- posterior_epred(\n schoolcalendar_pooled_fit,\n newdata = new_school,\n allow_new_levels = TRUE\n )\n\nIt can be helpful to plot the posterior estimates. Here is a function that will do this:\n\nplot_school_posteriors <- function(fit, dataset) {\n tidybayes::add_predicted_draws(dataset, fit) |>\n ggplot(\n aes(\n x = .prediction,\n y = interaction(district, school, sep = \", \", lex.order = TRUE))) +\n tidybayes::stat_halfeye() +\n ylab(\"District, school\") +\n xlab(\"Posterior effect\")\n}\n\nAnd can be used as follows:\n\nplot_school_posteriors(\n fit = schoolcalendar_pooled_fit,\n dataset = school_calendar_data\n)", "crumbs": [ "Templates", "Notebook for Assignment 7" @@ -378,7 +378,7 @@ "href": "template1.html", "title": "Notebook for Assignment 1", "section": "", - "text": "1 General information\nThe exercises here refer to the lecture 1/BDA chapter 1 content, not the course infrastructure quiz. This assignment is meant to test whether or not you have sufficient knowledge to participate in the course. The first question checks that you remember basic terms of probability calculus. The second exercise checks you recognise the most important notation used throughout the course and used in BDA3. The third-fifth exercise you will solve some basic Bayes theorem questions to check your understanding on the basics of probability theory. The 6th exercise checks on whether you recall the three steps of Bayesian Data Ananlysis as mentioned in chapter 1 of BDA3. The last exercise walks you through an example of how we can use models to generate distributions for outcomes of interest, applied to a setting of a simplified Roulette table.\nThis quarto document is not intended to be submitted, but to render the questions as they appear on Mycourses to be available also outside of it. The following will set-up markmyassignment to check your functions at the end of the notebook:\n\nlibrary(markmyassignment)\nassignment_path = paste(\"https://github.com/avehtari/BDA_course_Aalto/\",\n\"blob/master/tests/assignment1.yml\", sep=\"\")\nset_assignment(assignment_path)\n\nAssignment set:\nassignment1: Bayesian Data Analysis: Assignment 1\nThe assignment contain the following (3) tasks:\n- p_red\n- p_box\n- p_identical_twin\n\n\n\n\n2 1. Basic probability theory notation and terms\n\n\n3 2. Notation\n\n\n4 3. Bayes’ theorem 1\nIf you use pen and paper, it may help to draw pictures as follows (see also assignment_instructions#fig-workflow):\n\n\n\n\n\n\nFigure 1: Parts of Bayesian workflow\n\n\n\nSee Figure 1 for illustration of parts of Bayesian workflow.\n\n\n5 4. Bayes’ theorem 2\nThe following will help you implementing a function to calculate the required probabilities for this exercise. Keep the below name and format for the function to work with markmyassignment:\n\nboxes_test <- matrix(c(2,2,1,5,5,1), ncol = 2,\n dimnames = list(c(\"A\", \"B\", \"C\"), c(\"red\", \"white\")))\n\np_red <- function(boxes) {\n # Do computation here, and return as below.\n # This is the correct return value for the test data provided above.\n 0.3928571\n}\n\np_box <- function(boxes) {\n # Do computation here, and return as below.\n # This is the correct return value for the test data provided above.\n c(0.29090909,0.07272727,0.63636364)\n}\n\n\n\n6 5. Bayes’ theorem 3\nThe R functions below might help you calculating the requited probabilities.\n\nfraternal_prob = 1/125\nidentical_prob = 1/300\n\nKeep the below name and format for the function to work with markmyassignment:\n\np_identical_twin <- function(fraternal_prob, identical_prob) {\n # Do computation here, and return as below.\n # This is the correct return value for the test data provided above.\n 0.4545455\n}\n\n\n\n7 6. The three steps of Bayesian data analysis\n\n\n8 7. A Binomial Model for the Roulette Table\nIncomplete code can be found below.\n\n# Ratio of red/black\ntheta <- # declare probability parameter for the binomial model\n\n# Sequence of trials\n\ntrials <- seq(#start value of sequence,#end value of sequence,#value for spacing)\n\n# Number of simulation draws from the model\nnsims <- # number of of simulations from the binomial model\n\n# Helper function for getting the ratios\nbinom_gen <- function(trials,theta,nsims){\n df <- as.data.frame(rbinom(nsims,trials,theta)/trials) |> mutate(nsims = nsims,trials = trials)\n colnames(df) <- c(\"Ratios\",\"Nsims\",\"Trials\")\n return(df)\n}\n\n# Create a data frame containing the draws for each number of trials\nratio_60 <- do.call(rbind, lapply(trials, binom_gen, theta, nsims)) # lapply applies elements in trials column to binom_gen function, which is then rowbound via do.call\n\nNow plot a histogram of the computed ratios for 10, 50 and 1000 trials, using the code below\n\n# Plot the Distributions\nsubset_df60 <- ratio_60[ratio_60$Trials %in% c(#trial values), ] # Subset your dataframe\n\nsubset_df60 |> ggplot(aes(Ratios)) +\n geom_histogram(position = \"identity\" ,bins = 40) +\n facet_grid(cols = vars(Trials)) +\n ggtitle(\"Ratios for specific trials\")\n\nSuppose you are now certain that theta = 0.6, plot the probability density given 1000 trials using the code below.\n\nsize = # number of trials\nprob = # probability of success\n\nbinom_data <- data.frame(\n Success = 0:size,\n Probability = dbinom(0:size, size = size, prob = prob)\n)\n\nggplot(binom_data, aes(x = Success, y = Probability)) +\n geom_point() +\n geom_line() +\n labs(title = \"PMF of Binomial Distribution\", x = \"Number of Successes\", y = \"PDF\")\n\n\n\n\n\n\n\nmarkmyassignment\n\n\n\n\n\nThe following will check the functions for which markmyassignment has been set up:\n\nmark_my_assignment()\n\n✔ | F W S OK | Context\n\n⠏ | 0 | task-1-subtask-1-tests \n⠏ | 0 | p_red() \n✖ | 1 3 | p_red()\n────────────────────────────────────────────────────────────────────────────────\nFailure ('test-task-1-subtask-1-tests.R:21:3'): p_red()\np_red(boxes = boxes) not equivalent to 0.5.\n1/1 mismatches\n[1] 0.393 - 0.5 == -0.107\nError: Incorrect result for matrix(c(1,1,1,1,1,1), ncol = 2)\n────────────────────────────────────────────────────────────────────────────────\n\n⠏ | 0 | task-2-subtask-1-tests \n⠏ | 0 | p_box() \n✖ | 1 3 | p_box()\n────────────────────────────────────────────────────────────────────────────────\nFailure ('test-task-2-subtask-1-tests.R:19:3'): p_box()\np_box(boxes = boxes) not equivalent to c(0.4, 0.1, 0.5).\n3/3 mismatches (average diff: 0.0909)\n[1] 0.2909 - 0.4 == -0.1091\n[2] 0.0727 - 0.1 == -0.0273\n[3] 0.6364 - 0.5 == 0.1364\nError: Incorrect result for matrix(c(1,1,1,1,1,1), ncol = 2)\n────────────────────────────────────────────────────────────────────────────────\n\n⠏ | 0 | task-3-subtask-1-tests \n⠏ | 0 | p_identical_twin() \n✖ | 2 3 | p_identical_twin()\n────────────────────────────────────────────────────────────────────────────────\nFailure ('test-task-3-subtask-1-tests.R:16:3'): p_identical_twin()\np_identical_twin(fraternal_prob = 1/100, identical_prob = 1/500) not equivalent to 0.2857143.\n1/1 mismatches\n[1] 0.455 - 0.286 == 0.169\nError: Incorrect result for fraternal_prob = 1/100 and identical_prob = 1/500\n\nFailure ('test-task-3-subtask-1-tests.R:19:3'): p_identical_twin()\np_identical_twin(fraternal_prob = 1/10, identical_prob = 1/20) not equivalent to 0.5.\n1/1 mismatches\n[1] 0.455 - 0.5 == -0.0455\nError: Incorrect result for fraternal_prob = 1/10 and identical_prob = 1/20\n────────────────────────────────────────────────────────────────────────────────\n\n══ Results ═════════════════════════════════════════════════════════════════════\n── Failed tests ────────────────────────────────────────────────────────────────\nFailure ('test-task-1-subtask-1-tests.R:21:3'): p_red()\np_red(boxes = boxes) not equivalent to 0.5.\n1/1 mismatches\n[1] 0.393 - 0.5 == -0.107\nError: Incorrect result for matrix(c(1,1,1,1,1,1), ncol = 2)\n\nFailure ('test-task-2-subtask-1-tests.R:19:3'): p_box()\np_box(boxes = boxes) not equivalent to c(0.4, 0.1, 0.5).\n3/3 mismatches (average diff: 0.0909)\n[1] 0.2909 - 0.4 == -0.1091\n[2] 0.0727 - 0.1 == -0.0273\n[3] 0.6364 - 0.5 == 0.1364\nError: Incorrect result for matrix(c(1,1,1,1,1,1), ncol = 2)\n\nFailure ('test-task-3-subtask-1-tests.R:16:3'): p_identical_twin()\np_identical_twin(fraternal_prob = 1/100, identical_prob = 1/500) not equivalent to 0.2857143.\n1/1 mismatches\n[1] 0.455 - 0.286 == 0.169\nError: Incorrect result for fraternal_prob = 1/100 and identical_prob = 1/500\n\nFailure ('test-task-3-subtask-1-tests.R:19:3'): p_identical_twin()\np_identical_twin(fraternal_prob = 1/10, identical_prob = 1/20) not equivalent to 0.5.\n1/1 mismatches\n[1] 0.455 - 0.5 == -0.0455\nError: Incorrect result for fraternal_prob = 1/10 and identical_prob = 1/20\n\n[ FAIL 4 | WARN 0 | SKIP 0 | PASS 9 ]", + "text": "1 General information\nThe exercises here refer to the lecture 1/BDA chapter 1 content, not the course infrastructure quiz. This assignment is meant to test whether or not you have sufficient knowledge to participate in the course. The first question checks that you remember basic terms of probability calculus. The second exercise checks you recognise the most important notation used throughout the course and used in BDA3. The third-fifth exercise you will solve some basic Bayes theorem questions to check your understanding on the basics of probability theory. The 6th exercise checks on whether you recall the three steps of Bayesian Data Ananlysis as mentioned in chapter 1 of BDA3. The last exercise walks you through an example of how we can use models to generate distributions for outcomes of interest, applied to a setting of a simplified Roulette table.\nThis quarto document is not intended to be submitted, but to render the questions as they appear on Mycourses to be available also outside of it. The following will set-up markmyassignment to check your functions at the end of the notebook:\n\nlibrary(markmyassignment)\nassignment_path = paste(\"https://github.com/avehtari/BDA_course_Aalto/\",\n\"blob/master/tests/assignment1.yml\", sep=\"\")\nset_assignment(assignment_path)\n\nAssignment set:\nassignment1: Bayesian Data Analysis: Assignment 1\nThe assignment contain the following (3) tasks:\n- p_red\n- p_box\n- p_identical_twin\n\n\n\n\n2 1. Basic probability theory notation and terms\n\n\n3 2. Notation\n\n\n4 3. Bayes’ theorem 1\nIf you use pen and paper, it may help to draw pictures as follows (see also assignment_instructions#fig-workflow):\n\n\n\n\n\n\nFigure 1: Parts of Bayesian workflow\n\n\n\nSee Figure 1 for illustration of parts of Bayesian workflow.\n\n\n5 4. Bayes’ theorem 2\nThe following will help you implementing a function to calculate the required probabilities for this exercise. Keep the below name and format for the function to work with markmyassignment:\n\nboxes_test <- matrix(c(2,2,1,5,5,1), ncol = 2,\n dimnames = list(c(\"A\", \"B\", \"C\"), c(\"red\", \"white\")))\n\np_red <- function(boxes) {\n # Do computation here, and return as below.\n # This is the correct return value for the test data provided above.\n 0.3928571\n}\n\np_box <- function(boxes) {\n # Do computation here, and return as below.\n # This is the correct return value for the test data provided above.\n c(0.29090909,0.07272727,0.63636364)\n}\n\n\n\n6 5. Bayes’ theorem 3\nThe R functions below might help you calculating the requited probabilities.\n\nfraternal_prob = 1/125\nidentical_prob = 1/300\n\nKeep the below name and format for the function to work with markmyassignment:\n\np_identical_twin <- function(fraternal_prob, identical_prob) {\n # Do computation here, and return as below.\n # This is the correct return value for the test data provided above.\n 0.4545455\n}\n\n\n\n7 6. The three steps of Bayesian data analysis\n\n\n8 7. A Binomial Model for the Roulette Table\nIncomplete code can be found below.\n\n# Ratio of red/black\ntheta <- # declare probability parameter for the binomial model\n\n# Sequence of trials\n\ntrials <- seq(#start value of sequence,#end value of sequence,#value for spacing)\n\n# Number of simulation draws from the model\nnsims <- # number of of simulations from the binomial model\n\n# Helper function for getting the ratios\nbinom_gen <- function(trials,theta,nsims){\n df <- as.data.frame(rbinom(nsims,trials,theta)/trials) |> mutate(nsims = nsims,trials = trials)\n colnames(df) <- c(\"Ratios\",\"Nsims\",\"Trials\")\n return(df)\n}\n\n# Create a data frame containing the draws for each number of trials\nratio_60 <- do.call(rbind, lapply(trials, binom_gen, theta, nsims)) # lapply applies elements in trials column to binom_gen function, which is then rowbound via do.call\n\nNow plot a histogram of the computed ratios for 10, 50 and 1000 trials, using the code below\n\n# Plot the Distributions\nsubset_df60 <- ratio_60[ratio_60$Trials %in% c(#trial values), ] # Subset your dataframe\n\nsubset_df60 |> ggplot(aes(Ratios)) +\n geom_histogram(position = \"identity\" ,bins = 40) +\n facet_grid(cols = vars(Trials)) +\n ggtitle(\"Ratios for specific trials\")\n\nSuppose you are now certain that theta = 0.6, plot the probability density given 1000 trials using the code below.\n\nsize = # number of trials\nprob = # probability of success\n\nbinom_data <- data.frame(\n Success = 0:size,\n Probability = dbinom(0:size, size = size, prob = prob)\n)\n\nggplot(binom_data, aes(x = Success, y = Probability)) +\n geom_point() +\n geom_line() +\n labs(title = \"PMF of Binomial Distribution\", x = \"Number of Successes\", y = \"PDF\")\n\n\n\n\n\n\n\nmarkmyassignment\n\n\n\n\n\nThe following will check the functions for which markmyassignment has been set up:\n\nmark_my_assignment()\n\n✔ | F W S OK | Context\n\n⠏ | 0 | task-1-subtask-1-tests \n⠏ | 0 | p_red() \n✖ | 1 3 | p_red()\n────────────────────────────────────────────────────────────────────────────────\nFailure ('test-task-1-subtask-1-tests.R:21:3'): p_red()\np_red(boxes = boxes) not equivalent to 0.5.\n1/1 mismatches\n[1] 0.393 - 0.5 == -0.107\nError: Incorrect result for matrix(c(1,1,1,1,1,1), ncol = 2)\n────────────────────────────────────────────────────────────────────────────────\n\n⠏ | 0 | task-2-subtask-1-tests \n⠏ | 0 | p_box() \n✖ | 1 3 | p_box()\n────────────────────────────────────────────────────────────────────────────────\nFailure ('test-task-2-subtask-1-tests.R:19:3'): p_box()\np_box(boxes = boxes) not equivalent to c(0.4, 0.1, 0.5).\n3/3 mismatches (average diff: 0.0909)\n[1] 0.2909 - 0.4 == -0.1091\n[2] 0.0727 - 0.1 == -0.0273\n[3] 0.6364 - 0.5 == 0.1364\nError: Incorrect result for matrix(c(1,1,1,1,1,1), ncol = 2)\n────────────────────────────────────────────────────────────────────────────────\n\n⠏ | 0 | task-3-subtask-1-tests \n⠏ | 0 | p_identical_twin() \n✖ | 2 3 | p_identical_twin()\n────────────────────────────────────────────────────────────────────────────────\nFailure ('test-task-3-subtask-1-tests.R:16:3'): p_identical_twin()\np_identical_twin(fraternal_prob = 1/100, identical_prob = 1/500) not equivalent to 0.2857143.\n1/1 mismatches\n[1] 0.455 - 0.286 == 0.169\nError: Incorrect result for fraternal_prob = 1/100 and identical_prob = 1/500\n\nFailure ('test-task-3-subtask-1-tests.R:19:3'): p_identical_twin()\np_identical_twin(fraternal_prob = 1/10, identical_prob = 1/20) not equivalent to 0.5.\n1/1 mismatches\n[1] 0.455 - 0.5 == -0.0455\nError: Incorrect result for fraternal_prob = 1/10 and identical_prob = 1/20\n────────────────────────────────────────────────────────────────────────────────\n\n══ Results ═════════════════════════════════════════════════════════════════════\n── Failed tests ────────────────────────────────────────────────────────────────\nFailure ('test-task-1-subtask-1-tests.R:21:3'): p_red()\np_red(boxes = boxes) not equivalent to 0.5.\n1/1 mismatches\n[1] 0.393 - 0.5 == -0.107\nError: Incorrect result for matrix(c(1,1,1,1,1,1), ncol = 2)\n\nFailure ('test-task-2-subtask-1-tests.R:19:3'): p_box()\np_box(boxes = boxes) not equivalent to c(0.4, 0.1, 0.5).\n3/3 mismatches (average diff: 0.0909)\n[1] 0.2909 - 0.4 == -0.1091\n[2] 0.0727 - 0.1 == -0.0273\n[3] 0.6364 - 0.5 == 0.1364\nError: Incorrect result for matrix(c(1,1,1,1,1,1), ncol = 2)\n\nFailure ('test-task-3-subtask-1-tests.R:16:3'): p_identical_twin()\np_identical_twin(fraternal_prob = 1/100, identical_prob = 1/500) not equivalent to 0.2857143.\n1/1 mismatches\n[1] 0.455 - 0.286 == 0.169\nError: Incorrect result for fraternal_prob = 1/100 and identical_prob = 1/500\n\nFailure ('test-task-3-subtask-1-tests.R:19:3'): p_identical_twin()\np_identical_twin(fraternal_prob = 1/10, identical_prob = 1/20) not equivalent to 0.5.\n1/1 mismatches\n[1] 0.455 - 0.5 == -0.0455\nError: Incorrect result for fraternal_prob = 1/10 and identical_prob = 1/20\n\n[ FAIL 4 | WARN 0 | SKIP 0 | PASS 9 ]\n\nKeep trying!", "crumbs": [ "Templates", "Notebook for Assignment 1" diff --git a/assignments/template1.html b/assignments/template1.html index 9f95fb24..65b713b3 100644 --- a/assignments/template1.html +++ b/assignments/template1.html @@ -553,7 +553,9 @@

    8 7. A Binomial M [1] 0.455 - 0.5 == -0.0455 Error: Incorrect result for fraternal_prob = 1/10 and identical_prob = 1/20 -[ FAIL 4 | WARN 0 | SKIP 0 | PASS 9 ] +[ FAIL 4 | WARN 0 | SKIP 0 | PASS 9 ] + +Keep trying! diff --git a/assignments/template3_files/figure-html/unnamed-chunk-10-2.png b/assignments/template3_files/figure-html/unnamed-chunk-10-2.png index 72aa22125694b9de277f69cd36398cccc145cb06..94ca4cc889e3282cf297b5b3c3818e1f83e8918e 100644 GIT binary patch literal 67321 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�^I#Yyt`aRbB+_DVJ%A^RW(hDK(~rs_>d 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 diff --git a/assignments/template7.html b/assignments/template7.html index dd6afbac..dd70fa9b 100644 --- a/assignments/template7.html +++ b/assignments/template7.html @@ -381,21 +381,10 @@

    1 General informa
    Loading required package: tidybayes
    -
    -
    Warning in library(package, lib.loc = lib.loc, character.only = TRUE,
    -logical.return = TRUE, : there is no package called 'tidybayes'
    -
    -
    -
    Installing package into '/home/runner/work/_temp/Library'
    -(as 'lib' is unspecified)
    -
    -
    -
    also installing the dependencies 'svUnit', 'arrayhelpers'
    -
    -
    if (!require(brms)) {
    -    install.packages("brms")
    -    library(brms)
    -}
    +
    if (!require(brms)) {
    +    install.packages("brms")
    +    library(brms)
    +}
    Loading required package: brms
    @@ -421,28 +410,17 @@

    1 General informa ar -
    if (!require(metadat)) {
    -  install.packages("metadat")
    -  library(metadat)
    -}
    +
    if (!require(metadat)) {
    +  install.packages("metadat")
    +  library(metadat)
    +}
    Loading required package: metadat
    -
    -
    Warning in library(package, lib.loc = lib.loc, character.only = TRUE,
    -logical.return = TRUE, : there is no package called 'metadat'
    -
    -
    -
    Installing package into '/home/runner/work/_temp/Library'
    -(as 'lib' is unspecified)
    -
    -
    -
    also installing the dependency 'mathjaxr'
    -
    -
    if(!require(cmdstanr)){
    -    install.packages("cmdstanr", repos = c("https://mc-stan.org/r-packages/", getOption("repos")))
    -    library(cmdstanr)
    -}
    +
    if(!require(cmdstanr)){
    +    install.packages("cmdstanr", repos = c("https://mc-stan.org/r-packages/", getOption("repos")))
    +    library(cmdstanr)
    +}
    Loading required package: cmdstanr
    @@ -458,71 +436,71 @@

    1 General informa
    - CmdStan version: 2.35.0
    -
    cmdstan_installed <- function(){
    -  res <- try(out <- cmdstanr::cmdstan_path(), silent = TRUE)
    -  !inherits(res, "try-error")
    -}
    -if(!cmdstan_installed()){
    -    install_cmdstan()
    -}
    +
    cmdstan_installed <- function(){
    +  res <- try(out <- cmdstanr::cmdstan_path(), silent = TRUE)
    +  !inherits(res, "try-error")
    +}
    +if(!cmdstan_installed()){
    +    install_cmdstan()
    +}

    2 Simulation warm-up

    Here is the function to simulate and plot observations from a hierarchical data-generating process.

    -
    hierarchical_sim <- function(group_pop_mean,
    -                             between_group_sd,
    -                             within_group_sd,
    -                             n_groups,
    -                             n_obs_per_group
    -                             ) {
    -  # Generate group means
    -  group_means <- rnorm(
    -    n = n_groups,
    -    mean = group_pop_mean,
    -    sd = between_group_sd
    -  )
    -
    -  # Generate observations
    -
    -  ## Create an empty vector for observations
    -  y <- numeric()
    -  ## Create a vector for the group identifier
    -  group <- rep(1:n_groups, each = n_obs_per_group)
    -  
    -  for (j in 1:n_groups) {
    -    ### Generate one group observations
    -    group_y <- rnorm(
    -      n = n_obs_per_group,
    -      mean = group_means[j],
    -      sd = within_group_sd
    -    )
    -    ### Append the group observations to the vector
    -    y <- c(y, group_y)
    -  }
    -
    -  # Combine into a data frame
    -  data <- data.frame(
    -    group = factor(group),
    -    y = y
    -  )
    -
    -  # Plot the data
    -  ggplot(data, aes(x = y, y = group)) +
    -    geom_point() +
    -    geom_vline(xintercept = group_pop_mean, linetype = "dashed")
    -}
    +
    hierarchical_sim <- function(group_pop_mean,
    +                             between_group_sd,
    +                             within_group_sd,
    +                             n_groups,
    +                             n_obs_per_group
    +                             ) {
    +  # Generate group means
    +  group_means <- rnorm(
    +    n = n_groups,
    +    mean = group_pop_mean,
    +    sd = between_group_sd
    +  )
    +
    +  # Generate observations
    +
    +  ## Create an empty vector for observations
    +  y <- numeric()
    +  ## Create a vector for the group identifier
    +  group <- rep(1:n_groups, each = n_obs_per_group)
    +  
    +  for (j in 1:n_groups) {
    +    ### Generate one group observations
    +    group_y <- rnorm(
    +      n = n_obs_per_group,
    +      mean = group_means[j],
    +      sd = within_group_sd
    +    )
    +    ### Append the group observations to the vector
    +    y <- c(y, group_y)
    +  }
    +
    +  # Combine into a data frame
    +  data <- data.frame(
    +    group = factor(group),
    +    y = y
    +  )
    +
    +  # Plot the data
    +  ggplot(data, aes(x = y, y = group)) +
    +    geom_point() +
    +    geom_vline(xintercept = group_pop_mean, linetype = "dashed")
    +}

    Example using the function:

    -
    hierarchical_sim(
    -  group_pop_mean = 50,
    -  between_group_sd = 5,
    -  within_group_sd = 1,
    -  n_groups = 10,
    -  n_obs_per_group = 5
    -  )
    +
    hierarchical_sim(
    +  group_pop_mean = 50,
    +  between_group_sd = 5,
    +  within_group_sd = 1,
    +  n_groups = 10,
    +  n_obs_per_group = 5
    +  )
    Error in ggplot(data, aes(x = y, y = group)): could not find function "ggplot"
    @@ -534,68 +512,53 @@

    3 Sleep deprivati

    Below is some code for fitting a brms model. This model is a simple pooled model. You will need to fit a hierarchical model as explained in the assignment, but this code should help getting started.

    Load the dataset

    -
    data(sleepstudy, package = "lme4")
    +
    data(sleepstudy, package = "lme4")
    Error in find.package(package, lib.loc, verbose = verbose): there is no package called 'lme4'

    Specify the formula and observation family:

    -
    sleepstudy_pooled_formula <- bf(
    -  Reaction ~ 1 + Days,
    -  family = "gaussian",
    -  center = FALSE
    -)
    +
    sleepstudy_pooled_formula <- bf(
    +  Reaction ~ 1 + Days,
    +  family = "gaussian",
    +  center = FALSE
    +)

    We can see the parameters and default priors with

    -
    get_prior(pooled_formula, data = sleepstudy)
    -
    -
    Error: object 'pooled_formula' not found
    -
    +
    get_prior(pooled_formula, data = sleepstudy)

    We can then specify the priors:

    -
    (sleepstudy_pooled_priors <- c(
    -  prior(
    -    normal(400, 100),
    -    class = "b",
    -    coef = "Intercept"
    -  ),
    -  prior(
    -    normal(0, 50),
    -    class = "b",
    -    coef = "Days"
    -  ),
    -  prior(
    -    normal(0, 50),
    -    class = "sigma"
    -  )
    -))
    -
    -
                prior class      coef group resp dpar nlpar   lb   ub source
    - normal(400, 100)     b Intercept                       <NA> <NA>   user
    -    normal(0, 50)     b      Days                       <NA> <NA>   user
    -    normal(0, 50) sigma                                 <NA> <NA>   user
    -
    +
    (sleepstudy_pooled_priors <- c(
    +  prior(
    +    normal(400, 100),
    +    class = "b",
    +    coef = "Intercept"
    +  ),
    +  prior(
    +    normal(0, 50),
    +    class = "b",
    +    coef = "Days"
    +  ),
    +  prior(
    +    normal(0, 50),
    +    class = "sigma"
    +  )
    +))

    And then fit the model:

    -
    sleepstudy_pooled_fit <- brm(
    -  formula = pooled_formula,
    -  prior = pooled_priors,
    -  data = sleepstudy
    -)
    -
    -
    Error: object 'pooled_formula' not found
    -
    +
    sleepstudy_pooled_fit <- brm(
    +  formula = pooled_formula,
    +  prior = pooled_priors,
    +  data = sleepstudy
    +)

    We can inspect the model fit:

    -
    summary(pooled_fit)
    -
    -
    Error: object 'pooled_fit' not found
    -
    +
    summary(pooled_fit)

    @@ -603,61 +566,65 @@

    4 School calendar

    Meta-analysis models can be fit in brms. When the standard error is known, the se() function can be used to specify it.

    The dataset dat.konstantopoulos2011 has the observations for the school calendar intervention meta-analysis.

    -
    data(dat.konstantopoulos2011, package = "metadat")
    +
    data(dat.konstantopoulos2011, package = "metadat")

    As mentioned in the assignment instructions, a unique identifier for school needs to be created by combining the district and school:

    -
    schoolcalendar_data <- dat.konstantopoulos2011 |>
    -  dplyr::mutate(
    -    school = factor(school),
    -    district = factor(district),
    -    district_school = interaction(district, school, drop = TRUE, sep = "_")
    -  )
    +
    schoolcalendar_data <- dat.konstantopoulos2011 |>
    +  dplyr::mutate(
    +    school = factor(school),
    +    district = factor(district),
    +    district_school = interaction(district, school, drop = TRUE, sep = "_")
    +  )

    Then the models can be fit

    -
    
    -schoolcalendar_pooled_formula <- bf(
    -  formula = yi | se(sqrt(vi)) ~ 1,
    -  family = "gaussian"
    -)  
    -
    -schoolcalendar_pooled_fit <- brm(
    -  formula = schoolcalendar_pooled_formula,
    -  data = schoolcalendar_data
    -)
    +
    +
    schoolcalendar_pooled_formula <- bf(
    +  formula = yi | se(sqrt(vi)) ~ 1,
    +  family = "gaussian"
    +)  
    +
    +schoolcalendar_pooled_fit <- brm(
    +  formula = schoolcalendar_pooled_formula,
    +  data = schoolcalendar_data
    +)
    +

    Predictions for a new school can be made using the posterior_epred function:

    -
    
    -new_school <- data.frame(
    -  school = factor(1),
    -  district = factor(1),
    -  district_school = factor("1_1"),
    -  vi = 0 # the expectation of the prediction is not affected by the sampling variance, so this can be any number
    -)
    -  
    -
    -schoolcalendar_post_epred <- posterior_epred(
    -    schoolcalendar_pooled_fit,
    -    newdata = new_school,
    -    allow_new_levels = TRUE
    -  )
    +
    +
    new_school <- data.frame(
    +  school = factor(1),
    +  district = factor(1),
    +  district_school = factor("1_1"),
    +  vi = 0 # the expectation of the prediction is not affected by the sampling variance, so this can be any number
    +)
    +  
    +
    +schoolcalendar_post_epred <- posterior_epred(
    +    schoolcalendar_pooled_fit,
    +    newdata = new_school,
    +    allow_new_levels = TRUE
    +  )
    +

    It can be helpful to plot the posterior estimates. Here is a function that will do this:

    -
    plot_school_posteriors <- function(fit, dataset) {
    -  tidybayes::add_predicted_draws(dataset, fit) |>
    -    ggplot(
    -      aes(
    -        x = .prediction,
    -        y = interaction(district, school, sep = ", ", lex.order = TRUE))) +
    -    tidybayes::stat_halfeye() +
    -    ylab("District, school") +
    -    xlab("Posterior effect")
    -}
    +
    plot_school_posteriors <- function(fit, dataset) {
    +  tidybayes::add_predicted_draws(dataset, fit) |>
    +    ggplot(
    +      aes(
    +        x = .prediction,
    +        y = interaction(district, school, sep = ", ", lex.order = TRUE))) +
    +    tidybayes::stat_halfeye() +
    +    ylab("District, school") +
    +    xlab("Posterior effect")
    +}

    And can be used as follows:

    -
    plot_school_posteriors(
    -  fit = schoolcalendar_pooled_fit,
    -  dataset = school_calendar_data
    -)
    +
    +
    plot_school_posteriors(
    +  fit = schoolcalendar_pooled_fit,
    +  dataset = school_calendar_data
    +)
    +
    @@ -1148,269 +1115,277 @@

    4 School calendar diff --git a/search.json b/search.json index 1e1cf8d4..448abf3e 100644 --- a/search.json +++ b/search.json @@ -326,7 +326,7 @@ "href": "Aalto2024.html#schedule-2024", "title": "Bayesian Data Analysis course - Aalto 2024", "section": "Schedule 2024", - "text": "Schedule 2024\nThe course consists of 12 lectures, 9 assignments, a project work, and a project presentation in periods I and II. It’s good start reading the material for the next lecture and assignment while making the assignment related to the previous lecture. There are 9 assignments and a project work with presentation, and thus the assignments are not in one-to-one correspondence with the lectures. The schedule below lists the lectures and how they connect to the topics, book chapters and assignments.\n\nSchedule overview\nHere is an overview of the schedule. Scroll down the page to see detailed instructions for each block. When you are working on assignment related to previous lecture, it is good to start reading the book chapters relaed to the next lecture and assignment. The schedule links to 2023 lecture videos until couple hours after the 2024 lecture has been recorded.\n\n\n\n\nReadings\nLectures\nAssignment\nLecture Date\nAssignment due date\n\n\n\n\n1. Introduction\nBDA3 Chapter 1\n2024 Lecture 1.1 Introduction, 2024 Lecture 1.2 Course practicalities, Slides 1.1, Slides 1.2\n2024 Assignment 1\n2024-09-02\n2024-09-15\n\n\n2. Basics of Bayesian inference\nBDA3 Chapter 1, BDA3 Chapter 2\n2023 Lecture 2.1 (2024 recording failed), 2024 Lecture 2.2, Slides 2\nAssignment 2\n2024-09-16\n2024-09-22\n\n\n3. Multidimensional posterior\nBDA3 Chapter 3\n2023 Lecture 3.1, 2023 Lecture 3.2Slides 3\nAssignment 3\n2024-09-23\n2024-09-29\n\n\n4. Monte Carlo\nBDA3 Chapter 10\n2024 Lecture 4.1, 2024 Lecture 4.2, Slides 4\nAssignment 4\n2024-09-30\n2024-10-06\n\n\n5. Markov chain Monte Carlo\nBDA3 Chapter 11\n2024 Lecture 5.1, 2024 Lecture 5.2, Slides 5\nAssignment 5\n2024-10-07\n2024-10-13\n\n\n6. Stan, HMC, PPL\nBDA3 Chapter 12 + extra material on Stan\n2023 Lecture 6.1, Lecture 6.2, 2024 Slides 6\nAssignment 6\n2024-10-14\n2024-10-27\n\n\n7. Hierarchical models and exchangeability\nBDA3 Chapter 5\n2023 Lecture 7.1, 2023 Lecture 7.2, 2022 Project info, Slides 7\nOld Assignment 7\n2024-10-28\n2024-11-10\n\n\n8. Model checking & cross-validation\nBDA3 Chapter 6, BDA3 Chapter 7, Visualization in Bayesian workflow, Practical Bayesian cross-validation\n2023 Lecture 8.1, 2023 Lecture 8.2, Slides 8a,Slides 8b\nStart project work\n2024-11-04\nN/A\n\n\n9. Model comparison, selection, and hypothesis testing\nBDA3 Chapter 7 (not 7.2 and 7.3), Practical Bayesian cross-validation\n2023 Lecture 9.1, 2023 Lecture 9.2, Slides 9\nOld Assignment 8\n2024-11-11\n2024-11-17\n\n\n10. Decision analysis\nBDA3 Chapter 9\n2023 Lecture 10.1, 2023 Lecture 10.2, Slides 10a, Slides 10b\nOld Assignment 9\n2024-11-18\n2024-11-24\n\n\n11. Variable selectio with projpred, project presentation example\nBDA3 Chapter 4\n2023 Lecture 11.1, 2023 Lecture 11.2, 2023 Lecture 11.3, Slides 11a, Slides Project Presentation, Slides 11 extra\nProject work\n2024-11-25\nN/A\n\n\n12. TBA\n\nOptional: \nProject work\n2024-12-02\nN/A\n\n\n13. Project evaluation\n\n\n\nProject presentations: 9.-13.12.\nEvaluation week\n\n\n\n\n\n1) Course introduction, BDA 3 Ch 1, prerequisites assignment\nCourse practicalities, material, assignments, project work, peergrading, QA sessions, TA sessions, prerequisites, chat, etc.\n\nLogin with Aalto account to the Zulip course chat with link in MyCourses\nIntroduction/practicalities lecture Monday 2024-09-02 14:15-16, hall C, Otakaari 1**\n\n2024 Lecture videos 1.1 and 1.2 in Panopto\nSlides 1.1, Slides 1.2\n\nRead BDA3 Chapter 1\n\nstart with reading instructions for Chapter 1 and afterwards read the additional comments in the same document\n\nThere are no R demos for Chapter 1\nMake and submit 2024 Assignment 1. Deadline Sunday 2024-09-15 23:59\n\nWe highly recommend to submit all assignments Friday before 3pm so that you can get TA help before submission. As the course has students who work weekdays (e.g. FiTech students), the late submission until Sunday night is allowed, but we can’t provide support during the weekends.\nthis assignment checks that you have sufficient prerequisite skills (basic probability calculus, and R or Python)\nGeneral information about assignments\n\nR markdown template for assignments\nFAQ for the assignments has solutions to commonly asked questions related RStudio setup, errors during package installations, etc.\n\n\nGet help in TA sessions 2024-09-04 14-16, Y342a, Otakaari 1 2024-09-05 12-14, Y429c-d, Otakaari 1\n\nin Sisu these are marked as exercise sessions, but we call them TA sessions\nthese are optional and you can choose which one to join\nsee more info about TA sessions\n\nHighly recommended, but optional: Make BDA3 exercises 1.1-1.4, 1.6-1.8 (model solutions available for 1.1-1.6)\nStart reading Chapters 1+2, see instructions below\n\n\n\n2) BDA3 Ch 1+2, basics of Bayesian inference\nBDA3 Chapters 1+2, basics of Bayesian inference, observation model, likelihood, posterior and binomial model, predictive distribution and benefit of integration, priors and prior information, and one parameter normal model.\n\nRead BDA3 Chapter 2\n\nsee reading instructions for Chapter 2\n\nLecture Monday 2024-09-16 14:15-16, hall T1, CS building\n\nSlides 2\nVideos: 2023 Lecture 2.1 (2024 recording failed), 2024 Lecture 2.2 on basics of Bayesian inference, observation model, likelihood, posterior and binomial model, predictive distribution and benefit of integration, priors and prior information, and one parameter normal model. BDA3 Ch 1+2.\n\nRead the additional comments for Chapter 2\nCheck R demos or Python demos for Chapter 2\nMake and submit Assignment 2. Deadline Sunday 2024-09-22 23:59\n\nTA sessions 2024-09-18 14-16, Y342a, Otakaari 1 2024-09-19 12-14, Y429c-d, Otakaari 1\n\nHighly recommended, but optional: Make BDA3 exercises 2.1-2.5, 2.8, 2.9, 2.14, 2.17, 2.22 (model solutions available for 2.1-2.5, 2.7-2.13, 2.16, 2.17, 2.20, and 2.14 is in course slides)\nStart reading Chapter 3, see instructions below\n\n\n\n3) BDA3 Ch 3, multidimensional posterior\nMultiparameter models, joint, marginal and conditional distribution, normal model, bioassay example, grid sampling and grid evaluation. BDA3 Ch 3.\n\nRead BDA3 Chapter 3\n\nsee reading instructions for Chapter 3\n\nLecture Monday 2024-09-23. 14:15-16, hall T1, CS building\n\nSlides 3\nVideos: 2023 Lecture 3.1 2023 Lecture 3.2 on multiparameter models, joint, marginal and conditional distribution, normal model, bioassay example, grid sampling and grid evaluation. BDA3 Ch 3.\n\nRead the additional comments for Chapter 3\nCheck R demos or Python demos for Chapter 3\nMake and submit Assignment 3. Deadline Sunday 2024-09-29 23:59\nTA sessions 2024-09-25 14-16, 2024-09-26 12-14,\nHighly recommended, but optional: Make BDA3 exercises 3.2, 3.3, 3.9 (model solutions available for 3.1-3.3, 3.5, 3.9, 3.10)\nStart reading Chapter 10, see instructions below\n\n\n\n4) BDA3 Ch 10, Monte Carlo\nNumerical issues, Monte Carlo, how many simulation draws are needed, how many digits to report, direct simulation, curse of dimensionality, rejection sampling, and importance sampling. BDA3 Ch 10.\n\nRead BDA3 Chapter 10\n\nsee reading instructions for Chapter 10\n\nLecture Monday 2024-09-30 14:15-16, hall T1, CS building\n\nSlides 4\nVideos: 2024 Lecture 4.1 on numerical issues, Monte Carlo, how many simulation draws are needed, how many digits to report, and 2024 Lecture 4.2 on Pareto-\\(\\hat{k}\\) diagnostic, direct simulation, rejection sampling, and importance sampling. BDA3 Ch 10.\n\nRead the additional comments for Chapter 10\nCheck R demos or Python demos for Chapter 10\nMake and submit Assignment 4. Deadline Sunday 2024-10-06 23:59\nTA sessions 2024-10-02 14-16, 2024-10-03 12-14,\nHighly recommended, but optional: Make BDA3 exercises 10.1, 10.2 (model solution available for 10.4)\nStart reading Chapter 11, see instructions below\n\n\n\n5) BDA3 Ch 11, Markov chain Monte Carlo\nMarkov chain Monte Carlo, Gibbs sampling, Metropolis algorithm, warm-up, convergence diagnostics, R-hat, and effective sample size. BDA3 Ch 11.\n\nRead BDA3 Chapter 11\n\nsee reading instructions for Chapter 11\n\nLecture Monday 2024-10-07 14:15-16, hall T1, CS building\n\nSlides 5\nVideos: 2024 Lecture 5.1 on Markov chain Monte Carlo, Gibbs sampling, Metropolis algorithm, and 2024 Lecture 5.2 on warm-up, convergence diagnostics, R-hat, and effective sample size.\n\nRead the additional comments for Chapter 11\nCheck R demos or Python demos for Chapter 11\nMake and submit Assignment 5. Deadline Sunday 2024-10-13 23:59\nTA sessions 2024-10-09 14-16, 2024-10-10 12-14,\nHighly recommended, but optional: Make BDA3 exercise 11.1 (model solution available for 11.1)\nStart reading Chapter 12 + Stan material, see instructions below\n\n\n\n6) BDA3 Ch 12 + Stan, HMC, PPL, Stan\nHMC, NUTS, dynamic HMC and HMC specific convergence diagnostics, probabilistic programming and Stan. BDA3 Ch 12 + extra material\n\nRead BDA3 Chapter 12\n\nsee reading instructions for Chapter 12\n\nLecture Monday 2024-10-14 14:15-16, hall T1, CS building\n\nSlides 6\nVideos: 2023 Lecture 6.1 on HMC, NUTS, dynamic HMC and HMC specific convergence diagnostics, and 2024 Lecture 6.2 on probabilistic programming and Stan. BDA3 Ch 12 + extra material.\nOptional: Stan Extra introduction recorded 2020 Golf putting example, main features of Stan, benefits of probabilistic programming, and comparison to some other software.\n\nRead the additional comments for Chapter 12\nRead Stan introduction article\nCheck R demos for RStan or Python demos for PyStan\nAdditional material for Stan:\n\nDocumentation\nRStan installation\nPyStan installation\nBasics of Bayesian inference and Stan, Jonah Gabry & Lauren Kennedy Part 1 and Part 2\n\nMake and submit Assignment 6. DeadlineSunday 2024-10-27 23:59 (two weeks for this assignment)\nTA sessions 2024-10-16 14-16, 2024-10-17 12-14,\nStart reading Chapter 5 + Stan material, see instructions below\n\n\n\n7) BDA3 Ch 5, hierarchical models\nHierarchical models and exchangeability. BDA3 Ch 5.\n\nRead BDA3 Chapter 5\n\nsee reading instructions for Chapter 5\n\nLecture Monday 2024-10-28 14:15-16, hall T2, CS building\n\nSlides 7\nVideos: 2023 Lecture 7.1 on hierarchical models, 2023 Lecture 7.2 on exchangeability.\n\nRead the additional comments for Chapter 5\nCheck R demos or Python demos for Chapter 5\nMake and submit Old Assignment 7. Deadline Sunday 2024-11-10 23:59 (two weeks for this assignment)\nTA sessions 2024-10-30 14-16, 2024-10-31 12-14,\nHighly recommended, but optional: Make BDA3 exercises 5.1 and 5.2 (model solution available for 5.3-5.5, 5.7-5.12)\nStart reading Chapters 6-7 and additional material, see instructions below.\n\n\n\n8) BDA3 Ch 6+7 + extra material, model checking, cross-validation\nModel checking and cross-validation.\n\nRead BDA3 Chapters 6 and 7 (skip 7.2 and 7.3)\n\nsee reading instructions for Chapter 6 and Chapter 7\n\nRead Visualization in Bayesian workflow\n\nmore about workflow and examples of prior predictive checking and LOO-CV probability integral transformations\n\nRead Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC (Journal link)\n\nreplaces BDA3 Sections 7.2 and 7.3 on cross-validation\n\nLecture Monday 2024-11-04 14:15-16, hall T2, CS building\n\nSlides 8a, Slides 8b\nVideos: 2022 Lecture 8.1 on model checking, and 2023 Lecture 8.2 on cross-validation part 1. BDA3 Ch 6-7 + extra material.\n\nRead the additional comments for Chapter 6 and Chapter 7\nCheck R demos or Python demos for Chapter 6\nAdditional reading material\n\nCross-validation FAQ\n\nNo new assignment in this block\nStart the project work\nTA sessions 2024-11-06 14-16, 2024-11-07 12-14,\nHighly recommended, but optional: Make BDA3 exercise 6.1 (model solution available for 6.1, 6.5-6.7)\n\n\n\n9) BDA3 Ch 7, extra material, model comparison and selection\nPSIS-LOO, K-fold-CV, model comparison and selection. Extra lecture on variable selection with projection predictive variable selection.\n\nRead Chapter 7 (no 7.2 and 7.3)\n\nsee reading instructions for Chapter 7\n\nRead Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC (Journal link)\n\nreplaces BDA3 Sections 7.2 and 7.3 on cross-validation\n\nLecture Monday 2024-11-11 14:15-16, hall T2, CS building\n\nSlides 9\nVideos: 2023 Lecture 9.1 and 2023 Lecture 9.2 on model comparison, selection, and hypothesis testing.\n\nAdditional reading material\n\nCV FAQ\n\nMake and submit Old Assignment 8. Sunday 2024-11-17 23:59\nTA sessions 2024-11-13 14-16, 2024-11-14 12-14,\nStart reading Chapter 9, see instructions below.\n\n\n\n10) BDA3 Ch 9, decision analysis + BDA3 Ch 4 Laplace approximation and asymptotics\nDecision analysis. BDA3 Ch 9. + Laplace approximation and asymptotics. BDA Ch 4.\n\nRead Chapter 9 and 4\n\nsee reading instructions for Chapter 9\nsee reading instructions for Chapter 4\n\nLecture Monday 2024-11-18 14:15-16, hall T2, CS building\n\nSlides 10a, Slides 10b\nVideos: 2023 Lecture 10.1 on decision analysis. BDA3 Ch 9, and 2023 Lecture 10.2 on Laplace approximation, and asymptotics, BDA3 Ch 4.\n\nMake and submit Old Assignment 9. Sunday 2024-11-24 23:59\nTA sessions 2024-11-20 14-16, 2024-11-21 12-14,\nStart reading Chapter 4, see instructions below.\n\n\n\n11) Variable selection with projpred, project presentation example, extra\n\nLecture Monday 2024-11-25 14:15-16, hall T2, CS building\n\nSlides 11a, Slides Project Presentation, Slides 11 extra\nVideos: 2023 Lecture 11.1 on variable selecion with projpred, 2023 Lecture 11.2 on project presentations, 2023 Lecture 11.3 on rest of BDA3, ROS, and Bayesian Workflow\n\nNo new assignment. Work on project. TAs help with projects.\nTA sessions 2024-11-27 14-16, 2024-11-28 12-14,\n\n\n\n12) TBA\n\nLecture Monday 2024-12-02 14:15-16, hall T2, CS building\n\nSlides 12\n\nTBA\nWork on project. TAs help with projects. Project deadline 1.12. 23:59\nTA sessions 2024-12-04 14-16, 2024-12-05 12-14,\n\n\n\n13) Project evaluation\n\nProject report deadline 1.12. 23:59 (submit to peergrade).\n\nReview project reports done by your peers before 6.12. 23:59, and reflect on your feedback.\n\nProject presentations 9.-13.12. (evaluation week)" + "text": "Schedule 2024\nThe course consists of 12 lectures, 9 assignments, a project work, and a project presentation in periods I and II. It’s good start reading the material for the next lecture and assignment while making the assignment related to the previous lecture. There are 9 assignments and a project work with presentation, and thus the assignments are not in one-to-one correspondence with the lectures. The schedule below lists the lectures and how they connect to the topics, book chapters and assignments.\n\nSchedule overview\nHere is an overview of the schedule. Scroll down the page to see detailed instructions for each block. When you are working on assignment related to previous lecture, it is good to start reading the book chapters relaed to the next lecture and assignment. The schedule links to 2023 lecture videos until couple hours after the 2024 lecture has been recorded.\n\n\n\n\nReadings\nLectures\nAssignment\nLecture Date\nAssignment due date\n\n\n\n\n1. Introduction\nBDA3 Chapter 1\n2024 Lecture 1.1 Introduction, 2024 Lecture 1.2 Course practicalities, Slides 1.1, Slides 1.2\n2024 Assignment 1\n2024-09-02\n2024-09-15\n\n\n2. Basics of Bayesian inference\nBDA3 Chapter 1, BDA3 Chapter 2\n2023 Lecture 2.1 (2024 recording failed), 2024 Lecture 2.2, Slides 2\nAssignment 2\n2024-09-16\n2024-09-22\n\n\n3. Multidimensional posterior\nBDA3 Chapter 3\n2023 Lecture 3.1, 2023 Lecture 3.2Slides 3\nAssignment 3\n2024-09-23\n2024-09-29\n\n\n4. Monte Carlo\nBDA3 Chapter 10\n2024 Lecture 4.1, 2024 Lecture 4.2, Slides 4\nAssignment 4\n2024-09-30\n2024-10-06\n\n\n5. Markov chain Monte Carlo\nBDA3 Chapter 11\n2024 Lecture 5.1, 2024 Lecture 5.2, Slides 5\nAssignment 5\n2024-10-07\n2024-10-13\n\n\n6. Stan, HMC, PPL\nBDA3 Chapter 12 + extra material on Stan\n2023 Lecture 6.1, Lecture 6.2, 2024 Slides 6\nAssignment 6\n2024-10-14\n2024-10-27\n\n\n7. Hierarchical models and exchangeability\nBDA3 Chapter 5\n2023 Lecture 7.1, 2023 Lecture 7.2, 2022 Project info, Slides 7\nAssignment 7\n2024-10-28\n2024-11-10\n\n\n8. Model checking & cross-validation\nBDA3 Chapter 6, BDA3 Chapter 7, Visualization in Bayesian workflow, Practical Bayesian cross-validation\n2023 Lecture 8.1, 2023 Lecture 8.2, Slides 8a,Slides 8b\nStart project work\n2024-11-04\nN/A\n\n\n9. Model comparison, selection, and hypothesis testing\nBDA3 Chapter 7 (not 7.2 and 7.3), Practical Bayesian cross-validation\n2023 Lecture 9.1, 2023 Lecture 9.2, Slides 9\nOld Assignment 8\n2024-11-11\n2024-11-17\n\n\n10. Decision analysis\nBDA3 Chapter 9\n2023 Lecture 10.1, 2023 Lecture 10.2, Slides 10a, Slides 10b\nOld Assignment 9\n2024-11-18\n2024-11-24\n\n\n11. Variable selectio with projpred, project presentation example\nBDA3 Chapter 4\n2023 Lecture 11.1, 2023 Lecture 11.2, 2023 Lecture 11.3, Slides 11a, Slides Project Presentation, Slides 11 extra\nProject work\n2024-11-25\nN/A\n\n\n12. TBA\n\nOptional: \nProject work\n2024-12-02\nN/A\n\n\n13. Project evaluation\n\n\n\nProject presentations: 9.-13.12.\nEvaluation week\n\n\n\n\n\n1) Course introduction, BDA 3 Ch 1, prerequisites assignment\nCourse practicalities, material, assignments, project work, peergrading, QA sessions, TA sessions, prerequisites, chat, etc.\n\nLogin with Aalto account to the Zulip course chat with link in MyCourses\nIntroduction/practicalities lecture Monday 2024-09-02 14:15-16, hall C, Otakaari 1**\n\n2024 Lecture videos 1.1 and 1.2 in Panopto\nSlides 1.1, Slides 1.2\n\nRead BDA3 Chapter 1\n\nstart with reading instructions for Chapter 1 and afterwards read the additional comments in the same document\n\nThere are no R demos for Chapter 1\nMake and submit 2024 Assignment 1. Deadline Sunday 2024-09-15 23:59\n\nWe highly recommend to submit all assignments Friday before 3pm so that you can get TA help before submission. As the course has students who work weekdays (e.g. FiTech students), the late submission until Sunday night is allowed, but we can’t provide support during the weekends.\nthis assignment checks that you have sufficient prerequisite skills (basic probability calculus, and R or Python)\nGeneral information about assignments\n\nR markdown template for assignments\nFAQ for the assignments has solutions to commonly asked questions related RStudio setup, errors during package installations, etc.\n\n\nGet help in TA sessions 2024-09-04 14-16, Y342a, Otakaari 1 2024-09-05 12-14, Y429c-d, Otakaari 1\n\nin Sisu these are marked as exercise sessions, but we call them TA sessions\nthese are optional and you can choose which one to join\nsee more info about TA sessions\n\nHighly recommended, but optional: Make BDA3 exercises 1.1-1.4, 1.6-1.8 (model solutions available for 1.1-1.6)\nStart reading Chapters 1+2, see instructions below\n\n\n\n2) BDA3 Ch 1+2, basics of Bayesian inference\nBDA3 Chapters 1+2, basics of Bayesian inference, observation model, likelihood, posterior and binomial model, predictive distribution and benefit of integration, priors and prior information, and one parameter normal model.\n\nRead BDA3 Chapter 2\n\nsee reading instructions for Chapter 2\n\nLecture Monday 2024-09-16 14:15-16, hall T1, CS building\n\nSlides 2\nVideos: 2023 Lecture 2.1 (2024 recording failed), 2024 Lecture 2.2 on basics of Bayesian inference, observation model, likelihood, posterior and binomial model, predictive distribution and benefit of integration, priors and prior information, and one parameter normal model. BDA3 Ch 1+2.\n\nRead the additional comments for Chapter 2\nCheck R demos or Python demos for Chapter 2\nMake and submit Assignment 2. Deadline Sunday 2024-09-22 23:59\n\nTA sessions 2024-09-18 14-16, Y342a, Otakaari 1 2024-09-19 12-14, Y429c-d, Otakaari 1\n\nHighly recommended, but optional: Make BDA3 exercises 2.1-2.5, 2.8, 2.9, 2.14, 2.17, 2.22 (model solutions available for 2.1-2.5, 2.7-2.13, 2.16, 2.17, 2.20, and 2.14 is in course slides)\nStart reading Chapter 3, see instructions below\n\n\n\n3) BDA3 Ch 3, multidimensional posterior\nMultiparameter models, joint, marginal and conditional distribution, normal model, bioassay example, grid sampling and grid evaluation. BDA3 Ch 3.\n\nRead BDA3 Chapter 3\n\nsee reading instructions for Chapter 3\n\nLecture Monday 2024-09-23. 14:15-16, hall T1, CS building\n\nSlides 3\nVideos: 2023 Lecture 3.1 2023 Lecture 3.2 on multiparameter models, joint, marginal and conditional distribution, normal model, bioassay example, grid sampling and grid evaluation. BDA3 Ch 3.\n\nRead the additional comments for Chapter 3\nCheck R demos or Python demos for Chapter 3\nMake and submit Assignment 3. Deadline Sunday 2024-09-29 23:59\nTA sessions 2024-09-25 14-16, 2024-09-26 12-14,\nHighly recommended, but optional: Make BDA3 exercises 3.2, 3.3, 3.9 (model solutions available for 3.1-3.3, 3.5, 3.9, 3.10)\nStart reading Chapter 10, see instructions below\n\n\n\n4) BDA3 Ch 10, Monte Carlo\nNumerical issues, Monte Carlo, how many simulation draws are needed, how many digits to report, direct simulation, curse of dimensionality, rejection sampling, and importance sampling. BDA3 Ch 10.\n\nRead BDA3 Chapter 10\n\nsee reading instructions for Chapter 10\n\nLecture Monday 2024-09-30 14:15-16, hall T1, CS building\n\nSlides 4\nVideos: 2024 Lecture 4.1 on numerical issues, Monte Carlo, how many simulation draws are needed, how many digits to report, and 2024 Lecture 4.2 on Pareto-\\(\\hat{k}\\) diagnostic, direct simulation, rejection sampling, and importance sampling. BDA3 Ch 10.\n\nRead the additional comments for Chapter 10\nCheck R demos or Python demos for Chapter 10\nMake and submit Assignment 4. Deadline Sunday 2024-10-06 23:59\nTA sessions 2024-10-02 14-16, 2024-10-03 12-14,\nHighly recommended, but optional: Make BDA3 exercises 10.1, 10.2 (model solution available for 10.4)\nStart reading Chapter 11, see instructions below\n\n\n\n5) BDA3 Ch 11, Markov chain Monte Carlo\nMarkov chain Monte Carlo, Gibbs sampling, Metropolis algorithm, warm-up, convergence diagnostics, R-hat, and effective sample size. BDA3 Ch 11.\n\nRead BDA3 Chapter 11\n\nsee reading instructions for Chapter 11\n\nLecture Monday 2024-10-07 14:15-16, hall T1, CS building\n\nSlides 5\nVideos: 2024 Lecture 5.1 on Markov chain Monte Carlo, Gibbs sampling, Metropolis algorithm, and 2024 Lecture 5.2 on warm-up, convergence diagnostics, R-hat, and effective sample size.\n\nRead the additional comments for Chapter 11\nCheck R demos or Python demos for Chapter 11\nMake and submit Assignment 5. Deadline Sunday 2024-10-13 23:59\nTA sessions 2024-10-09 14-16, 2024-10-10 12-14,\nHighly recommended, but optional: Make BDA3 exercise 11.1 (model solution available for 11.1)\nStart reading Chapter 12 + Stan material, see instructions below\n\n\n\n6) BDA3 Ch 12 + Stan, HMC, PPL, Stan\nHMC, NUTS, dynamic HMC and HMC specific convergence diagnostics, probabilistic programming and Stan. BDA3 Ch 12 + extra material\n\nRead BDA3 Chapter 12\n\nsee reading instructions for Chapter 12\n\nLecture Monday 2024-10-14 14:15-16, hall T1, CS building\n\nSlides 6\nVideos: 2023 Lecture 6.1 on HMC, NUTS, dynamic HMC and HMC specific convergence diagnostics, and 2024 Lecture 6.2 on probabilistic programming and Stan. BDA3 Ch 12 + extra material.\nOptional: Stan Extra introduction recorded 2020 Golf putting example, main features of Stan, benefits of probabilistic programming, and comparison to some other software.\n\nRead the additional comments for Chapter 12\nRead Stan introduction article\nCheck R demos for RStan or Python demos for PyStan\nAdditional material for Stan:\n\nDocumentation\nRStan installation\nPyStan installation\nBasics of Bayesian inference and Stan, Jonah Gabry & Lauren Kennedy Part 1 and Part 2\n\nMake and submit Assignment 6. DeadlineSunday 2024-10-27 23:59 (two weeks for this assignment)\nTA sessions 2024-10-16 14-16, 2024-10-17 12-14,\nStart reading Chapter 5 + Stan material, see instructions below\n\n\n\n7) BDA3 Ch 5, hierarchical models\nHierarchical models and exchangeability. BDA3 Ch 5.\n\nRead BDA3 Chapter 5\n\nsee reading instructions for Chapter 5\n\nLecture Monday 2024-10-28 14:15-16, hall T2, CS building\n\nSlides 7\nVideos: 2023 Lecture 7.1 on hierarchical models, 2023 Lecture 7.2 on exchangeability.\n\nRead the additional comments for Chapter 5\nCheck R demos or Python demos for Chapter 5\nMake and submit Assignment 7. Deadline Sunday 2024-11-10 23:59 (two weeks for this assignment)\nTA sessions 2024-10-30 14-16, 2024-10-31 12-14,\nHighly recommended, but optional: Make BDA3 exercises 5.1 and 5.2 (model solution available for 5.3-5.5, 5.7-5.12)\nStart reading Chapters 6-7 and additional material, see instructions below.\n\n\n\n8) BDA3 Ch 6+7 + extra material, model checking, cross-validation\nModel checking and cross-validation.\n\nRead BDA3 Chapters 6 and 7 (skip 7.2 and 7.3)\n\nsee reading instructions for Chapter 6 and Chapter 7\n\nRead Visualization in Bayesian workflow\n\nmore about workflow and examples of prior predictive checking and LOO-CV probability integral transformations\n\nRead Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC (Journal link)\n\nreplaces BDA3 Sections 7.2 and 7.3 on cross-validation\n\nLecture Monday 2024-11-04 14:15-16, hall T2, CS building\n\nSlides 8a, Slides 8b\nVideos: 2022 Lecture 8.1 on model checking, and 2023 Lecture 8.2 on cross-validation part 1. BDA3 Ch 6-7 + extra material.\n\nRead the additional comments for Chapter 6 and Chapter 7\nCheck R demos or Python demos for Chapter 6\nAdditional reading material\n\nCross-validation FAQ\n\nNo new assignment in this block\nStart the project work\nTA sessions 2024-11-06 14-16, 2024-11-07 12-14,\nHighly recommended, but optional: Make BDA3 exercise 6.1 (model solution available for 6.1, 6.5-6.7)\n\n\n\n9) BDA3 Ch 7, extra material, model comparison and selection\nPSIS-LOO, K-fold-CV, model comparison and selection. Extra lecture on variable selection with projection predictive variable selection.\n\nRead Chapter 7 (no 7.2 and 7.3)\n\nsee reading instructions for Chapter 7\n\nRead Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC (Journal link)\n\nreplaces BDA3 Sections 7.2 and 7.3 on cross-validation\n\nLecture Monday 2024-11-11 14:15-16, hall T2, CS building\n\nSlides 9\nVideos: 2023 Lecture 9.1 and 2023 Lecture 9.2 on model comparison, selection, and hypothesis testing.\n\nAdditional reading material\n\nCV FAQ\n\nMake and submit Old Assignment 8. Sunday 2024-11-17 23:59\nTA sessions 2024-11-13 14-16, 2024-11-14 12-14,\nStart reading Chapter 9, see instructions below.\n\n\n\n10) BDA3 Ch 9, decision analysis + BDA3 Ch 4 Laplace approximation and asymptotics\nDecision analysis. BDA3 Ch 9. + Laplace approximation and asymptotics. BDA Ch 4.\n\nRead Chapter 9 and 4\n\nsee reading instructions for Chapter 9\nsee reading instructions for Chapter 4\n\nLecture Monday 2024-11-18 14:15-16, hall T2, CS building\n\nSlides 10a, Slides 10b\nVideos: 2023 Lecture 10.1 on decision analysis. BDA3 Ch 9, and 2023 Lecture 10.2 on Laplace approximation, and asymptotics, BDA3 Ch 4.\n\nMake and submit Old Assignment 9. Sunday 2024-11-24 23:59\nTA sessions 2024-11-20 14-16, 2024-11-21 12-14,\nStart reading Chapter 4, see instructions below.\n\n\n\n11) Variable selection with projpred, project presentation example, extra\n\nLecture Monday 2024-11-25 14:15-16, hall T2, CS building\n\nSlides 11a, Slides Project Presentation, Slides 11 extra\nVideos: 2023 Lecture 11.1 on variable selecion with projpred, 2023 Lecture 11.2 on project presentations, 2023 Lecture 11.3 on rest of BDA3, ROS, and Bayesian Workflow\n\nNo new assignment. Work on project. TAs help with projects.\nTA sessions 2024-11-27 14-16, 2024-11-28 12-14,\n\n\n\n12) TBA\n\nLecture Monday 2024-12-02 14:15-16, hall T2, CS building\n\nSlides 12\n\nTBA\nWork on project. TAs help with projects. Project deadline 1.12. 23:59\nTA sessions 2024-12-04 14-16, 2024-12-05 12-14,\n\n\n\n13) Project evaluation\n\nProject report deadline 1.12. 23:59 (submit to peergrade).\n\nReview project reports done by your peers before 6.12. 23:59, and reflect on your feedback.\n\nProject presentations 9.-13.12. (evaluation week)" }, { "objectID": "Aalto2024.html#r", diff --git a/sitemap.xml b/sitemap.xml index c3f31b52..f0aed6d4 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,50 +2,50 @@ https://avehtari.github.io/BDA_course_Aalto/ta_info_gsu.html - 2024-10-28T10:01:34.950Z + 2024-10-28T10:12:01.676Z https://avehtari.github.io/BDA_course_Aalto/project.html - 2024-10-28T10:01:34.522Z + 2024-10-28T10:12:01.252Z https://avehtari.github.io/BDA_course_Aalto/gsu2023.html - 2024-10-28T10:01:34.522Z + 2024-10-28T10:12:01.252Z https://avehtari.github.io/BDA_course_Aalto/assignments_gsu.html - 2024-10-28T10:01:34.474Z + 2024-10-28T10:12:01.204Z https://avehtari.github.io/BDA_course_Aalto/FAQ.html - 2024-10-28T10:01:34.474Z + 2024-10-28T10:12:01.204Z https://avehtari.github.io/BDA_course_Aalto/Aalto2024.html - 2024-10-28T10:01:34.474Z + 2024-10-28T10:12:01.204Z https://avehtari.github.io/BDA_course_Aalto/Aalto2023.html - 2024-10-28T10:01:34.474Z + 2024-10-28T10:12:01.204Z https://avehtari.github.io/BDA_course_Aalto/BDA3_notes.html - 2024-10-28T10:01:34.474Z + 2024-10-28T10:12:01.204Z https://avehtari.github.io/BDA_course_Aalto/assignments.html - 2024-10-28T10:01:34.474Z + 2024-10-28T10:12:01.204Z https://avehtari.github.io/BDA_course_Aalto/demos.html - 2024-10-28T10:01:34.474Z + 2024-10-28T10:12:01.204Z https://avehtari.github.io/BDA_course_Aalto/index.html - 2024-10-28T10:01:34.522Z + 2024-10-28T10:12:01.252Z https://avehtari.github.io/BDA_course_Aalto/project_gsu.html - 2024-10-28T10:01:34.522Z + 2024-10-28T10:12:01.252Z