From 826b8269420653c1cd2d53c022219dbdfcaef589 Mon Sep 17 00:00:00 2001 From: Quarto GHA Workflow Runner Date: Mon, 28 Oct 2024 10:05:39 +0000 Subject: [PATCH] Built site for gh-pages --- .nojekyll | 2 +- Aalto2023.html | 4 +- Aalto2024.html | 4 +- BDA3_notes.html | 4 +- FAQ.html | 4 +- assignments.html | 4 +- assignments/assignment7.html | 520 +++++++++++---- assignments/search.json | 15 +- .../figure-html/unnamed-chunk-10-2.png | Bin 68088 -> 67451 bytes assignments/template7.html | 606 +++++++++++++++++- assignments_gsu.html | 4 +- demos.html | 4 +- gsu2023.html | 4 +- index.html | 4 +- project.html | 4 +- project_gsu.html | 4 +- sitemap.xml | 24 +- ta_info_gsu.html | 4 +- 18 files changed, 1052 insertions(+), 163 deletions(-) diff --git a/.nojekyll b/.nojekyll index 03fe33e2..64309386 100644 --- a/.nojekyll +++ b/.nojekyll @@ -1 +1 @@ -8d593c3d \ No newline at end of file +f1989b81 \ No newline at end of file diff --git a/Aalto2023.html b/Aalto2023.html index 947f98ba..0d46c1f7 100644 --- a/Aalto2023.html +++ b/Aalto2023.html @@ -6,7 +6,7 @@ - + Bayesian Data Analysis course - Aalto 2023 – Bayesian Data Analysis course @@ -103,6 +69,7 @@ "search-label": "Search" } } + @@ -299,7 +266,10 @@

On this page

@@ -308,7 +278,7 @@

On this page

-

Assignment 7

+

Assignment 7

@@ -333,11 +303,415 @@

On this page

1 General information

-

This assignment will be published later!

+

The exercises here refer to the lecture 7/BDA chapter 5 content. The main topics for this assignment are the MCSE and importance sampling.

+

The exercises constitute 96% of the Quiz 7 grade.

+

We prepared a quarto notebook specific to this assignment to help you get started. You still need to fill in your answers on Mycourses! You can inspect this and future templates

+
    +
  • as a rendered html file (to access the qmd file click the “</> Code” button at the top right hand corner of the template)
  • +
+
+
+
+ +
+
+General Instructions for Answering the Assignment Questions +
+
+
+
+
+
    +
  • Questions 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.
  • +
  • We recommend opening these notebooks in the Aalto JupyterHub, see how to use R and RStudio remotely.
  • +
  • For inspiration for code, have a look at the BDA R Demos and the specific Assignment code notebooks
  • +
  • Recommended 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.
  • +
  • Common questions and answers regarding installation and technical problems can be found in Frequently Asked Questions (FAQ).
  • +
  • Deadlines for all assignments can be found on the course web page and in MyCourses.
  • +
  • You are allowed to discuss assignments with your friends, but it is not allowed to copy solutions directly from other students or from internet.
  • +
  • Do not share your answers publicly.
  • +
  • Do 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.
  • +
  • Use 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).
  • +
  • All suspected plagiarism will be reported and investigated. See more about the Aalto University Code of Academic Integrity and Handling Violations Thereof.
  • +
  • If 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!
  • +
+
+
+
+
+

1.1 Assignment questions

+

For convenience the assignment questions are copied below. Answer the questions in MyCourses.

