Project 1

Welcome to our first data mining project, an engaging exercise in exploratory data analysis (EDA) and data preprocessing, two essential steps in the data science pipeline. For this project, we will delve into a dataset from the TidyTuesday initiative, a weekly project that supplies a new dataset to the R for Data Science community. You can choose any dataset you want from the datasets released in 2023 as part of this project: https://github.com/rfordatascience/tidytuesday/tree/master/data/2023#readme. Your aim is to perform a thorough EDA, prepare the data for analysis, and set a strong foundation for further machine learning tasks.

Dataset

Choosing a dataset is something you should do carefully but also relatively quickly.

The dataset you choose should have some numerical and some categorical variables or you should be able to recode some of the existing variables so that you can ultimately have both numerical and categorical variables to work with.

It is also very important that the dataset you choose allows for two distinct questions to be asked and answered using a not-completely-overlapping set of variables, i.e., Question 1 requires the use of variables x, y, and z and Question 2 requires the use of variables a, b, c, and d or x, a, and b. Some shared variables are ok, but the set of variables should not be completely overlapping, i.e., Question 2 can’t also require the use of variables x, y, and z.

Questions

Each of the two questions you come up with should involve more than two variables two answer. You should phrase them in a way that the is within the scope of inference of your data. For example, if you have an observational dataset, you shouldn’t phrase your question in a causal way.

Workflow

  • Week 1 of project (week of January 30): Choose a dataset and write up your proposal in proposal.qmd.

  • Week 2 of project (week of February 6): Provide peer review to two other teams in the form of issues in their GitHub repos, address the issues left on your team’s project repo by closing them with explicit commits. Feel free to get started on your presentation as well.

  • Week 3 of project (week of February 13): Review feedback from me on your proposal and close any remaining issues. Work on your presentation in presentation.qmd and write-up in index.qmd.

  • Weeks 4-5 of project (week of February 19, 26): Finalize your write-up, presentation, and your project website. Present in class on the Wednesday after Spring Break (March 13th).

Due dates

  • Proposals for peer review: due on Wednesday, February 7 at noon.
  • Revised proposals for teaching team review: due Monday, February 12 at 5pm.
  • Presentation: due Wednesday, March 13 at the beginning of class.
  • Write-up: due Wednesday, March 13 at 11:59pm.

Deliverables

Proposal

Your proposal should include:

  • A brief description of your dataset including its provenance, dimensions, etc. (Make sure to load the data and use inline code for some of this information.)

  • The reason why you chose this dataset.

  • The two questions you want to answer.

  • A plan for answering each of the questions including the variables involved, variables to be created (if any), external data to be merged in (if any).

  • A weekly “plan of attack” outlining your steps to complete your project and including the team member(s) assigned to that task.

    • This should be in the following form:

      Task Name Status Assignee Due Priority Summary
      Low
      Moderate
      High
    • Note that this is a living document and should be updated at minimum once a week.

Peer review

Reviewer tasks

Each team will review the proposals of two other teams. The peer review will be completed during class on Wednesday, February 7. On that day teams will have access to the project repos of the two teams whose work they’re reviewing. Reviews should start by cloning the team’s repo, re-rendering it locally to make sure you can reproduce their work, and then adding an issue to their repo with your peer review feedback.

The reviewer / reviewee assignments are as follows:

reviewer reviewee_1 reviewee_2
Season's Screenings Tech Titans Weather Gurus
Tech Titans Weather Gurus Stats N Facts
Weather Gurus Stats N Facts TAAAG team
Stats N Facts TAAAG team Algo Aces
TAAAG team Algo Aces Season's Screenings
Algo Aces Season's Screenings Tech Titans

Teams will develop the review together, with discussion among all team members, but only one team member will submit it as an issue on the project repo. To do so, go to the Issues tab, click on the green New issue button on the top right, and then click on the green Get started button for the issue template titled Peer review.

This will start a new issue with a peer review form that you can fill out. Make sure to update the introductory paragraph with your team name and the names of the team members participating in the review. Then, answer each of the questions in the spaces provided underneath them. You’re expected to be thorough in your review, but this doesn’t necessarily require lengthy responses.

Remember, your goal is to help the team whose project proposal you’re reviewing. The team will not lose points because of issues you point out, as long as they address them before I review their proposals. You should be critical, but respectful in your review. Also remember that you will be evaluated on the quality of your review. So that’s an additional incentive to do a good job.

Reviewee tasks

Once you receive feedback from your peers, you should address them. You should do this by directly updating your proposal or making any other updates to your repo as needed. You can do these updates all in one commit or you can spread it across multiple commits. Regardless, in the last commit that addresses the peer review comments, you should use a keyword in your commit message that will close the peer review issues. These words are close, closes, closed, fix, fixes, fixed, resolve, resolves, and resolved and they need to be followed by the issue number (which you can find next to the issue title). So, your commit message can say something like “Finished updates based on peer review, fixes #1”.

