尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

StudentLife数据集全解析:手机传感数据如何揭示心理健康与行为规律

StudentLife数据集全解析:手机传感数据如何揭示心理健康与行为规律 StudentLife数据集是我在找“行为、心理、学业”三类信息能同时对齐的公开数据时绕不开的一份资源。2014年达特茅斯学院的团队放出了这套数据48名本科生整整10周每人一台研究用Android手机把GPS、加速度计、通话、短信、屏幕开关、蓝牙环境全记了下来同时还用EMA方式在学生日常生活的随机时间点弹出问卷追问当下的情绪和压力最后再配上学期前后的临床级心理评估。10年前能有这样的采集密度放到现在依然很能打。这份数据集适合谁如果你在做人机交互、移动感知、心理健康计算、教育大数据甚至只是想找一份带真实噪声的传感器数据练手它都值得下下来看看。数据不是公开直链下载需要在官方页面提交申请我不建议绕过这一步因为协议规定了你能做什么、不能做什么。下面我按“它到底采集了什么、打开后能看到什么、能研究什么、会踩什么坑”的顺序把它过一遍。1. 一整套手机传感数据能回答哪些“人”的问题1.1 从问卷到被动感知为什么研究者盯上了手机传统的心理健康研究最常用的工具就是问卷。PHQ-9、PSS这些量表当然好用临床用了几十年信效度都经过反复验证。但它们的局限也很明显分数完全依赖人的回忆而回忆是有偏差的。人在状态差的时候更容易把过去两周想得阴暗状态好的时候又会淡化问题。所以问卷分数反映的往往不只是真实状态还叠加了一层“自我认知滤镜”。你问一个人最近睡得好不好他可能说“还行”但他的手机知道真相——深夜还在刷屏幕、上午没起床信号、GPS轨迹几乎没离开宿舍这跟他口头回答的“还行”可能差得很远。StudentLife的设计思路就是用被动感知替代主动回忆。手机上的传感器不依赖人主观报告它只是记录。GPS记录位置变化加速度计记录活动量通话短信记录社交连接屏幕状态记录作息规律。这些数据拼起来就是一个人的“数字化生活轨迹”。把这份生活轨迹和情绪量表、临床评估放在同一条时间线上研究者第一次能回答一个具体的问题当一个人的心理状态开始变差时他的行为模式有没有先行信号如果可以成立那手机就能成为心理健康早期预警的工具这也是后来“数字表型”这一研究方向的雏形。1.2 48名学生、10周、一台研究手机的采集方案2013年春季学期达特茅斯学院的团队在新罕布什尔州招募了一批大二本科生。每位参与者领到一台安装着采集App的Android研究手机在后续整整10周里这台手机就是他们的日常主力机。公开论文里参与者的数量在48到49人之间不同文档表述略有出入核心可用样本基本就是48人这个量级。采集周期覆盖了完整春季学期前几周是正常教学中间有期中考试然后是春假最后是期末考试周。这一步设计很关键——心理压力和学业负担是随着学期推进自然变化的你不需要人为制造干预只要忠实记录就能观察到行为在不同压力阶段的自然起伏。把研究手机当成主力机用听起来好像只是“把设备发下去”但实际执行时非常讲究。手机是学生每天随身携带的物品它跟钱包钥匙一样自然进入生活所以数据反映的是真实状态。代价是缺失和噪声不可避免有人会忘带手机有人会在夜晚开启免打扰还有人把GPS权限关了。这些不是实验事故而是真实行为的一部分处理数据时必须正视。现在回头看这个采集方案我仍然觉得它设计得聪明。它不是把学生叫到实验室测一次而是把观察窗口拉长到10周把每一次手机交互都变成了研究数据。对于想用这套数据的人来说理解这个背景非常重要因为很多后续的数据处理决策都源于你如何理解这些参与者的真实使用场景。2. 数据包的三层结构传感流、EMA自报、临床评估各干什么2.1 被动传感器流GPS、加速度计、通话记录与社交痕迹解压数据包第一眼看到的便是大量以传感器命名的CSV文件。按我能追溯到公开论文和数据文档的信息主要包含以下几类数据类型主要记录内容日常能推断出的行为加速度计三轴加速度、采样时间活动状态静止、走路、跑步GPS经纬度、精度、记录时刻位置轨迹、停留地点、生活半径通话记录通话方向、时长、时间社交联络频率短信记录收发方向、时间文字社交节奏屏幕状态屏幕亮/灭时间手机使用强度、起床就寝时间蓝牙扫描周围设备ID、信号强度人与人之间的物理距离WiFi记录访问点信息、信号常去场所、上课/图书馆出勤音频特征本地对话检测结果对话时长、社交活动量辅助数据电池状态、充电时间手机使用习惯、白天是否回宿舍每个传感器都只记录了某一侧面的行为但合到一起就能拼出一个人的日常节奏。比如早晨第一次屏幕亮起加上加速度计检测到移动可以推断起床时间晚上屏幕长时间熄灭可以推断入睡时间GPS轨迹从宿舍、教学楼、食堂、图书馆几个点循环出现可以判断一天的活动范围。不过要提醒的是通话记录和短信记录里涉及联系人的部分已经过脱敏处理你拿到的不是真实号码而是分类或ID。不要指望能从里面还原出具体的社交网络这不是数据集想让你做的事情。2.2 EMA生态瞬时评估情绪和压力怎么在当下被记录EMA这个词读起来有点学术翻译过来就是“生态瞬时评估”。我理解的本质是在一天中的多个随机或半随机时间点利用手机弹出一条问卷让学生当下立刻回答。它的最大好处是避开回忆偏差你不需要让被试回忆“这一周过得如何”只需要他回答“此刻的感觉怎么样”。StudentLife的EMA问卷覆盖的内容比较杂大致包含当前情绪状态、压力水平、精力充沛程度、孤独感、食欲、睡眠满意度等。题目多为选择题或滑条几秒钟就能答完干扰不大。数据文档会标记每次EMA弹出的时间戳和提交时间戳这一点很有用你能知道学生是“立刻提交”还是“拖延很久才答”这个交互行为本身就能反映一定状态。EMA的数据有一个很现实的问题响应率。不是每次推送都有人答公开论文里提过EMA响应率大概在六成上下。也就是说十次弹出大约有六次会收到有效回复整体质量已经不错。但放到个人层面你会发现有人频繁配合有人很少答题。后面做标签时这会成为一个不小的坑下面我会专门讲。2.3 临床评估与学期时间线前后测对照才是“金标准”如果说EMA是“此刻的状态快照”那临床评估就是这个学期“心理状态的前后对比基线”。StudentLife在学期开始和学期快结束时分别让学生填写了PHQ-9抑郁量表和感知压力量表PSS。PHQ-9是我非常喜欢的心理测量工具因为它短。9个条目每个0到3分总分最高27分分数越高抑郁症状越明显。临床上常拿10分当经验阈值用来区分中重度症状。PSS则测量“你最近觉得生活有多不可控、多难以承受”的感觉。两者放在学期前测和后测两个时间点你就能算变化值一个学期上下来哪些学生的压力显著上升哪些人反而更稳定。数据集还会附带学期时间线信息比如期中考试周、期末考试周、春假这些事件的时间点。千万不要小看这个文件。有了它你才能把传感器特征按“考试周”和“普通周”分组才能解释为什么某几周的行为数据会出现剧烈波动。离开学期日历去做时间序列分析很多波动的真实含义都会被误读。2.4 推断标签睡眠、对话、活动这些“加工型数据”怎么来的这部分我想单独拎出来说因为很多地方经常把“推断标签”和“原始传感器数据”混为一谈但这两者在可信度上完全不是一个级别。原始传感器数据是采集设备直接记录的比如GPS坐标、加速度值你拿到时它的意义是明确的。但数据包里还有一类“加工型标签”睡眠时长、对话次数、活跃状态、地点名称等。这些不是某个传感器直接测出来的而是团队用机器学习或启发式算法在原始数据上推断出来的。比如睡眠可能是综合屏幕状态、加速度计和充电周期推断对话可能是用音频特征、蓝牙扫描外加语音活动检测识别出“这段时间有人在说话”地点则是对GPS轨迹做聚类后标出的宿舍、图书馆等地。使用这些推断标签时心里要有个数它们是模型输出本身带有误差和噪声。比如睡眠算法可能把躺在床上一动不动但还没睡着的时间算成睡眠对话检测可能把教室里的公共噪音误判成对话。理解它们是基于什么信号推断出来的能帮你判断误差可能来自哪里。我的习惯是需要严谨结论时回到原始传感器做自己的特征工程只是做探索性分析时直接用推断标签完全可以。两种思路对应不同研究阶段别混着用。3. 解压后的数据长什么样目录、字段与第一个预处理3.1 文件组织按人分目录按传感器分文件数据包解压后首先看到的是按用户编号命名的目录例如user_01、user_02……这些编号已经匿名化无法对应真实学生。每个user目录下面几乎清一色是CSV文件文件名大多就是传感器或数据类型的名字。你还会找到一份数据说明文档通常是PDF或txt里面会列每个文件对应的字段含义。如果你发现某份说明缺失也不要意外这是公开数据集常见的问题说明文档的维护往往晚于数据采集本身。不必被文件数量吓到。真实的采集研究就是这样的碎片化状态每个学生的文件数量、文件大小可能差很多。有人几十KB有人几MB差异主要来自传感器使用频率不同、参与配合程度不同。这本身就是个体差异的一部分不是纯粹的“脏数据”。3.2 字段解读与第一个预处理从Unix时间戳到干净表格随便打开一个传感器CSV大多是类似这样的字段时间戳、传感器读数、可能还有置信度或状态码。时间戳常用Unix秒为单位也就是从1970年1月1日起累计的秒数。我在处理时第一步永远是先把时间戳转成可读时间并设定时区否则后续所有按小时、按天的聚合都无从谈起。import pandas as pd # 读取某个学生的屏幕状态数据 df pd.read_csv(user_01/screen.csv) # 假设时间列叫 timestamp df[time] pd.to_datetime(df[timestamp], units, utcTrue) # 采集地点是美国东部时间转成当地时区方便分析 df[time_local] df[time].dt.tz_convert(America/New_York) df[date] df[time_local].dt.date print(df.head())转换成日期列之后后续就可以按天或按小时做聚合。比如统计每天屏幕亮了多少次、平均点亮时间多长。这里有一个细节值得强调筛选日期时最好使用本地时区的日期不要直接用UTC日期否则美国当地晚上的行为会被划到“第二天”白天和夜晚的作息规律会整个错位。然后再做覆盖率统计。一份传感器数据每天可能只有几条也可能一天上百条。通过计算“每个学生每天的有效记录条数”你能快速看出数据质量的高低。这是我推荐在建模前先做的一步比直接进模型靠谱得多。3.3 缺失值现状真实数据该有的紧致感真实数据一定会让你面对缺失值。StudentLife里有几类情况特别典型。第一类是某一整天完全没有记录可能是手机没电或送去维修。第二类是特定传感器缺失但其他传感器正常比如学生白天关闭定位GPS文件就只剩零散的晚间数据。第三类是夜间缺失更明显手机被放在枕边或桌上也可能进入深度省电模式。处理缺失值不建议一刀切删除。你可以按天聚合后再决定当天数据不足N条就视为无效也可以把缺失作为一条特征例如“当天是否有定位记录”本身就能反映学生是否外出。缺失模式往往携带着行为语义删掉反而是浪费信息。如果画出所有学生、所有周的数据热力图会出现很多深浅不一的网格。这是真实传感器数据必须面对的样子你的任务是在这些网格之上找到足够稳定的信号。4. 能不能直接用先解决申请、许可和隐私边界4.1 获取数据的方式不是公开直下而是申请制StudentLife数据集不是像ImageNet或MNIST那样放在网页上让你一键下载。它采用的是申请制去数据集的官方页面提交一份表单填写姓名、机构、邮箱、研究用途然后勾选同意数据使用条款审核通过后就能拿到下载权限。之所以做成申请制核心原因是数据里包含GPS轨迹、通话行为、短信元数据这类高敏感信息。即便已经脱敏也难以完全排除被重新识别的风险。团队用一道申请流程来筛选接收者本质上是为了把数据限定在“有明确研究目的”的使用范围内。申请本身不麻烦也不收费至少我接触到的公开资料里没有收费流程。关键是研究用途一定要写清楚。写“学术研究”这种太泛的表述不如写具体一点例如“利用移动感知特征预测大学生心理压力变化”。这样既能让审核方快速理解你的需求也能保证你自己的研究计划是清晰的。4.2 使用边界GPS与行为日志的脱敏责任拿到数据之后你会是这份数据的新一任看守者。协议里通常会约定第一不得尝试识别数据中参与者的真实身份第二不得将原始数据尤其是GPS、通话、短信文件再次公开或转交他人第三在公开发表的论文中必须正确引用原始数据集的论文。除此之外我在实际使用中有一些超出最低要求的建议数据文件最好存放在受控环境中不要直接上传到公开的GitHub仓库和合作者共享时只共享预处理后的特征表格避免原始行为日志外流如果要在论文中展示GPS热力图或轨迹图建议对坐标进行二次模糊化因为再脱敏的轨迹也可能被房屋底图匹配识别出特定建筑。这些不是过度谨慎。行为数据一旦能和现实位置、社交关系关联隐私风险就远超一般统计表。做这个领域守住隐私边界不只是合规要求更是研究者基本的职业操守。5. 拿这份数据能做什么三个典型研究方向的实操拆解5.1 心理风险预测用行为特征训练分类器的基本流程心理风险预测是这份数据最典型的任务。给你一个学期的行为记录让你预测期末时这位学生的PHQ-9分数是否跨过高风险阈值。整个流程拆解下来大概是这样的。先确定标签。用学期末的PHQ-9分数以10分作为高风险阈值把学生分成两组。如果有学期前测最好把前测分数也当作基线特征放进去因为单纯用后测分组时“本来状态就不好”的个体会被归进高风险组这会跟“学期内变化”造成的风险混在一起。然后是特征工程。以天或周为单位从传感器数据里整合行为特征。常用几类包括睡眠特征平均睡眠时长、入睡时间方差、起床时间离散度活动特征每日步数、活跃时长、体力活动频率社交特征通话次数、短信次数、对话时长位置特征生活半径、访问地点数、GPS坐标方差把这些按时间窗聚合成平均值、标准差、趋势斜率就得到了模型输入。模型上别迷信大模型。48个人的小样本深度学习很容易过拟合。我实践下来随机森林和带正则的逻辑回归已经能给出稳定结果。交叉验证建议用留一学生法每次留出一个学生的所有数据做测试其余学生做训练。这样能测试模型对陌生个体的泛化能力比随机K折更贴近实际使用场景。还有一个最容易犯的错误叫信息泄漏。如果传感器特征和PHQ-9标签都来自学期末同一时期模型可能会学到“期末时GPS方差低与高风险相关”这类相关性但它真正学到的可能是“期末少出门的学生容易分数高”。这个结果本身有意义但如果你想做的是“早期预警”就必须限定只用前半学期的传感器特征去预测期末标签。5.2 学业表现关联GPA和行为数据之间的信号StudentLife论文里有一个比较出名的结论学生的行为特征与学期GPA存在可解释的关联。比如睡眠规律性更高、白天活跃时段更稳定、每周出现在图书馆或教室的停留次数更多的学生GPA往往更高。这些关联并不难复现。实操路径可以这样做把每个学生的GPA作为目标变量提取该学生整个学期的行为聚合特征包括每日睡眠时长标准差、活动量均值、每周课堂出席率用GPS在指定教学楼停留时长近似、学习时段占比然后跑线性回归或随机森林回归。样本量有限时重点关注特征重要性的排序而不是预测分数的绝对精度。如果你只是想做一个简单的可解释分析也可以不看模型直接画图把学生按GPA分成高、中、低三组看三组在10周内的睡眠均值和波动差异往往一眼就能看出趋势。这种观察性的结果适合写进研究报告或当作开题探索比直接上模型更有说服力。5.3 时间线挖掘期中考试周前后的行为突然变化我觉得这份数据最有意思的用法其实是把个体时间线拉平寻找行为随学期节奏变化的拐点。用数据说明文档里的学期事件时间线把每周标记为“普通周”“期中周”“春假”“期末周”。然后按周聚合所有学生的睡眠时长、压力自报分数、每日活动步数、通话次数画出群体均值随时间的折线。你会发现期中周来临前一两周睡眠开始减少考试周压力自报分数显著抬升春假期间GPS生活半径突然变大期末周活动量明显下降。这种分析不需要高端模型做一个按周聚合的透视表就能完成。但对理解“大学环境如何塑造学生状态”非常直观。很多研究者写论文时只用到了“预测”这一个角度反而忽略了时间线可视化带来的解释价值。往深走一步你还可以对个体序列做分段聚类找出行为模式相似的小群体。比如一类学生是“考前突击型”平时作息规律考试周睡眠骤减另一类是“持续高压型”整个学期睡眠都不稳定。发现这种类型差异后再回头结合EMA和PHQ-9看看哪一类心理风险更高这类交叉分析在论文里很容易成为亮点。6. 跑了两个月数据后我最想提醒你的几个坑6.1 传感器缺失的“非随机性”数据不是随机缺的上文谈到缺失值这里我要更严肃地展开。学生不是一台稳定运行的采集设备他们有自己的习惯。有人夜间开飞行模式有人上课时开勿扰有人觉得定位耗电就直接关掉。这些习惯性操作导致的缺失完全不是随机发生的它本身就是一种行为信号。最典型的例子是如果一位学生经常在白天关闭GPS那他的GPS缺失模式本身就说明他白天有“不想被记录”或“省电”的行为习惯。如果直接只保留有GPS记录的时间段做分析相当于只分析他愿意开定位的日子样本和结论都会出现选择偏差。我的建议是在按天聚合特征时把“当天有记录的时长占比”也作为一个特征保留。比如GPS覆盖率、屏幕数据覆盖率。这能让模型学习到缺失模式本身携带的信息而不是强行用插值抹掉行为痕迹。6.2 样本量太小48个人的数据怎么敢上深度学习这是很多新手最容易翻车的地方。看到48个人的10周传感数据有人会想着用LSTM、Transformer去挖时间序列特征。但以我试过的经验深度网络在这么小的独立样本上基本会很快在训练集上过拟合在测试集上一塌糊涂。你确实有很长的时序长度但独立样本只有48个模型的泛化能力撑不起来。更现实的做法是把时间序列统计量特征化走传统机器学习路线。随机森林、梯度提升树、带正则的逻辑回归、SVM配合留一学生交叉验证得到的结果稳定且可解释。想展示时序建模能力的话也可以试一些简单的自回归模型但务必把测试流程做扎实。另外48个样本意味着分组后每组可能只有20多人统计功效有限。无论是相关分析还是两组间差异检验得到显著结果都不容易。对于这个情况我在写论文时通常会突出效应量和置信区间而不是只依赖p值。哪怕只是“趋势性显著”只要效应量有实际意义在领域内也是可以拿出来讨论的发现。6.3 EMA响应薄弱主观标签缺一半怎么办EMA是整个数据集中连接“客观行为”和“主观感受”的桥梁也是我觉得处理难度最大的部分。EMA不是每天每个时段都有响应。约六成的总响应率意味着某位学生某一天可能只有一条EMA记录也可能连续两三天完全没有。更要命的是缺失很可能不是随机的——压力大、情绪低谷的学生可能更不情愿打开问卷回答心情怎么样。这种情况让“缺失”本身变成了信号直接删除缺失样本会丢掉最难受的那部分数据。处理EMA数据时我的做法是先按周把EMA答案聚合而不是按天。比如计算每周平均压力分、每周情绪总得分。周窗口能消掉日级稀疏性也让传感器特征和EMA标签的时间对齐更稳定。如果某周回答数少于2条那这一周就标记为无标签不硬凑。另一种思路是把EMA分数当成连续型标签做回归而不是先二值化再分类。二值化需要你自己选阈值容易把中间地带的学生强行分到某一边。回归任务在小样本上的稳定性略差但对数据分布的表征更细腻能保留个体差异。从拿到数据到跑出靠谱结果我在这份数据上断断续续花了两个多月感触比较深的一点是StudentLife真正值钱的地方不是那几个能直接喂进模型的CSV文件而是它把“人的主观状态”和“机器记录的行为”放在了同一个维度下。你在处理它的时候其实是在学习如何跟不完美的真实数据打交道——缺记录、错标签、噪声、个体差异哪一样都不是清洗脚本能一键解决的。如果你正准备申请这套数据我的建议是先认真读数据说明文档尤其是字段含义和时间戳格式再花一周时间做探索性可视化把每个学生的行为曲线画出来看看。慢就是快模型可以后面再调但你对数据本身的理解决定了这项研究最终能走多远。
返回列表