+Lecture 7/Chapter 5 of BDA Quiz (96% of grade) + +This week's assignment focuses on hierarchical models and modelling with brms. + +1. Exchangeability +An important building block of hierarchical models is the assumption of exchangeability. Let's review. + +1.1 Consider parameters \(\theta_j\) for j in 1...J. Which of these statements correctly describes exchangeability? + + +1.2 What best describes the difference between independence and exchangeability? + + +Consider the following: assume a box has N black and white balls but we do not know how many of each color. We pick a ball \(y_1\) at random, and we do not put it back, we then pick another ball \(y_2\) at random. Denote the number of black balls by B and white by W. + +1.3: Are observations \( y_1 \) and \( y_2 \) exchangeable? + + +1.4: Are observations \(y_1\) and \(y_2\) independent? + + +1.5: Can we act as if the two observations are independent? + + +1.6: Exchangeability allows us to express dependencies of data and parameters in a convenient form. Suppose we model a sequence of exchangeable random variables \( \theta \) via a governing, or population distribution, where conditional on some unknown parameters \( \phi \), we may assume independence between the elements of \( \theta \). Assume that \( \theta \) has J elements, write down an equation that conveniently factors the joint probability \( p(\theta,\phi) \): + + +De Finetti's theorem provides the theoretical basis for the equivalence to the independence assumption when J goes to infinity. In practice J is finite, but the difference may be small when J is relatively large. Check out the examples mentioned in the Chapter notes if you need more convincing. + +\( \phi \) is in general unknown. so the marginal prior for \( \theta \) must average over uncertainty in \( \phi \): \( \int \prod^J_{j=1} p(\theta_j | \phi) p(\phi)d\phi \). + +1.7 Based on the marginal prior formulation in the paragraph above, what can you say about the covariances \( \text{cov}( \theta_i, \theta_j) \)? + + +1.8 As with the parameters above, we often think of exchangeability as arising for our data model conditional on extra information x, such that the tuple \((x_i,y_i)\) are exchangeable, whereas \(y_i\) might not be. In which modeling context is this useful? Assume that the target data is denoted by \( y_i \). + + +2. Overview of hierarchical models + +2.1 Which of these best describes a hierarchical model? + + + +2.2: Consider that there are observations \(y\) indexed by observation number \(i\) and group \(j\). Suppose the data are modeled dependent on parameters \( \theta_j \) where \( j = 1,\dotsc,J\) indexes some meaningful grouping such as hospital-j specific health-outcomes, conditional on parameters \( \phi \) which are hyper-parameters of the prior distribution of \( \theta_j \). \( \phi \) are themselved modeled by prior distribution \( p(\phi) \). We think of the distribution \( p( \phi ) \) as the population distribution which generates the values for \( \theta \) in the hierarchical model. What are some of the benefits of hierarchical models compared to seperate models, which assume no relationship between j (and seperate models are estimated), and pooled models, which consider all j jointly, but do not model j specific parameters? + + +Throughout the rest of the course, we will often compare the hierarchical model, to a seperate model and the pooled model. Suppose for the questions below that you are modeling data \( y_{ij} \) where \( i \) refers to an observation within the \( j^{\text{th}}\) group, the observation model for \( y_{ij} \) is normal, and we consider hierarchies at the level of the parameters describing the location of \( y_{ij} \). + +2.3 Based on the description of the above, the lecture and BDA chapter 5 content, which of these below would suggest a seperate model for \( y_{ij} \)? \(\pi() \) stands for some prior distribution and \( \eta_j \) may be a vector of parameters such that \(cov(\eta_s,\eta_r) = 0 \) for \( s \neq r \). + + +2.4 Based on the description of the above, the lecture and BDA chapter 5 content, which of these below would suggest a pooled model for \( y_{ij} \)? \(\pi() \) stands for some prior distribution and \( \eta_j \) may be a vector of parameters such that \(cov(\eta_s,\eta_r) = 0 \) for \( s \neq r )\. + + + +2.5: Based on the description of the above, the lecture and BDA chapter 5 content, which of these below would suggest a pooled model for \( y_{ij} \)? \(\pi() \) stands for some prior distribution and \( \eta_j \) may be a vector where \(cov(\eta_s,\eta_r) = 0 \) for \( s \neq r \). + + + +2.6: Why are hierarchical models sometimes also referred to as partially pooled models. You may find it helpful to review the first unnumbered equation on page 115 of BDA3? + + +It may help, before translating the model to code, to first describe the relationship between variables as a directed acyclic graph (DAG) (see lecture 7). We interpret the DAG starting from top to bottom as describing the generative mechanism implied by priors and observation model for \( y_{ij} \). Top level variables feed into distributions of lower level parameters and the observation model. Distributions are typically not further described in the DAG. By drawing variables sequentially from top to bottom, you can generate fake observations (push-forward distribution). In the case that the parameters have not yet been updated by the data information, this push-forward distribution is called the prior predictive distribution of \( y \). You have already created such a prior predictive distribution in Assignment 1, question 7 and we will return to this in the sections below. + +2.7: What is the difference between sequential draws from priors and the data model as described above to drawing from the joint posterior in Stan? + + +In the Figure 1 below, assume that all circular nodes indicate that the object inside can be generated according to some distribution. + +Figure 1 + +2.8: Which of these equations properly describes the posterior for the model shown in the diagram? + + + +3. Meta-analysis and hierarchical models + +Often similar research studies in areas such as medicine or social science will be published under slightly different conditions or replicated with different subjects. It is of interest to summarise and integrate those findings for which hierarchical models have become increasingly popular. + +3.1: Suppose \(y_i\) is the point estimate for an effect size of a single study, \( i \). Why is it often appropriate to model \( y_i \) by a normal distribution with known standard deviation \( \sigma_i \) which is taken as the standard error estimate for \( y_i \)? + + +3.2: Why are hiearchical models preferable to seperate and pooled models for meta-analysis? + + +3.3: Suppose the assumption of exchangeability is false because you know the estimates of effects across studies depends on extra information \( x_i \), e.g. geolocation and geolocation has a significant impact on the estimates. What should you do in this circumstance? + + +3.4: Based on the discussion above, which of the below would refer to a hierarchical model for \( y_i\)? + + + +4. Introduction to brms + +brms is an R package which makes writing models with Stan easier. + +Suppose you have oberved the following variables, from different groups: \(x, z, y\). \(i\) is the observation number and \(j\) the group indicator. Assume a model \(y_ij \sim N(\mu_ij, \sigma)\). +Translate the following equations for the linear predictor term (\mu_ij\) into brms syntax: + +4.1 \(\mu_ij = \alpha_0\): + + + + +4.2 \(\mu_ij = \alpha_0 + \beta_1 x_i\) + + + +4.3 \(\mu_ij = \alpha_0 + \beta_1 x_i + \beta_2 z_i\) + + + +4.4 \(\mu_ij = \alpha_0 + \alpha_j + \beta_1 x_i\) + + + +5. Simulation warmup + +In this task, you will simulate data from a hierarchical model to gain better insight into it. + + +The following R code simulates data from a hierarchical structure, and then plots the results. Experiment with this function by using it on different values of the arguments, and answer the following questions. This code is also included in the notebook for this assignment. + +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") +} + +5.1 Which of the following generative models does the code correspond to? + +\(i\) is the observation number, \(j\) is the group indicator. + + + +5.2 What does the vertical dashed line in the plot represent? + + +5.3 Which function call would plausibly create a plot like the following? + + + +5.4 Which of these statements correctly describes the behaviour when the number of groups is increased? + + +5.5 Which of these statements correctly describes the behaviour when the ratio of the between group and within group variance is changed? + + +6. Sleep deprivation +In many cases the same people will have several data points collected (e.g. at different time points). A hierarchical model is well suited for this, with each group corresponding to a person. The sleepstudy dataset contains observations of reaction times for different people after differing number of days of sleep deprivation. + +Your task is to fit a hierarchical normal linear model in brms. +The observation model will be \(Reaction_{ij} \sim N(\mu_{ij}, \sigma)\). But depending on the setup, the \(\mu_{ij}\) term will differ. + +First fit a model with a population-level intercept, population-level effect of Days and varying intercepts per Subject. Note: in order to have the Intercept parameter be directly interpretable, use `center = FALSE` when creating the brms formula. See the code notebook for more details. + +Use the following priors (check the code notebook for how to specify): + +\(\alpha_0 \sim normal(250, 100)\) +\(\beta_0 \sim normal(0, 20)\) +\(\alpha_j \sim normal(0, \tau)\) +\(\tau \sim normal^+(0, 100)\) +\(\sigma \sim normal^+(0, 100)\) + + +6.1 Which of these formulae correctly defines the linear predictor term in a model with population-level intercept, population-level effect of Days and varying intercepts per Subject? - +6.2 Which is the correct brms formula for this model? + + +6.3 Based on the posterior, the estimate of the population-level intercept is . + +6.4 The population-level intercept can be interpreted as: + + +6.5 Based on the posterior, the estimate of the population-level effect of Days on Reaction is . + +6.6 The population-level effect of Days can be interpreted as: + + +6.7 Based on the posterior, the estimate of the standard deviation of the Intercept between Subjects is . + +6.8 The standard deviation of the Subject-specific Intercept can be interpreted as: + + +Next fit a model with subject-specific effects of Days in addition to the other terms. + +Use the prior \(\beta_j \sim normal(0, 20)\) +In this model, we can consider a correlation between the by-Subject intercept and Days effects. Use an \(LKJ(2)\) prior on this, \(\rho \sim LKJ(2)\). + +6.9 Which of these formulae correctly defines the linear predictor in this case? + + +6.10 Which is the correct brms formula for this model? + + + +6.11 Based on the posterior, the estimate of the standard deviation of Subject-specific effect of Days is . + +6.12 The the standard deviation of the Subject specific Intercept can be interpreted as: + +6.13 Based on the posterior, the estimate of correlation between the Subject-specific Intercept and effect of Days is . + +6.14 After fitting both models, which of the statements describe the results best (here interpret "plausible" as what is contained within the 95% posterior interval): + + + + +7. School calendar dataset + +As you've learned from the above, hierarchical models are also useful for meta-analyses. +The dataset dat.konstantopolous2011 from the metadat package contains results from different studies conducted on the effect of changing the school calendar from a standard one with a long summer break to a modified one with more regular but shorter breaks. + +Each result of a study is a standardized estimated mean effect on student achievement, where positive values indicate improvement (yi) and the variance of the estimate (vi) for a school. + +The meta-analysis model can be written as follows: \(y_{ijk} \sim normal(\mu_{ijk}, \sigma_{ijk})\). \(i\) refers to an observation, \(j\) refers to a school, \(k\) refers to a district. \(\mu_{ijk}\) thus refers to one observation \(i\) at school \(j\) in district \(k\). \(\mu_0\) is the population-level effect, \(\mu_j\) is the school-specific effect, and \(\mu_k\) is the district-specific effect. + +In this case, the \(\sigma_{ijk}\) values are known (the standard errors reported from each study) and the \(\mu_{ijk}\) term will differ depending on the model. + +In this exercise you will fit four different models to the same data set: Pooled, separate, partially pooled within school-specific effects, and partially pooled within schools and district effects. + +For all models, use brms with the default priors and use the following settings: +iter = 2000, warmup = 1000, chains = 4, seed = 2024 + +The dataset has separate columns for school and district, but for the models, we will want a unique identifier for each school. Before fitting any models, add a new column to the dataset called "district_school" which is the combination of the district and the school. This is then unique for each school, and will be used in the model formulae. + + +Pooled model: + +Use brms to fit a pooled model and answer the following questions. Check the code notebook for help starting. + +The pooled model formula is: \(\mu_{ijk} = \mu_0\). +7.1 The pooled model is written as: + + + +7.2 How many parameters are estimated in the pooled model? + + +7.3 What is the Rhat value for the Intercept term? + + +7.4 Based on the Rhat value, have the chains converged? + + +7.5 What is the posterior mean (labelled Estimate) and lower and upper 95% posterior interval bounds (labelled CI) for the Intercept? +Mean: , lower 95% interval bound: , upper 95% interval bound: + +7.6 Based on the posterior of the Intercept, what would you conclude about the effect of the intervention: + + +7.7 Suppose there is a new school in an existing district (School = 9, District = 86). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument. + + +7.8 Suppose there is a new school in a new district (School = 1, District = 30). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument. + + +Separate model: + +Use brms to fit a separate model and answer the following questions. Check the code notebook for help starting. + +The separate model formula is: \(\mu_{ijk}= \mu_{ijk}\). +7.9 The separate model is written as: + + + +7.10 How many parameters are estimated in the separate model? + + +7.11 What is the estimated effect for School 3 in District 71? +Mean: , lower 95% interval bound: , upper 95% interval bound: + +7.12 What is the estimated effect of School 7 in District 86? +Mean: , lower 95% interval bound: , upper 95% interval bound: + +7.13 Based on the posterior for the separate model, what could reasonably be concluded about the effect of the intervention: + + +7.14 Suppose there is a new school in an existing district (District = 86, School = 9). Why can we not easily predict the effect for this school based on the separate model posterior? + + +Partially pooled model for schools. + +The partially pooled model formula is: \(\mu_{ijk} = \mu_0 + \mu_j\) +7.15 And the partially pooled hierarchical model: + + + +7.16 How many parameters are estimated in the partially pooled for schools model? + + +7.17 Based on the posterior for the pooled model, what could reasonably be concluded about the effect of the intervention: + + +7.18 What is the estimated effect for School 3 in District 71? +Mean: , lower 95% interval bound: , upper 95% interval bound: + +7.19 What is the estimated effect of School 7 in District 86? +Mean: , lower 95% interval bound: , upper 95% interval bound: + +7.20 Suppose there is a new school in an existing district (District = 86, School = 9). What would the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument with allow_new_levels = TRUE. + + +7.21 Suppose there is a new school in a new district (District = 30, School = 1). What would the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument with allow_new_levels = TRUE. + + +Partially pooled model for schools in districts: + +In this data set, as there is a two-level structure, where schools are nested in districts, we can add another level to the hierarchy. The additional hierarchy formula is: \(\mu_{ijk} = \mu_0 + \mu_j + \mu_k\) + +7.22 What is the correct brms formula? + + +7.23 How many parameters are estimated in the partially pooled for schools in districts model? + + +7.24 Suppose there is a new school in an existing district (District = 86, School = 9). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument with allow_new_levels = TRUE. + + +7.25 Suppose there is a new school in a new district (District = 30, School = 1). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the `newdata` argument with `allow_new_levels = TRUE`. + + +7.26 Which of the following statements are true relating to exchangeability assumptions in the models: + + +7.27 After fitting all the models, choose which of the following statements relating to the results are true: + + + + + +
@@ -430,57 +804,6 @@