Write-up

Your write-up should consist of three parts:

  1. Introduction (1-2 paragraphs): Brief introduction to the dataset. You may repeat some of the information about the dataset provided in the introduction to the dataset on the TidyTuesday repository, paraphrasing on your own terms. Imagine that your project is a standalone document and the grader has no prior knowledge of the dataset.

  2. Question 1: The title should relate to the question you’re answering.

    • Introduction (1-2 paragraphs): Introduction to the question and what parts of the dataset are necessary to answer the question. Also discuss why you’re interested in this question.

    • Approach (1-2 paragraphs): Describe what types of methods you are going to make to address your question. For each method, provide a clear explanation as to why this method (e.g. imputation, transformation, correlation analysis, etc.) is best for providing the information you are asking about. The two methods should be of different types, and at least one of the two plots needs to use either color mapping or facets.

    • Analysis (2-3 code blocks, 2 figures / tables, text/code comments as needed): In this section, provide the code that generates your preprocessed data. Use plots with scale functions to provide nice axis labels and guides, or tables with clear purpose. You are welcome to use theme functions to customize the appearance of your plot or table, but you are not required to do so.

    • Discussion (1-3 paragraphs): In the Discussion section, interpret the results of your preprocessing. Identify any trends revealed (or not revealed) by the correlations or summary statistics. Speculate about why the data looks the way it does.

  3. Question 2: Same structure outlined for Question 1, but for your new question. And the title should relate to the question you’re answering.

We encourage you to be concise. A paragraph should typically not be longer than 5 sentences.

You are not required to perform any statistical tests in this project, but you may do so if you find it helpful to answer your question.

Presentation

Your presentation should generally follow the same structure as your write-up. Each team will have 5 minutes for their presentation, and each team member must speak (roughly equally) during this time. Your presentation will be created using Quarto, which allows you to write slides using the same Quarto structure you’re used to. There is a sample Quarto slide template in your repo you can edit to your heart’s desire to create your presentation. Roughly I recommend 1 slide for introduction, 2 slides for Question 1, ans 2 slides for Question 2. You can imagine spending roughly one minute on each slide. You should feel free to have more (or fewer) slides. Your evaluation will be based on your content, professionalism (including sticking to time), and your performance during the Q&A (question and answer). We don’t care how many slides you use to do this.

Website

Each of your projects will have a website that looks like https://info523-s24.github.io/project-01. You are not expected to change the styling of the website, but if you want to, you’ll need to edit the _quarto.yml file in your repo. Feel free to Google your way around it or ask on the discussion forum / office hours!

Repo organization

