课程项目 · 数据分析(R Shiny) · 2026.09Coursework · Data Analysis (R Shiny), solo · Sep 2026

训练状态看板“Ready to Train?”“Ready to Train?” Dashboard

R Shiny · 公开数据 PMDataR Shiny · public PMData dataset

  • 项目背景:课程作业,为运动爱好者和教练设计看板,展示每天的状态自评、睡眠、训练和酸痛,找出与次日状态相关的习惯。
  • 工作内容:用 16 人 5 个月公开数据做看板,逐一检验 16 个习惯并校正,仅“比平时晚睡 1 小时以上”与次日状态明确相关。
  • 项目结果:作业 92/100,全班 291 人中最高;状态评分和人体酸痛图后来复用进 AIO 的晨间自评。
  • Coursework: a dashboard for athletes and coaches showing each day's self-rated readiness (out of 10), sleep, training and soreness, and which everyday habits go with how ready people feel the next morning.
  • Analysed public data on 16 people over 5 months, testing 16 habits one by one and correcting for chance links: only going to bed 1 h+ later than usual had a clear link (next-morning readiness about 0.5 points lower).
  • Scored 92/100, the top mark of 291 (class mean 71.8). Its readiness rating and soreness body map were later reused in AIO's morning check-in, read with heart rate and sleep to judge recovery after training.

这是独立完成的课程项目。做完后,我把状态评分和人体酸痛图的设计复用到This is an independent coursework project. After completing it, I reused its readiness rating and soreness body map in AIO 的晨间自评AIO’s morning check-in:记录自己的感受后,可以结合睡眠、心率等恢复背景查看。: after logging how you feel, you can view it alongside recovery context such as sleep and heart rate. 看这段演进 →Explore that progression →

作业要求The brief
自定用户与用途,为真实数据设计交互Pick an audience and purpose, and design interaction for a real dataset
数据Data
PMData:16 人、5 个月(Thambawita 等,2020,CC BY 4.0)PMData: 16 people, 5 months (Thambawita et al., 2020, CC BY 4.0)
页面Pages
3 页:今天、日常习惯、习惯对比;卡片可以点开看明细3 pages: Today, Everyday habits, Compare habits; cards open detail views
无障碍Accessibility
通过 WCAG 2.2 AA 自动检查(axe)Passed automated WCAG 2.2 AA checks (axe)
成绩Mark
92/100,全班 291 人中最高(班均 71.8)92/100, the top mark of 291 (class mean 71.8)
项目之后Beyond the coursework

从数据看板,到 AIO 的恢复场景From a data dashboard to recovery in AIO

项目本身仍是独立的课程项目。The project itself remains independent coursework.

  • 课程探索 · 回看一天Coursework · looking back at a day用公开 PMData 把状态自评、睡眠、训练与酸痛放在一起,让人可以比较某一天与平常、查看习惯与次日状态的关联。Bring readiness, sleep, training and soreness together using public PMData, so people can compare a day with their usual patterns and explore associations with next-day readiness.
  • 已复用 · 晨间自评Reused · the morning check-in把看板中的状态评分和人体酸痛图转成 AIO 的晨间输入。记录自己的感受后,再结合睡眠、心率等恢复背景查看。Turn the dashboard’s readiness rating and soreness body map into morning inputs in AIO, viewing personal experience alongside sleep, heart-rate and other recovery context.
  • 升级方向 · 连续跟进Next direction · following through从“这一天是什么状态”延伸到“上次训练后有什么变化、今天的安排要不要调整、之后怎样回看”。靠本人的连续记录把这几步串起来。这一步还是设计方向。Extend “What was this day like?” to “What changed after the last session, should today’s plan change, and what should I review later?” Personal records would tie these steps together. This step is still a design direction.

迁移的是记录感受、组织证据和解释状态的方法。PMData 中的群体关联不能直接变成个人健康判断的阈值;AIO 需要结合本人的记录、基线与使用情境。What transfers is a way to record experience, organize evidence and explain readiness. Group associations in PMData cannot directly become thresholds for an individual’s health; AIO needs personal records, baselines and context.

查看 AIO 的训练后恢复场景 →See the recovery use case in AIO →

网页版Web version

打开浏览器就能用的网页版A web version that runs in the browser

三页都移植到了网页版;统计量用原版 R 代码导出,逐个参与者、逐天对过 R 的原值。The web version runs in the browser with all three pages ported; its statistics are exported with the original R code and checked against R for every participant and day.

网页版「今天」页截图
网页版的「今天」页(2026-10-14 截图):选参与者和日期,左边是全体参与者的关键发现,右边是这一天的状态和睡眠。The web version's Today page (screenshot, 14 Oct 2026): pick a participant and a day; the key finding for all participants sits on the left, and that day's readiness and sleep on the right.

打开在线演示Open the live demo

演示Demo

真实应用的操作录屏A screen recording of the real app

Shiny 应用需要 R 服务器,这里放一段 65 秒的录屏:在本机运行提交版,真实操作录下来。画面里的光标和参与者下拉菜单是录屏时加的示意,其余都是应用真实的反应。可以点下面的章节直接跳转。Shiny apps need an R server, so this is a 65-second recording of the submitted version running locally and used for real. The cursor and the participant drop-down are overlays added for the recording; everything else is the app's real behaviour. Jump to a chapter below.

关键判断Key decisions

我做的四个取舍Four trade-offs I made

  • 每张卡片标明时间范围Every card states its time window

    同一个日期里混着昨晚的睡眠、昨天的训练和今早的自评,不写清楚就会被误读,所以每张卡片都标明它说的是哪一段时间。One date mixes last night's sleep, yesterday's training and this morning's check-in; without labels it gets misread, so each card says which window it covers.

  • 证据不足就直说Say so when evidence is weak

    16 个日常习惯里,只有“比平时晚睡 1 小时以上”和第二天的状态有清楚的关联;预测模型没跑赢简单基线,页面也直接写出来。Of 16 everyday habits, only going to bed an hour or more later than usual has a clear link with the next morning; the forecast model didn't beat a simple baseline, and the page says so.

  • 一起做的检验一起校正Correct for testing many things at once

    16 个习惯加 2 个对照用的状态,共 18 个检验,一起做了多重比较校正,避免把偶然当发现。The 18 tests (16 habits plus 2 reference states) were corrected together for multiple comparisons, so chance doesn't pass as a finding.

  • 不写成训练建议Not training advice

    这是回看和探索的工具,页面写明不是训练建议。It's a tool for looking back and exploring, and the page states that it is not training advice.

页面截图Screenshots

提交版设计说明里的配图Figures from the submitted design summary