1 General informa container: window.document.getElementById('quarto-embedded-source-code-modal') }); clipboardModal.on('success', onCopySuccess); - } - const viewSource = window.document.getElementById('quarto-view-source') || - window.document.getElementById('quarto-code-tools-source'); - if (viewSource) { - const sourceUrl = viewSource.getAttribute("data-quarto-source-url"); - viewSource.addEventListener("click", function(e) { - if (sourceUrl) { - // rstudio viewer pane - if (/\bcapabilities=\b/.test(window.location)) { - window.open(sourceUrl); - } else { - window.location.href = sourceUrl; - } - } else { - const modal = new bootstrap.Modal(document.getElementById('quarto-embedded-source-code-modal')); - modal.show(); - } - return false; - }); - } - function toggleCodeHandler(show) { - return function(e) { - const detailsSrc = window.document.querySelectorAll(".cell > details > .sourceCode"); - for (let i=0; i .sourceCode"); - const fromCls = show ? "hidden" : "unhidden"; - const toCls = show ? "unhidden" : "hidden"; - for (let i=0; i1 General informa Assignment 8 - + diff --git a/assignments/search.json b/assignments/search.json index ccad8669..ec2a9420 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 notebook will be published later!", + "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)", "crumbs": [ "Templates", "Notebook for Assignment 7" @@ -389,7 +389,18 @@ "href": "assignment7.html", "title": "Assignment 7", "section": "", - "text": "1 General information\nThis assignment will be published later!", + "text": "The exercises here refer to the lecture 7/BDA chapter 5 content. The main topics for this assignment are the MCSE and importance sampling.\nThe exercises constitute 96% of the Quiz 7 grade.\nWe prepared a quarto notebook specific to this assignment to help you get started. You still need to fill in your answers on Mycourses! You can inspect this and future templates\n\nas a rendered html file (to access the qmd file click the “</> Code” button at the top right hand corner of the template)\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\n\nFor convenience the assignment questions are copied below. Answer the questions in MyCourses.\nLecture 7/Chapter 5 of BDA Quiz (96% of grade)\n\nThis week's assignment focuses on hierarchical models and modelling with brms.\n\n1. Exchangeability\nAn important building block of hierarchical models is the assumption of exchangeability. Let's review.\n\n1.1 Consider parameters \\(\\theta_j\\) for j in 1...J. Which of these statements correctly describes exchangeability?\n\n\n1.2 What best describes the difference between independence and exchangeability? \n\n\nConsider the following: assume a box has N black and white balls but we do not know how many of each color. We pick a ball \\(y_1\\) at random, and we do not put it back, we then pick another ball \\(y_2\\) at random. Denote the number of black balls by B and white by W.\n\n1.3: Are observations \\( y_1 \\) and \\( y_2 \\) exchangeable?\n\n\n1.4: Are observations \\(y_1\\) and \\(y_2\\) independent?\n\n\n1.5: Can we act as if the two observations are independent?\n\n\n1.6: Exchangeability allows us to express dependencies of data and parameters in a convenient form. Suppose we model a sequence of exchangeable random variables \\( \\theta \\) via a governing, or population distribution, where conditional on some unknown parameters \\( \\phi \\), we may assume independence between the elements of \\( \\theta \\). Assume that \\( \\theta \\) has J elements, write down an equation that conveniently factors the joint probability \\( p(\\theta,\\phi) \\):\n\n\nDe Finetti's theorem provides the theoretical basis for the equivalence to the independence assumption when J goes to infinity. In practice J is finite, but the difference may be small when J is relatively large. Check out the examples mentioned in the Chapter notes if you need more convincing. \n\n\\( \\phi \\) is in general unknown. so the marginal prior for \\( \\theta \\) must average over uncertainty in \\( \\phi \\): \\( \\int \\prod^J_{j=1} p(\\theta_j | \\phi) p(\\phi)d\\phi \\). \n\n1.7 Based on the marginal prior formulation in the paragraph above, what can you say about the covariances \\( \\text{cov}( \\theta_i, \\theta_j) \\)?\n\n\n1.8 As with the parameters above, we often think of exchangeability as arising for our data model conditional on extra information x, such that the tuple \\((x_i,y_i)\\) are exchangeable, whereas \\(y_i\\) might not be. In which modeling context is this useful? Assume that the target data is denoted by \\( y_i \\).\n \n\n2. Overview of hierarchical models\n\n2.1 Which of these best describes a hierarchical model?\n\n\n\n2.2: Consider that there are observations \\(y\\) indexed by observation number \\(i\\) and group \\(j\\). Suppose the data are modeled dependent on parameters \\( \\theta_j \\) where \\( j = 1,\\dotsc,J\\) indexes some meaningful grouping such as hospital-j specific health-outcomes, conditional on parameters \\( \\phi \\) which are hyper-parameters of the prior distribution of \\( \\theta_j \\). \\( \\phi \\) are themselved modeled by prior distribution \\( p(\\phi) \\). We think of the distribution \\( p( \\phi ) \\) as the population distribution which generates the values for \\( \\theta \\) in the hierarchical model. What are some of the benefits of hierarchical models compared to seperate models, which assume no relationship between j (and seperate models are estimated), and pooled models, which consider all j jointly, but do not model j specific parameters?\n \n\nThroughout the rest of the course, we will often compare the hierarchical model, to a seperate model and the pooled model. Suppose for the questions below that you are modeling data \\( y_{ij} \\) where \\( i \\) refers to an observation within the \\( j^{\\text{th}}\\) group, the observation model for \\( y_{ij} \\) is normal, and we consider hierarchies at the level of the parameters describing the location of \\( y_{ij} \\). \n\n2.3 Based on the description of the above, the lecture and BDA chapter 5 content, which of these below would suggest a seperate model for \\( y_{ij} \\)? \\(\\pi() \\) stands for some prior distribution and \\( \\eta_j \\) may be a vector of parameters such that \\(cov(\\eta_s,\\eta_r) = 0 \\) for \\( s \\neq r \\).\n\n\n2.4 Based on the description of the above, the lecture and BDA chapter 5 content, which of these below would suggest a pooled model for \\( y_{ij} \\)? \\(\\pi() \\) stands for some prior distribution and \\( \\eta_j \\) may be a vector of parameters such that \\(cov(\\eta_s,\\eta_r) = 0 \\) for \\( s \\neq r )\\.\n\n\n\n2.5: Based on the description of the above, the lecture and BDA chapter 5 content, which of these below would suggest a pooled model for \\( y_{ij} \\)? \\(\\pi() \\) stands for some prior distribution and \\( \\eta_j \\) may be a vector where \\(cov(\\eta_s,\\eta_r) = 0 \\) for \\( s \\neq r \\).\n\n\n\n2.6: Why are hierarchical models sometimes also referred to as partially pooled models. You may find it helpful to review the first unnumbered equation on page 115 of BDA3?\n\n\nIt may help, before translating the model to code, to first describe the relationship between variables as a directed acyclic graph (DAG) (see lecture 7). We interpret the DAG starting from top to bottom as describing the generative mechanism implied by priors and observation model for \\( y_{ij} \\). Top level variables feed into distributions of lower level parameters and the observation model. Distributions are typically not further described in the DAG. By drawing variables sequentially from top to bottom, you can generate fake observations (push-forward distribution). In the case that the parameters have not yet been updated by the data information, this push-forward distribution is called the prior predictive distribution of \\( y \\). You have already created such a prior predictive distribution in Assignment 1, question 7 and we will return to this in the sections below. \n\n2.7: What is the difference between sequential draws from priors and the data model as described above to drawing from the joint posterior in Stan?\n\n\nIn the Figure 1 below, assume that all circular nodes indicate that the object inside can be generated according to some distribution.\n\nFigure 1\n\n2.8: Which of these equations properly describes the posterior for the model shown in the diagram?\n\n\n\n3. Meta-analysis and hierarchical models\n\nOften similar research studies in areas such as medicine or social science will be published under slightly different conditions or replicated with different subjects. It is of interest to summarise and integrate those findings for which hierarchical models have become increasingly popular. \n\n3.1: Suppose \\(y_i\\) is the point estimate for an effect size of a single study, \\( i \\). Why is it often appropriate to model \\( y_i \\) by a normal distribution with known standard deviation \\( \\sigma_i \\) which is taken as the standard error estimate for \\( y_i \\)?\n\n\n3.2: Why are hiearchical models preferable to seperate and pooled models for meta-analysis?\n\n\n3.3: Suppose the assumption of exchangeability is false because you know the estimates of effects across studies depends on extra information \\( x_i \\), e.g. geolocation and geolocation has a significant impact on the estimates. What should you do in this circumstance?\n\n\n3.4: Based on the discussion above, which of the below would refer to a hierarchical model for \\( y_i\\)?\n\n\n\n4. Introduction to brms\n\nbrms is an R package which makes writing models with Stan easier.\n\nSuppose you have oberved the following variables, from different groups: \\(x, z, y\\). \\(i\\) is the observation number and \\(j\\) the group indicator. Assume a model \\(y_ij \\sim N(\\mu_ij, \\sigma)\\).\nTranslate the following equations for the linear predictor term (\\mu_ij\\) into brms syntax:\n\n4.1 \\(\\mu_ij = \\alpha_0\\):\n\n\n\n\n4.2 \\(\\mu_ij = \\alpha_0 + \\beta_1 x_i\\)\n\n\n\n4.3 \\(\\mu_ij = \\alpha_0 + \\beta_1 x_i + \\beta_2 z_i\\)\n\n\n\n4.4 \\(\\mu_ij = \\alpha_0 + \\alpha_j + \\beta_1 x_i\\)\n\n\n\n5. Simulation warmup\n\nIn this task, you will simulate data from a hierarchical model to gain better insight into it.\n\n\nThe following R code simulates data from a hierarchical structure, and then plots the results. Experiment with this function by using it on different values of the arguments, and answer the following questions. This code is also included in the notebook for this assignment.\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\n5.1 Which of the following generative models does the code correspond to?\n\n\\(i\\) is the observation number, \\(j\\) is the group indicator.\n\n\n\n5.2 What does the vertical dashed line in the plot represent?\n\n\n5.3 Which function call would plausibly create a plot like the following?\n\n\n\n5.4 Which of these statements correctly describes the behaviour when the number of groups is increased?\n\n\n5.5 Which of these statements correctly describes the behaviour when the ratio of the between group and within group variance is changed?\n\n\n6. Sleep deprivation\nIn many cases the same people will have several data points collected (e.g. at different time points). A hierarchical model is well suited for this, with each group corresponding to a person. The sleepstudy dataset contains observations of reaction times for different people after differing number of days of sleep deprivation.\n\nYour task is to fit a hierarchical normal linear model in brms.\nThe observation model will be \\(Reaction_{ij} \\sim N(\\mu_{ij}, \\sigma)\\). But depending on the setup, the \\(\\mu_{ij}\\) term will differ.\n\nFirst fit a model with a population-level intercept, population-level effect of Days and varying intercepts per Subject. Note: in order to have the Intercept parameter be directly interpretable, use `center = FALSE` when creating the brms formula. See the code notebook for more details.\n\nUse the following priors (check the code notebook for how to specify):\n\n\\(\\alpha_0 \\sim normal(250, 100)\\)\n\\(\\beta_0 \\sim normal(0, 20)\\)\n\\(\\alpha_j \\sim normal(0, \\tau)\\)\n\\(\\tau \\sim normal^+(0, 100)\\)\n\\(\\sigma \\sim normal^+(0, 100)\\)\n\n\n6.1 Which of these formulae correctly defines the linear predictor term in a model with population-level intercept, population-level effect of Days and varying intercepts per Subject?\n\n\n6.2 Which is the correct brms formula for this model?\n\n\n\n6.3 Based on the posterior, the estimate of the population-level intercept is .\n\n6.4 The population-level intercept can be interpreted as:\n\n\n6.5 Based on the posterior, the estimate of the population-level effect of Days on Reaction is .\n\n6.6 The population-level effect of Days can be interpreted as:\n\n\n6.7 Based on the posterior, the estimate of the standard deviation of the Intercept between Subjects is .\n\n6.8 The standard deviation of the Subject-specific Intercept can be interpreted as:\n\n\nNext fit a model with subject-specific effects of Days in addition to the other terms.\n\nUse the prior \\(\\beta_j \\sim normal(0, 20)\\)\nIn this model, we can consider a correlation between the by-Subject intercept and Days effects. Use an \\(LKJ(2)\\) prior on this, \\(\\rho \\sim LKJ(2)\\).\n\n6.9 Which of these formulae correctly defines the linear predictor in this case?\n\n\n6.10 Which is the correct brms formula for this model?\n\n\n\n6.11 Based on the posterior, the estimate of the standard deviation of Subject-specific effect of Days is .\n\n6.12 The the standard deviation of the Subject specific Intercept can be interpreted as:\n\n6.13 Based on the posterior, the estimate of correlation between the Subject-specific Intercept and effect of Days is .\n\n6.14 After fitting both models, which of the statements describe the results best (here interpret \"plausible\" as what is contained within the 95% posterior interval):\n\n\n\n\n7. School calendar dataset\n\nAs you've learned from the above, hierarchical models are also useful for meta-analyses.\nThe dataset dat.konstantopolous2011 from the metadat package contains results from different studies conducted on the effect of changing the school calendar from a standard one with a long summer break to a modified one with more regular but shorter breaks.\n\nEach result of a study is a standardized estimated mean effect on student achievement, where positive values indicate improvement (yi) and the variance of the estimate (vi) for a school.\n\nThe meta-analysis model can be written as follows: \\(y_{ijk} \\sim normal(\\mu_{ijk}, \\sigma_{ijk})\\). \\(i\\) refers to an observation, \\(j\\) refers to a school, \\(k\\) refers to a district. \\(\\mu_{ijk}\\) thus refers to one observation \\(i\\) at school \\(j\\) in district \\(k\\). \\(\\mu_0\\) is the population-level effect, \\(\\mu_j\\) is the school-specific effect, and \\(\\mu_k\\) is the district-specific effect.\n\nIn this case, the \\(\\sigma_{ijk}\\) values are known (the standard errors reported from each study) and the \\(\\mu_{ijk}\\) term will differ depending on the model.\n\nIn this exercise you will fit four different models to the same data set: Pooled, separate, partially pooled within school-specific effects, and partially pooled within schools and district effects.\n\nFor all models, use brms with the default priors and use the following settings:\niter = 2000, warmup = 1000, chains = 4, seed = 2024\n\nThe dataset has separate columns for school and district, but for the models, we will want a unique identifier for each school. Before fitting any models, add a new column to the dataset called \"district_school\" which is the combination of the district and the school. This is then unique for each school, and will be used in the model formulae.\n\n\nPooled model:\n\nUse brms to fit a pooled model and answer the following questions. Check the code notebook for help starting.\n\nThe pooled model formula is: \\(\\mu_{ijk} = \\mu_0\\).\n7.1 The pooled model is written as:\n\n\n\n7.2 How many parameters are estimated in the pooled model?\n\n\n7.3 What is the Rhat value for the Intercept term?\n\n\n7.4 Based on the Rhat value, have the chains converged?\n\n\n7.5 What is the posterior mean (labelled Estimate) and lower and upper 95% posterior interval bounds (labelled CI) for the Intercept?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.6 Based on the posterior of the Intercept, what would you conclude about the effect of the intervention:\n\n\n7.7 Suppose there is a new school in an existing district (School = 9, District = 86). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument.\n\n\n7.8 Suppose there is a new school in a new district (School = 1, District = 30). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument.\n\n\nSeparate model:\n\nUse brms to fit a separate model and answer the following questions. Check the code notebook for help starting.\n\nThe separate model formula is: \\(\\mu_{ijk}= \\mu_{ijk}\\).\n7.9 The separate model is written as:\n\n\n\n7.10 How many parameters are estimated in the separate model?\n\n\n7.11 What is the estimated effect for School 3 in District 71?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.12 What is the estimated effect of School 7 in District 86?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.13 Based on the posterior for the separate model, what could reasonably be concluded about the effect of the intervention:\n\n\n7.14 Suppose there is a new school in an existing district (District = 86, School = 9). Why can we not easily predict the effect for this school based on the separate model posterior?\n\n\nPartially pooled model for schools.\n\nThe partially pooled model formula is: \\(\\mu_{ijk} = \\mu_0 + \\mu_j\\)\n7.15 And the partially pooled hierarchical model:\n\n\n\n7.16 How many parameters are estimated in the partially pooled for schools model?\n\n\n7.17 Based on the posterior for the pooled model, what could reasonably be concluded about the effect of the intervention:\n\n\n7.18 What is the estimated effect for School 3 in District 71?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.19 What is the estimated effect of School 7 in District 86?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.20 Suppose there is a new school in an existing district (District = 86, School = 9). What would the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument with allow_new_levels = TRUE.\n\n\n7.21 Suppose there is a new school in a new district (District = 30, School = 1). What would the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument with allow_new_levels = TRUE.\n\n\nPartially pooled model for schools in districts:\n\nIn this data set, as there is a two-level structure, where schools are nested in districts, we can add another level to the hierarchy. The additional hierarchy formula is: \\(\\mu_{ijk} = \\mu_0 + \\mu_j + \\mu_k\\)\n\n7.22 What is the correct brms formula?\n\n\n7.23 How many parameters are estimated in the partially pooled for schools in districts model?\n\n\n7.24 Suppose there is a new school in an existing district (District = 86, School = 9). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument with allow_new_levels = TRUE.\n\n\n7.25 Suppose there is a new school in a new district (District = 30, School = 1). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the `newdata` argument with `allow_new_levels = TRUE`.\n\n\n7.26 Which of the following statements are true relating to exchangeability assumptions in the models:\n\n\n7.27 After fitting all the models, choose which of the following statements relating to the results are true:", + "crumbs": [ + "Assignments", + "Assignment 7" + ] + }, + { + "objectID": "assignment7.html#assignment-questions", + "href": "assignment7.html#assignment-questions", + "title": "Assignment 7", + "section": "", + "text": "For convenience the assignment questions are copied below. Answer the questions in MyCourses.\nLecture 7/Chapter 5 of BDA Quiz (96% of grade)\n\nThis week's assignment focuses on hierarchical models and modelling with brms.\n\n1. Exchangeability\nAn important building block of hierarchical models is the assumption of exchangeability. Let's review.\n\n1.1 Consider parameters \\(\\theta_j\\) for j in 1...J. Which of these statements correctly describes exchangeability?\n\n\n1.2 What best describes the difference between independence and exchangeability? \n\n\nConsider the following: assume a box has N black and white balls but we do not know how many of each color. We pick a ball \\(y_1\\) at random, and we do not put it back, we then pick another ball \\(y_2\\) at random. Denote the number of black balls by B and white by W.\n\n1.3: Are observations \\( y_1 \\) and \\( y_2 \\) exchangeable?\n\n\n1.4: Are observations \\(y_1\\) and \\(y_2\\) independent?\n\n\n1.5: Can we act as if the two observations are independent?\n\n\n1.6: Exchangeability allows us to express dependencies of data and parameters in a convenient form. Suppose we model a sequence of exchangeable random variables \\( \\theta \\) via a governing, or population distribution, where conditional on some unknown parameters \\( \\phi \\), we may assume independence between the elements of \\( \\theta \\). Assume that \\( \\theta \\) has J elements, write down an equation that conveniently factors the joint probability \\( p(\\theta,\\phi) \\):\n\n\nDe Finetti's theorem provides the theoretical basis for the equivalence to the independence assumption when J goes to infinity. In practice J is finite, but the difference may be small when J is relatively large. Check out the examples mentioned in the Chapter notes if you need more convincing. \n\n\\( \\phi \\) is in general unknown. so the marginal prior for \\( \\theta \\) must average over uncertainty in \\( \\phi \\): \\( \\int \\prod^J_{j=1} p(\\theta_j | \\phi) p(\\phi)d\\phi \\). \n\n1.7 Based on the marginal prior formulation in the paragraph above, what can you say about the covariances \\( \\text{cov}( \\theta_i, \\theta_j) \\)?\n\n\n1.8 As with the parameters above, we often think of exchangeability as arising for our data model conditional on extra information x, such that the tuple \\((x_i,y_i)\\) are exchangeable, whereas \\(y_i\\) might not be. In which modeling context is this useful? Assume that the target data is denoted by \\( y_i \\).\n \n\n2. Overview of hierarchical models\n\n2.1 Which of these best describes a hierarchical model?\n\n\n\n2.2: Consider that there are observations \\(y\\) indexed by observation number \\(i\\) and group \\(j\\). Suppose the data are modeled dependent on parameters \\( \\theta_j \\) where \\( j = 1,\\dotsc,J\\) indexes some meaningful grouping such as hospital-j specific health-outcomes, conditional on parameters \\( \\phi \\) which are hyper-parameters of the prior distribution of \\( \\theta_j \\). \\( \\phi \\) are themselved modeled by prior distribution \\( p(\\phi) \\). We think of the distribution \\( p( \\phi ) \\) as the population distribution which generates the values for \\( \\theta \\) in the hierarchical model. What are some of the benefits of hierarchical models compared to seperate models, which assume no relationship between j (and seperate models are estimated), and pooled models, which consider all j jointly, but do not model j specific parameters?\n \n\nThroughout the rest of the course, we will often compare the hierarchical model, to a seperate model and the pooled model. Suppose for the questions below that you are modeling data \\( y_{ij} \\) where \\( i \\) refers to an observation within the \\( j^{\\text{th}}\\) group, the observation model for \\( y_{ij} \\) is normal, and we consider hierarchies at the level of the parameters describing the location of \\( y_{ij} \\). \n\n2.3 Based on the description of the above, the lecture and BDA chapter 5 content, which of these below would suggest a seperate model for \\( y_{ij} \\)? \\(\\pi() \\) stands for some prior distribution and \\( \\eta_j \\) may be a vector of parameters such that \\(cov(\\eta_s,\\eta_r) = 0 \\) for \\( s \\neq r \\).\n\n\n2.4 Based on the description of the above, the lecture and BDA chapter 5 content, which of these below would suggest a pooled model for \\( y_{ij} \\)? \\(\\pi() \\) stands for some prior distribution and \\( \\eta_j \\) may be a vector of parameters such that \\(cov(\\eta_s,\\eta_r) = 0 \\) for \\( s \\neq r )\\.\n\n\n\n2.5: Based on the description of the above, the lecture and BDA chapter 5 content, which of these below would suggest a pooled model for \\( y_{ij} \\)? \\(\\pi() \\) stands for some prior distribution and \\( \\eta_j \\) may be a vector where \\(cov(\\eta_s,\\eta_r) = 0 \\) for \\( s \\neq r \\).\n\n\n\n2.6: Why are hierarchical models sometimes also referred to as partially pooled models. You may find it helpful to review the first unnumbered equation on page 115 of BDA3?\n\n\nIt may help, before translating the model to code, to first describe the relationship between variables as a directed acyclic graph (DAG) (see lecture 7). We interpret the DAG starting from top to bottom as describing the generative mechanism implied by priors and observation model for \\( y_{ij} \\). Top level variables feed into distributions of lower level parameters and the observation model. Distributions are typically not further described in the DAG. By drawing variables sequentially from top to bottom, you can generate fake observations (push-forward distribution). In the case that the parameters have not yet been updated by the data information, this push-forward distribution is called the prior predictive distribution of \\( y \\). You have already created such a prior predictive distribution in Assignment 1, question 7 and we will return to this in the sections below. \n\n2.7: What is the difference between sequential draws from priors and the data model as described above to drawing from the joint posterior in Stan?\n\n\nIn the Figure 1 below, assume that all circular nodes indicate that the object inside can be generated according to some distribution.\n\nFigure 1\n\n2.8: Which of these equations properly describes the posterior for the model shown in the diagram?\n\n\n\n3. Meta-analysis and hierarchical models\n\nOften similar research studies in areas such as medicine or social science will be published under slightly different conditions or replicated with different subjects. It is of interest to summarise and integrate those findings for which hierarchical models have become increasingly popular. \n\n3.1: Suppose \\(y_i\\) is the point estimate for an effect size of a single study, \\( i \\). Why is it often appropriate to model \\( y_i \\) by a normal distribution with known standard deviation \\( \\sigma_i \\) which is taken as the standard error estimate for \\( y_i \\)?\n\n\n3.2: Why are hiearchical models preferable to seperate and pooled models for meta-analysis?\n\n\n3.3: Suppose the assumption of exchangeability is false because you know the estimates of effects across studies depends on extra information \\( x_i \\), e.g. geolocation and geolocation has a significant impact on the estimates. What should you do in this circumstance?\n\n\n3.4: Based on the discussion above, which of the below would refer to a hierarchical model for \\( y_i\\)?\n\n\n\n4. Introduction to brms\n\nbrms is an R package which makes writing models with Stan easier.\n\nSuppose you have oberved the following variables, from different groups: \\(x, z, y\\). \\(i\\) is the observation number and \\(j\\) the group indicator. Assume a model \\(y_ij \\sim N(\\mu_ij, \\sigma)\\).\nTranslate the following equations for the linear predictor term (\\mu_ij\\) into brms syntax:\n\n4.1 \\(\\mu_ij = \\alpha_0\\):\n\n\n\n\n4.2 \\(\\mu_ij = \\alpha_0 + \\beta_1 x_i\\)\n\n\n\n4.3 \\(\\mu_ij = \\alpha_0 + \\beta_1 x_i + \\beta_2 z_i\\)\n\n\n\n4.4 \\(\\mu_ij = \\alpha_0 + \\alpha_j + \\beta_1 x_i\\)\n\n\n\n5. Simulation warmup\n\nIn this task, you will simulate data from a hierarchical model to gain better insight into it.\n\n\nThe following R code simulates data from a hierarchical structure, and then plots the results. Experiment with this function by using it on different values of the arguments, and answer the following questions. This code is also included in the notebook for this assignment.\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\n5.1 Which of the following generative models does the code correspond to?\n\n\\(i\\) is the observation number, \\(j\\) is the group indicator.\n\n\n\n5.2 What does the vertical dashed line in the plot represent?\n\n\n5.3 Which function call would plausibly create a plot like the following?\n\n\n\n5.4 Which of these statements correctly describes the behaviour when the number of groups is increased?\n\n\n5.5 Which of these statements correctly describes the behaviour when the ratio of the between group and within group variance is changed?\n\n\n6. Sleep deprivation\nIn many cases the same people will have several data points collected (e.g. at different time points). A hierarchical model is well suited for this, with each group corresponding to a person. The sleepstudy dataset contains observations of reaction times for different people after differing number of days of sleep deprivation.\n\nYour task is to fit a hierarchical normal linear model in brms.\nThe observation model will be \\(Reaction_{ij} \\sim N(\\mu_{ij}, \\sigma)\\). But depending on the setup, the \\(\\mu_{ij}\\) term will differ.\n\nFirst fit a model with a population-level intercept, population-level effect of Days and varying intercepts per Subject. Note: in order to have the Intercept parameter be directly interpretable, use `center = FALSE` when creating the brms formula. See the code notebook for more details.\n\nUse the following priors (check the code notebook for how to specify):\n\n\\(\\alpha_0 \\sim normal(250, 100)\\)\n\\(\\beta_0 \\sim normal(0, 20)\\)\n\\(\\alpha_j \\sim normal(0, \\tau)\\)\n\\(\\tau \\sim normal^+(0, 100)\\)\n\\(\\sigma \\sim normal^+(0, 100)\\)\n\n\n6.1 Which of these formulae correctly defines the linear predictor term in a model with population-level intercept, population-level effect of Days and varying intercepts per Subject?\n\n\n6.2 Which is the correct brms formula for this model?\n\n\n\n6.3 Based on the posterior, the estimate of the population-level intercept is .\n\n6.4 The population-level intercept can be interpreted as:\n\n\n6.5 Based on the posterior, the estimate of the population-level effect of Days on Reaction is .\n\n6.6 The population-level effect of Days can be interpreted as:\n\n\n6.7 Based on the posterior, the estimate of the standard deviation of the Intercept between Subjects is .\n\n6.8 The standard deviation of the Subject-specific Intercept can be interpreted as:\n\n\nNext fit a model with subject-specific effects of Days in addition to the other terms.\n\nUse the prior \\(\\beta_j \\sim normal(0, 20)\\)\nIn this model, we can consider a correlation between the by-Subject intercept and Days effects. Use an \\(LKJ(2)\\) prior on this, \\(\\rho \\sim LKJ(2)\\).\n\n6.9 Which of these formulae correctly defines the linear predictor in this case?\n\n\n6.10 Which is the correct brms formula for this model?\n\n\n\n6.11 Based on the posterior, the estimate of the standard deviation of Subject-specific effect of Days is .\n\n6.12 The the standard deviation of the Subject specific Intercept can be interpreted as:\n\n6.13 Based on the posterior, the estimate of correlation between the Subject-specific Intercept and effect of Days is .\n\n6.14 After fitting both models, which of the statements describe the results best (here interpret \"plausible\" as what is contained within the 95% posterior interval):\n\n\n\n\n7. School calendar dataset\n\nAs you've learned from the above, hierarchical models are also useful for meta-analyses.\nThe dataset dat.konstantopolous2011 from the metadat package contains results from different studies conducted on the effect of changing the school calendar from a standard one with a long summer break to a modified one with more regular but shorter breaks.\n\nEach result of a study is a standardized estimated mean effect on student achievement, where positive values indicate improvement (yi) and the variance of the estimate (vi) for a school.\n\nThe meta-analysis model can be written as follows: \\(y_{ijk} \\sim normal(\\mu_{ijk}, \\sigma_{ijk})\\). \\(i\\) refers to an observation, \\(j\\) refers to a school, \\(k\\) refers to a district. \\(\\mu_{ijk}\\) thus refers to one observation \\(i\\) at school \\(j\\) in district \\(k\\). \\(\\mu_0\\) is the population-level effect, \\(\\mu_j\\) is the school-specific effect, and \\(\\mu_k\\) is the district-specific effect.\n\nIn this case, the \\(\\sigma_{ijk}\\) values are known (the standard errors reported from each study) and the \\(\\mu_{ijk}\\) term will differ depending on the model.\n\nIn this exercise you will fit four different models to the same data set: Pooled, separate, partially pooled within school-specific effects, and partially pooled within schools and district effects.\n\nFor all models, use brms with the default priors and use the following settings:\niter = 2000, warmup = 1000, chains = 4, seed = 2024\n\nThe dataset has separate columns for school and district, but for the models, we will want a unique identifier for each school. Before fitting any models, add a new column to the dataset called \"district_school\" which is the combination of the district and the school. This is then unique for each school, and will be used in the model formulae.\n\n\nPooled model:\n\nUse brms to fit a pooled model and answer the following questions. Check the code notebook for help starting.\n\nThe pooled model formula is: \\(\\mu_{ijk} = \\mu_0\\).\n7.1 The pooled model is written as:\n\n\n\n7.2 How many parameters are estimated in the pooled model?\n\n\n7.3 What is the Rhat value for the Intercept term?\n\n\n7.4 Based on the Rhat value, have the chains converged?\n\n\n7.5 What is the posterior mean (labelled Estimate) and lower and upper 95% posterior interval bounds (labelled CI) for the Intercept?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.6 Based on the posterior of the Intercept, what would you conclude about the effect of the intervention:\n\n\n7.7 Suppose there is a new school in an existing district (School = 9, District = 86). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument.\n\n\n7.8 Suppose there is a new school in a new district (School = 1, District = 30). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument.\n\n\nSeparate model:\n\nUse brms to fit a separate model and answer the following questions. Check the code notebook for help starting.\n\nThe separate model formula is: \\(\\mu_{ijk}= \\mu_{ijk}\\).\n7.9 The separate model is written as:\n\n\n\n7.10 How many parameters are estimated in the separate model?\n\n\n7.11 What is the estimated effect for School 3 in District 71?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.12 What is the estimated effect of School 7 in District 86?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.13 Based on the posterior for the separate model, what could reasonably be concluded about the effect of the intervention:\n\n\n7.14 Suppose there is a new school in an existing district (District = 86, School = 9). Why can we not easily predict the effect for this school based on the separate model posterior?\n\n\nPartially pooled model for schools.\n\nThe partially pooled model formula is: \\(\\mu_{ijk} = \\mu_0 + \\mu_j\\)\n7.15 And the partially pooled hierarchical model:\n\n\n\n7.16 How many parameters are estimated in the partially pooled for schools model?\n\n\n7.17 Based on the posterior for the pooled model, what could reasonably be concluded about the effect of the intervention:\n\n\n7.18 What is the estimated effect for School 3 in District 71?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.19 What is the estimated effect of School 7 in District 86?\nMean: , lower 95% interval bound: , upper 95% interval bound: \n\n7.20 Suppose there is a new school in an existing district (District = 86, School = 9). What would the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument with allow_new_levels = TRUE.\n\n\n7.21 Suppose there is a new school in a new district (District = 30, School = 1). What would the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument with allow_new_levels = TRUE.\n\n\nPartially pooled model for schools in districts:\n\nIn this data set, as there is a two-level structure, where schools are nested in districts, we can add another level to the hierarchy. The additional hierarchy formula is: \\(\\mu_{ijk} = \\mu_0 + \\mu_j + \\mu_k\\)\n\n7.22 What is the correct brms formula?\n\n\n7.23 How many parameters are estimated in the partially pooled for schools in districts model?\n\n\n7.24 Suppose there is a new school in an existing district (District = 86, School = 9). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the newdata argument with allow_new_levels = TRUE.\n\n\n7.25 Suppose there is a new school in a new district (District = 30, School = 1). What is the mean prediction for the effect in this school? Use the function`posterior_epred` and the `newdata` argument with `allow_new_levels = TRUE`.\n\n\n7.26 Which of the following statements are true relating to exchangeability assumptions in the models:\n\n\n7.27 After fitting all the models, choose which of the following statements relating to the results are true:", "crumbs": [ "Assignments", "Assignment 7" 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 49f60ed938440ca8a1036ef07b6dedccbb988b30..72aa22125694b9de277f69cd36398cccc145cb06 100644 GIT binary patch literal 67451 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 literal 68088 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 aNwoYlY4X0CCriA|WTa<`W1MjQ>puWIQIpdE diff --git a/assignments/template7.html b/assignments/template7.html index 49fbfb3d..dd6afbac 100644 --- a/assignments/template7.html +++ b/assignments/template7.html @@ -300,6 +300,9 @@

On this page

@@ -333,7 +336,328 @@

On this page

1 General information

-

This notebook will be published later!

+

This assignment relates to Lecture 7 and Chapter 5.

+

We recommend using JupyterHub (which has all the needed packages pre-installed).

+
+

Reading instructions:

+ +
+
+
+
+ +
+
+General Instructions for Answering the Assignment Questions +
+
+
+
+
+
    +
  • Questions 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.
  • +
  • We recommend opening these notebooks in the Aalto JupyterHub, see how to use R and RStudio remotely.
  • +
  • For inspiration for code, have a look at the BDA R Demos and the specific Assignment code notebooks
  • +
  • Recommended 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.
  • +
  • Common questions and answers regarding installation and technical problems can be found in Frequently Asked Questions (FAQ).
  • +
  • Deadlines for all assignments can be found on the course web page and in MyCourses.
  • +
  • You are allowed to discuss assignments with your friends, but it is not allowed to copy solutions directly from other students or from internet.
  • +
  • Do not share your answers publicly.
  • +
  • Do 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.
  • +
  • Use 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).
  • +
  • All suspected plagiarism will be reported and investigated. See more about the Aalto University Code of Academic Integrity and Handling Violations Thereof.
  • +
  • If 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!
  • +
+
+
+
+
+
if (!require(tidybayes)) {
+    install.packages("tidybayes")
+    library(tidybayes)
+}
+
+
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)
+}
+
+
Loading required package: brms
+
+
+
Loading required package: Rcpp
+
+
+
Loading 'brms' package (version 2.22.0). Useful instructions
+can be found by typing help('brms'). A more detailed introduction
+to the package is available through vignette('brms_overview').
+
+
+

+Attaching package: 'brms'
+
+
+
The following objects are masked from 'package:tidybayes':
+
+    dstudent_t, pstudent_t, qstudent_t, rstudent_t
+
+
+
The following object is masked from 'package:stats':
+
+    ar
+
+
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)
+}
+
+
Loading required package: cmdstanr
+
+
+
This is cmdstanr version 0.8.1
+
+
+
- CmdStanR documentation and vignettes: mc-stan.org/cmdstanr
+
+
+
- CmdStan path: /home/runner/.cmdstan/cmdstan-2.35.0
+
+
+
- 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()
+}
+
+
+
+

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")
+}
+
+

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
+  )
+
+
Error in ggplot(data, aes(x = y, y = group)): could not find function "ggplot"
+
+
+
+
+

3 Sleep deprivation

+

The dataset sleepstudy is available by using the command data(sleepstudy, package = "lme4")

+

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")
+
+
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
+)
+
+

We can see the parameters and default priors with

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

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
+
+
+

And then fit the model:

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

We can inspect the model fit:

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

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")
+
+

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 = "_")
+  )
+
+

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
+)
+

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
+  )
+

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")
+}
+
+

And can be used as follows:

+
plot_school_posteriors(
+  fit = schoolcalendar_pooled_fit,
+  dataset = school_calendar_data
+)
@@ -824,22 +1148,270 @@

1 General informa diff --git a/assignments_gsu.html b/assignments_gsu.html index 611a1c7c..82ff2c41 100644 --- a/assignments_gsu.html +++ b/assignments_gsu.html @@ -6,7 +6,7 @@ - + Bayesian Data Analysis course - Assignments (GSU) – Bayesian Data Analysis course