Confronting models with data

 

 

 

In this working group we learn about methods and ideas for confronting models with data, and about data science generally.  Anyone is encouraged and welcome to attend.

Meeting schedule and topics:

In the Spring 2023 semester, we will meet in person again, Fridays 1pm in EN 2101.

Spring 2023

Fall 2022

We’re going to try something different this semester and have a series of presentations from faculty and students across UW to see the breadth of data science (in the widest sense). The format is a short-ish talk/demo, followed by questions – we want this to be as interactive as possible! In the Fall 2022 semester, we met at 1 p.m. Fridays (Mountain Time) on Zoom.

If you’re interested in contributing a talk/demo/?, get in touch with @Lars Kotthoff.

  • Aug 26, 2022 “Physics-informed neural-networks (PINN) for solving linear elastic solid mechanics problems: a comparison with finite element method”, presented by Min Lin and Xiang Zhang (Mechnical Engineering).

  • Sep 2, 2022 “Quantitative Structure-Property Relationships of COFs for Desalination”, presented by Ali Davies and Laura de Sousa Oliveira (Chemistry).

  • Sep 9, 2022 “Rapid Introduction to Spatial R”, presented by Shannon Albeke (WyGISC). You can download the script and data here: Albeke_Example

  • Sep 16, 2022 “Hands-On Introduction to Deep Learning”, presented by Mehdi Nourelahi (EECS).

  • Sep 23, 2022 “Flow and transport in large-scale complex permeable media”, presented by Saman Aryana (Chemical and Biomedical Engineering). Note that this will be at 2pm instead of 1pm!

  • Sep 30, 2022 “Dynamic Analysis of Ecological Restoration of damaged landscapes with Chronosequences, and building Models to Generate Alternatives for policy makers”, presented by Roger Coupal (Agricultural and Applied Economics).

  • Oct 7, 2022 “Deep learning methods for geophysical inverse problems and applications to subsurface characterization”, presented by Dario Grana (Geology and Geophysics) and Mingliang Liu (Stanford).

  • Oct 14, 2022 “Connecting Data Science and the Sustainable Built Environment”, presented by Liping Wang (Civil and Architectural Engineering).

  • Oct 21, 2022 No talk.

  • Oct 28, 2022 No talk, again.

  • Nov 4, 2022 No ta… wait, no, actually there will be a talk. “Data-intensive freshwater ecology”, presented by Sarah Collins (Zoology and Physiology).

  • Nov 11, 2022 “Divide and Conquer: Partitioning the Sky with the Hierarchical Equal Area isoLatitude Pixelisation”, presented by Adam Myers (Physics and Astronomy).

  • 18 Nov 2022 Dec 2, 2022 “Invasion informatics! Harnessing the big data revolution to overcome invasive species”, presented by Kelsey Brock (Plant Sciences).

Spring 2022


We are inviting some speakers to join us this semester, with a few different potential topics including computer security, value systems associated with data sharing, data science in biotechnology companies, careers in data science, etc. If you have suggestions or requests, please add them here or in the wishlist below.

Wish list for topics

Please add and edit this list, including expanding the plan and volunteering to lead on one of these topics.

  • Short (5-10 minute) presentations by group members on data science related to their research with Q&A afterwards

  • See page that lists previous and potential people to invite to talk about careers in non-academic data science (requires login).

  • Reproducible research with workflow managers like Nextflow, and visit from bioinformatician at Wyoming Department of Health

  • Compositional data analysis,

  • Machine learning

    • Scaling up machine learning. Would like to do a hands-on project on some really large data (leaving this vague, so we can find something useful to the broader group).

    • A more introductory overview of machine learning for beginners. Maybe someone can give some background for part of a group meeting, and several of us can share how we are implementing machine learning (or would like to) in our own research? @Joshua Harrison

    • Bayesian machine learning/neural networks

  • Computational statistics

    • Bayesian multilevel modeling (using the brms R package or other methods)

    • Bayesian methods that don’t involve MCMC: variational inference, INLA, ABC

    • Nonlinear modelling (frequentist and Bayesian approaches)

    • Compositional data analysis, potentially as applied to microbiome data – transformations, and considerations (useful for those working with 16S sequence data), or other bioinformatics-related topics if there is enough demand. @Scott Klasek @Melissa DeSiervo I could provide perspective / share some stuff about compositional data that is not 16S related. I’ve been working with this “ecotraj” package in R to perform some analyses on speed and directionality of community shifts https://cran.r-project.org/web/packages/ecotraj/vignettes/IntroductionETA.html

    • Spatial analysis

  • Text mining intro - a basic primer of questions and tools and maybe a follow-up if anyone is interested in digging deeper. Maybe with a focus on how the methods have been applied to biological questions, rather than social science questions.

  • Linux

    • Intermediate bash tips & tricks

    • replicable data cleaning and manipulation

  • How to make your own SQL database

  • Webscraping

  • Visualization

    • Interactive plots

    • How to make an html-based dashboard, with an example for hands-on learning.

    • Effective story-telling and visualization for scientific research with applications in R

  • Math for machine learning/statistics: linear algebra, probability, calculus