The following folders and files in your project repository:

  • /data/*: Your dataset

    • /data/*.csv: Your dataset in CSV format

    • /data/README.md: Metadata about your dataset including information on provenance, codebook, etc.1

  • index.qmd: Your project write-up

  • proposal.qmd: Your project proposal

  • presentation.qmd: Your project presentation

  • _quarto.yml: Setup file for project website

Grading

Total 100 pts
Proposal2 10 pts
Presentation3

30 pts

(25 pts from teaching team, 5 pts from audience)

Write-up4 30 pts
Reproducibility, style, and organization5 10 pts
Within team peer evaluation6 15 pts
Between team peer evaluation7 5 pts

Some of the components are further detailed below.

Proposal (10 points)

  • Data - Dataset is in the data folder, along with a codebook in the README of that folder. (3 points)
  • Write-up - All required components included. (5 points)
  • Workflow - Peer review issues closed via commits. (1 point)
  • Teamwork - All team members must contribute to the repo via commits. (1 point)

Presentation (30 points)

Teaching team (25 points)

  • Time management: Did the team divide the time well amongst themselves or got cut off going over time? (2 points)

  • Professionalism: How well did the team present? Does the presentation appear to be well practiced? Did everyone get a chance to say something meaningful about the project? (2 points)

  • Teamwork: Did the team present a unified story, or did it seem like independent pieces of work patched together? (3 points)

  • Slides: Are the slides well organized, readable, not full of text, featuring figures with legible labels, legends, etc.? (3 points)

  • Creativity Critical Thought: Is the project carefully thought out? Does it appear that time and effort went into the planning and implementation of the project? (3 points)

  • Content: Both Question 1 and Question 2 will each be scored by the following criteria. Point values apply per part.

    • Is the question well articulated in the presentation? (1 point)
    • Can the question be answered with the data? (1 point)
    • Do(es) the plot / table help answer the question? (1 point)
    • Do(es) the plot / table help follow best practices? (1 point)
    • Is/are the conclusion(s) made based on the visualization(s) / table(s) justifiable? (1 point)
    • Are the limitations carefully considered and articulated? (1 point)

Peers (5 points)

  • Content: Is the research question well designed and is the data being used relevant to the research question? (1 point)
  • Content: Did the team use appropriate visualizations and did they interpret them accurately? (1 point)
  • Creativity and Critical Thought: Is the project carefully thought out? Are the limitations carefully considered? Does it appear that time and effort went into the planning and implementation of the project? (1 point)
  • Slides: Are the slides well organized, readable, not full of text, featuring figures with legible labels, legends, etc.? (1 point)
  • Professionalism: How well did the team present? Does the presentation appear to be well practiced? Are they reading off of a script? Did everyone get a chance to say something meaningful about the project? (1 point)

Write-up (30 points)

  • Introduction: The introduction provides a clear explanation of the question and the dataset used to answer the question, including a description of all relevant variables in the dataset. (2 points)

Both Question 1 and Question 2 will each be scored by the following criteria. Point values apply per part.

  • Justification of approach: The chosen analysis approach and visualizations are clearly explained and justified. (3 points)
  • Code: Code is correct, easy to read, properly formatted, and properly documented. (3 points)
  • Visualization: The visualizations are appropriate, easy to read, and properly labeled. (4 points)
  • Discussion: Discussion of results is clear and correct, and it has some depth without begin excessively long. (4 points)

Reproducibility, style, and organization (10 points)

  • All required files are provided. Quarto files render without issues and reproduce the necessary outputs. (3 points)
  • Data is in the data folder, with a codebook in the README, and is loaded from this folder in presentation and writeup. (3 points)
  • Documents are well structured and easy to follow. No extraneous materials. (2 points)
  • All issues are closed, mostly with specific commits addressing them. (2 points)

Guidelines

Please use the project repository that has been created for your team to complete your project. This means putting all of the content in the Quarto files provided, rendering them to obtain the output, and committing and pushing all files to your repository by the indicated deadlines. Your Quarto files (.qmd) and the resulting html files (.html) will be graded jointly, so they must be consistent (as in, don’t change the Quarto file without also updating the rendered document!).

All results presented must have corresponding code. If you do calculations by hand instead of using Python and then report the results from the calculations, you will not receive credit for those calculations. Any answers/results given without the corresponding Python code that generated the result will not be considered. For example, if you’re reporting the number of observations in your dataset, don’t just write the number manually, use inline Python code to calculate the number. All code reported in your final project document should work properly. Please do not include any extraneous code or code which produces error messages. Code which produces certain warnings and messages is acceptable, as long as you understand what the warnings mean. In such cases you can add warning: false and message: false in the relevant Python chunks. Warnings that signal lifecycle changes (e.g., a function is deprecated and there’s a newer/better function out there) should generally be addressed by updating your code, not just by hiding the warning.

Tips

  • You’re working in the same repo as your teammates now, so merge conflicts will happen, issues will arise, and that’s fine! Commit and push often, and ask questions when stuck.

  • Review the marking guidelines below and ask questions if any of the expectations are unclear.

  • Make sure each team member is contributing, both in terms of quality and quantity of contribution (we will be reviewing commits from different team members).

  • Set aside time to work together and apart (physically).

  • Code:

    • In your write-up and your presentation your code should be hidden (echo: false) so that your slides are neat and easy to read and your write-up is about your narrative and results only. However your document should include all your code such that if I re-render your Quarto file I should be able to obtain the results you presented. Exception: If you want to highlight something specific about a piece of code, you’re welcomed to show that portion.

    • Even though your code is hidden, it should still confirm to good coding practice, style, etc. You will be evaluated on code quality as well, which we will check by explicitly reviewing your Quarto documents (not just the rendered output).

  • Teamwork: You are to complete the assignment as a team. All team members are expected to contribute equally to the completion of this assignment and team evaluations will be given at its completion - anyone judged to not have sufficiently contributed to the final product will have their grade penalized. While different team members may have different backgrounds and abilities, it is the responsibility of every team member to understand how and why all code and approaches in the assignment work.

  • When you’re done, review the documents on GitHub to make sure you’re happy with the final state of your work. Then go get some rest!

Footnotes

  1. It is ok for you to repeat some information from the TidyTuesday repository but, but make sure appropriately attribute it here.↩︎

  2. Your proposal score will also take into consideration how much you’ve improved your proposal based on peer feedback.↩︎

  3. A more detailed grading rubric for this component to be added.↩︎

  4. A more detailed grading rubric for this component to be added.↩︎

  5. Style and format does count for this assignment, so please take the time to make sure everything looks good and your data and code are properly formatted.↩︎

  6. This relates to your contribution to the teamwork and how your team members evaluate this contribution. Scores for each teammate will be different for this component of the project grade.↩︎

  7. This relates to the quality and quantity of the peer review you provide for other teams.↩︎