Fall 2021

  • Sep 1, 2021 – Organizational meeting

    • develop list of topics for the semester

    • pair and share – break out into smaller groups and share what you have been up with respect to data science, what you’ve been wanting to learn, and learn about other people in the group.

  • Sep 8, 2021@Lars Kotthoff will do a brief intro to mlr3pipelines

  • Sep 15, 2021@Dylan Perkins (ARCC/End User Support): Intro to shared computing at UW – Teton compute and storage resources (video is below, slides are in https://docs.google.com/presentation/d/145AVEOLHi22CPn0IwpLkVCNWJ7ZzGJq1fZDWt4IBE8I/edit?usp=sharing).

    • As a follow-up, please contact arcc-info@uwyo.edu with questions.

    • Please drop them a line if you are interested in participating in some testing of the new browser-based, graphical interface they are developing to the teton compute resources. They would appreciate several people testing the system.

  • Sep 22, 2021 hands on teton

    • Tasks you would like help with or demonstrated, from entry-level to advanced

      • we did one big group screen share to show:

        • how to configure ssh so that we can provide Teton password and validation (2FA) once per session

        • how to launch a SLURM interactive session to do some text wrangling with UNIX command line tools

        • demonstrate two ways of using text editors to write bash scripts that can be executed on teton; this include making a SLURM compliant script that we submitted withs batch

        • our script demo’d the use of /dev/shm, /lscratch, and /gscratch for simulation output and how to move data home and clean up after yourself at the end

      • We did not get to demo how to install R packages yourself. Instead, I started a Knowledge Base entry on this, which you are welcome to add to, edit, and improve.

  • Sep 29, 2021 – Short demonstration of LaTeX as implemented in Overleaf, followed by hands-on session for participants to sign-up for a free account, make documents with one or more templates, and ask questions of more experienced users. @Alex Buerkle will do initial demo and will ask for helpers to assist others in hands-on session.

  • Oct 6, 2021 – an introduction to Bayesian modeling. @Eryn McFarlane @Topher Weiss-Lehman will discuss the basis of Bayesian thinking and talk about why one might want to use Bayesian methods.

  • Oct 13, 2021 – an introduction to computational Bayesian modeling (@Andrew Siefert , @Joshua Harrison. Why do computers help when doing Bayesian statistics? What does sampling and convergence mean? A high level overview of the different tools one can use to do Bayesian statistics. Finish with illustration of a model specified with R and Stan so that folks can get an idea of the modeling process.

    • Animation of samplers for Bayesian modeling: https://chi-feng.github.io/mcmc-demo/app.html

    • HERE is a git repo that has the code for the little mini-talk that Josh gave. We can keep posting Bayesian stuff here if we want. Feel free to do pull requests. If you have not used git, you can go to that link and view the different files and download them as you like.

  • Oct 20, 2021 – Breakout groups for hands-on and Q&A regarding Bayesian models for parameter estimation and inference. Request a group below. We’ll add one or two more at the beginning of the meeting.

    • Bayesian hierarchical modeling using brms (an R interface that can use traditional model specification as one would find in lme4 to create and run models in STAN)

    • More about specifying models in STAN

    • More about model specification itself, before one writes code to implement the model.

  • Oct 27, 2021 – Regular expressions tutorial and practice – Alex will lead and we will do hands-on work in break out groups. Regular expression gymnastics - fall 2021

    • We will use R and https://regex101.com as sandboxes for learning

    • Regular expressions are a tool for parsing, modifying, and wrangling text and are present in many programming language, command-line tools, and text editors. They are very useful for extracting information from text fields and for reformatting text for input to different software.

  • Nov 3, 2021 – Reproducible research with R, Git, LaTeX, etc. @Jessi Rick

  • Nov 10, 2021 – A bit more hierarchical modeling in STAN (why, yes, it is machine learning ).

    • in advance of our meeting, please watch this 11 minute video that illustrates the benefit of using hierarchical models for priors and the information sharing that results. https://youtu.be/dNZQrcAjgXQ.

    • The analyses in the video are in Hierarchical in https://github.com/MaggieLieu/STAN_tutorials.git. You can clone the repo with git clone https://github.com/MaggieLieu/STAN_tutorials.git The directory contains an Rmarkdown file and a result file that is rendered to html. In our meeting we will break into groups discuss the video, experiment with the code, and share experiences.

    • Here are some more tutorials that break down the theory of hierarchical models a bit more, if there’s other folks (like me!) who got a little lost in the weeds yesterday. https://www.youtube.com/watch?v=VssgU4Ey7ss , (and a less math-y version) https://www.youtube.com/watch?v=SMWleVKO9ZM .

  • Nov 17, 2021 – No group meeting. Please put requests for topics for the remaining semester meetings in the time slots below.

  • Nov 24, 2021 – No meeting, give thanks and take Thanksgiving Break.

  • Dec 1, 2021 – Drop-in, social meeting, to discuss ad hoc and other topics (below)

    • Running shiny apps, web-hosting shiny apps, and other interactive visualizations

  • Dec 8, 2021 – Hosting webpages at github.io (or bitbucket.io) from scratch. @Alex Buerkle will lead and will appreciate input from others.


Spring 2021

  • 10 February 2021 – organizational meeting

  • 17 February 2021 – Introduction to mlr3 – Damir Pulatov (UW Computer Science graduate student)

  • 24 February 2021 – profiling and comparison of code running on data.table versus data.frame.

  • Mar 3, 2021@Alex Buerkle will present a short primer on Bayesian estimation and inference. We will do a bit of hands-on with posterior probability distributions. Beyond conceptual and math foundations, we will talk about computational methods for parameter estimation (MCMC, HMC, variational inference).

Below is R code to accompany beta distribution of allele frequencies in a population. This uses the closed form solution for P(p|x,n) = P(x|p,n)*P(p), where the product of a binomial and a beta is a new beta distribution.

(160+1)/(160+1 + 200-160+1) # expectation with P(p)=beta(1,1) (160+0.1)/(160+0.1 + 200-160+0.1) # expectation with P(p)=beta(0.1,0.1) p<-seq(0, 1, 0.001) plot(p, dbeta(p, shape1=160+1, shape2=40+1), type="l") par(mfrow=c(2,1)) plot(p, dbeta(p, shape1=160+1, shape2=40+1), type="l", xlim=c(0.5, 1), col="red") abline(v=qbeta(c(0.025, 0.975), shape1=161, shape2=41), col="red") abline(v=qbeta(c(0.025, 0.975), shape1=16 + 1, shape2=4+1), col="blue") lines(p, dbeta(p, shape1=16+1, shape2=4+1), col="blue") par(mfrow=c(3,1)) plot(p, dbeta(p, 1, 1), type="l") # beta(1,1) plot(p, dbeta(p, 0.1, 0.1), type="l") # beta(0.1, 0.1) plot(p, dbeta(p, 160+1, 200-160+1), type="l")
  • Mar 10, 2021 – No meeting. Consider reading Chapters 1 & 2 of Statistical Rethinking (2nd edition) if the introduction to Bayesian inference last week was new to you, or if you want a refresher. Chapter 2 is particularly good. If you want code in various languages from the second edition, you can find it here (R, python, Julia, etc.).

  • Mar 17, 2021@Alex Buerkle will lead a discussion and some hands-on to help learn how to marginalize discrete parameters in hierarchical Bayesian models, in JAGS and STAN.  The example application pertains to modeling the distribution of a type of organism across sampling sites. The idea would apply to any type of detection problem, where a thing might exist at a point or not (a Bernoulli variable), but there are a bunch of ecologists who are interested in ‘occupancy models’. For example, this type of model could apply to monitoring for an invasive species, like Zebra mussels, or New Zealand mud snails, at monitoring sites. The data can be discrete, but discrete parameters that are inferred from the data cannot be used directly in a STAN model (because discrete distributions are not differentiable).

  • Mar 24, 2021 – Continuation of Bayesian modeling – Discussion of a paper: Ensuring identifiability in hierarchical mixed effects Bayesian models. Ogle and Barber 2020. Ecological Applications. 30(7):e02159. (pdf).

  • Mar 31, 2021 – Nominally spring break at UW. Initially I overlooked that Mar 31, 2021 is part of spring break, so I have bumped our scheduled discussion to April 7 and we will not plan to meet this week.

  • Apr 7, 2021 – Discussion of part of Chapter 5 (Model-Agnostic Methods) of the book Interpretable Machine Learning (most recently updated on 22 March 2021!). Please read the lead-in to the chapter. Additionally, please read sections 5.7-5.10 (or 5.7 and 5.9 only if pressed for time and skim the others).

  • Apr 14, 2021 – presentation by @John Calder on Bayesian mixture modeling. Until recently John was a postdoc at UW, now he works as a data scientist for MX (a financial services company).

  • Apr 21, 2021@Lars Kotthoff will present a brief intro on automated machine learning – bring your hyperparameters.

# tune two parameters of the rpart classification tree learner require(rpart) train.indices = sample(1:150, 150 * 2/3) test.indices = setdiff(1:150, train.indices) evalParams = function(...) { model = rpart(Species~., iris[train.indices, ], ...) preds = predict(model, newdata = iris[test.indices, -5], type = "class") return(list(pars = ..., acc = sum(preds == iris[test.indices, "Species"]) / length(preds))) } pars = expand.grid(minbucket = 1:20, minsplit = 1:20) res = lapply(1:nrow(pars), function(i) do.call(evalParams, as.list(pars[i,]))) best = which.max(sapply(res, function(x) x$acc)) res[[best]] # ...and now with mlr/MBO # adapted from https://mlrmbo.mlr-org.com/articles/supplementary/machine_learning_with_mlrmbo.html require(mlr) require(mlrMBO) # tune same parameters par.set = makeParamSet( makeIntegerParam("minbucket", 1, 20), makeIntegerParam("minsplit", 1, 20) ) ctrl = makeMBOControl() tune.ctrl = makeTuneControlMBO(mbo.control = ctrl, budget = 10) res = tuneParams(makeLearner("classif.rpart"), iris.task, cv3, par.set = par.set, control = tune.ctrl) plot(cummin(getOptPathY(res$opt.path)), type = "l", ylab = "mmce", xlab = "iteration")
  • Apr 28, 2021 – Work and help session

    • people will document, edit, call out unclear sections, or request documentation

      • how to use teton

      • how to do specific scientific computation tasks (on teton or elsewhere).

    • people will get or give assistance or a demonstration of how to do specific things

      • we will also use break out rooms to assist with specific tasks (please invite your colleagues to help and get help).

  • May 5, 2021 Demo day

    • we will do some short demos of different technologies

      • cloud computing with AWS – we can spin up some different disk images using AWS EC2. There are 400 different instances to choose from. Ideally several of us will get free sessions started on different instances and report back. The interest here is that many companies do their compute in the cloud rather than on shared academic systems. We are fortunate that UW supports our very good shared system within ARCC.

      • Regarding the question of easier access to cloud computing tools, you might be interested in the Discovery Environment at Cyverse, in addition to the more standard cloud computing tools that are available for free to academic researchers.

      • if there is interest:

        • Docker – demo a docker image of MISO, the LIMS software for the GTL.

        • wrap_slurm.pl – a program to launch many SLURM jobs on the cluster that need different inputs (a complement to SLURM arrays).

        • … other requests or suggestions …

  • Thanks everyone for participating this spring semester. Let’s call this semester complete and plan to return in the fall semester, very possibly in person in Aven Nelson 210. Feel free to use the data science Confluence space over the summer break to share and organize things. All the best for your research over the summer and for recharging any depleted energy reserves.


Ideas for spring 2021
  • Many additional ideas can be found on the https://microcollaborative.atlassian.net/wiki/spaces/DSC/pages/1232536341 and https://microcollaborative.atlassian.net/wiki/spaces/DSC/pages/49872904 pages.

  • Short research topic presentations with a key methodological or technical illustration from group members. Please indicate your interest in giving a presentation and leading a discussion below.

  • Reading and study groups

    • Who would be interested in discussing the 2nd edition of Statistical Rethinking?: @Alex Buerkle @Joanna Blaszczak @Andrew Siefert @Erin Bentley@Shannon E Albeke @Bridger Huhn

    • Other topics?

  • Host non-academic data scientists to visit our group and discuss careers, technical things, and other topics of mutual interest

  • Possible statistical modeling and machine learning topics

    • Genetic programming and symbolic regression in R: A friendly introduction to RGP, which discusses genetic programming using the RGP package (which is archived on CRAN and is no longer being developed, but is probably useful for learning)

  • Hands-on and conceptual learning about sparse models (including following paper by Runge et al.)

  • Read and discuss: Detecting and quantifying causal associations in large nonlinear time series datasets. Runge et al., Sci. Adv. 2019; 5 : eaau4996 27 November 2019

  • Continue reading a few sections from Interpretable Machine Learning

  • read some sections of Machine Learning: a Probabilistic Perspective by Kevin Patrick Murphy?  It is available for free as an ebook from UW library. Alternatively, he is completing two additional books, including Probabilistic Machine Learning: An Introduction.

  • Non-centered parameterizations

    • Simple, univariate models

    • Hierarchical models (including understanding Cholesky factorization)

    • Non-multivariate normal alternatives to non-centered hierarchical models

  • Wondering about talking with ARCC about methods for reducing IO bottlenecks. I run into this most often with large Raster datasets with multithreading

  • AWS - primer and practice usage. A lot of jobs want people to have experience with AWS. Maybe we could set up a UWYO account that lets people practice and see what is about.

  • Docker - At some point Jason did a show and tell on Docker (search for Docker on this website to find his pages), but it might be worth revisiting how to use containers, from a practical standpoint. What I mean by that is, how to load up and use containers that others will have built. Most of us, when starting a new job, probably would be using existing docker containers instead of making our own. I assume using these is pretty straightforward, but have never actually done it. Would be useful to do so.