郦书遥的书桌上多了一个深绿色的铁盒,和廖敬办公室的那盒一模一样。她打开盒盖,里面整齐地排列着八块饼干,还有一张纸条,上面写着——
猫又奉金。
是廖敬的字迹。
郦书遥笑出了声,那天她在他办公室的饼干盒里留的纸条写的是“小猫吃了你的零食”。
猫又,日本传说里的猫妖,是一只修炼成精的老猫。
猫又奉金,给猫妖的进贡。
郦书遥把那张纸条小心地夹进了笔记本里,拿起一块焦糖味的饼干咬了一口,心情好极了。
吃完两块饼干之后,她打开电脑,正式开始做实验方法课的power analysis project。截止日期还有两周,不算太赶,但也不远了。
此前已经查过R语言power simulation的教程,从基础的t检验power到复杂的混合效应模型都有,基本框架已经搭起,但是参数设定始终是一个大问题。
好心情很快当然无存,郦书遥变得头疼不已,蒙特卡洛模拟的核心逻辑是,先假设一组参数,包括effect size、样本量、方差结构等等,然后让电脑生成几千次模拟数据,看在这些参数下,实验有多大概率能检测到显著效果。
Effect size要从已有文献里估计,她看了几十篇论文,报告值从0.15到0.45不等,差异很大,她完全无法判断应该选什么。
更令人头疼的是随机效应的方差结构,混合效应模型的随机效应包括随机截距和随机斜率,它们的方差值直接决定了模拟的结果,可是大多数论文只报告了fixed effects的系数,随机效应的方差根本没给出报告值。
只有廖敬的那篇论文,报告了完整的模型结构,包括随机截距方差、随机斜率方差和残差方差,参数写得比较清楚,她把那几个数字抄到了自己的文档里。
可是当她试着把这些参数代入自己的simulation代码时,又发现了一个问题,两个project的方差结构不完全相同,似乎不能直接照搬……
——怎么办啊!根本不会调整!
郦书遥做了午饭和晚饭,她煮饭的频率变高了,以前两个人大致轮着来,或者谁有空谁做,但这几天好像渐渐变成了她主动在做。
晚饭吃到一半,廖敬放下筷子,揉了揉眉心说:“今天跟Francis交涉了一下,关于他上周提交的项目报告。”
“我主导的那组实验,在报告里被写成了,the lab’s preliminary findings。没有我的名字,也没有任何标注说明是谁设计的,谁分析的,整段措辞指向,这组数据是实验室集体劳动的产物。”
郦书遥的筷子也停在半空中,她知道那组实验从头到尾都是廖敬做的,从研究问题的提出,到实验材料的编写,到被试的招募和数据采集,到统计分析和结果解读。他在做那个实验的那段时间,几乎每天都工作到很晚。
“你…跟他直说了?”
“对,我先给他发了一封正式的邮件,附上了完整的项目文档,包括我的实验设计文件、IRB申请记录、数据采集日志、分析代码,我要求他在报告里加上我的署名,至少标注为lead researcher。”
“他怎么说?”
“他先说,this is a lab level report, not a publication, individual contributions will be acknowledged at the appropriate stage。”
“然后他又说,Felix, as you know, your visa status is tied to your employment here. I’m sure we both want to see your position continue smoothly.”
卑鄙!他用签证威胁廖敬。
近期的签证政策不乐观,H1B签证持有者一旦失去雇主的sponsorship,必须在60天内找到新的雇主并完成签证转移,否则就必须离开美国。
“还有一件事。”廖敬的语气没有任何起伏,“我今天得知Francis在推进一个新的project proposal,联合署名是他和Marcus。研究方向跟我们lab现在的主线有重叠,可是从来没有在任何一次组会上讨论过,我之前完全不知道这个东西的存在。”
Marcus曾经在聚餐上跟廖敬一起吐槽,可现在他和Francis在推进一个新项目,并且把廖敬排除在外。
在利益面前,没有永久的盟友。
“那…你打算怎么办?”郦书遥试探性地问,手覆上廖敬的手背。
她终于知道今天晚上的气氛为何怪异,因为这些都是实实在在的困扰,可廖敬从始至终,都冷淡得像个死人……极度的压抑自我,造就了这种淡淡的死意。
“先按兵不动。”廖敬重新拿起了筷子,“我一直都有把自己手上的数据和文档全部整理好,做好备份,所以不管接下来发生什么,我都能保证自己手里有一定的证据。”
* * *
吃完饭,廖敬又打开了电脑,开始改一个学生的毕业论文初稿。郦书遥收拾完碗筷之后,犹豫了一会儿,走到他旁边坐下。
“廖敬,我想问你一个东西。”
“嗯?”他的眼睛还盯着屏幕,手指在键盘上噼里啪啦地敲着,“真无语了…这学生大概根本没有好好听过课,我给他讲过好几遍的东西,还在出错。”
他一边说着,一边把文档的几处内容标成黄色和红色。
“啊……”郦书遥见一向有耐心又好脾气的廖敬,今天肉眼可见的有些暴躁,到了嘴边的话又咽回去了。
“你刚才要问我什么?”
“啊…没,没什么,就是你那篇island constraints的随机截距的方差具体是多少?我在做power analysis,想参考一下你的参数设定。”
“随机截距方差……大概在2000到4000之间吧,我有点忘了,取决于你看的是哪个指标。First Pass的方差小一点,Go-Past Time的大一些。”
“嗯……那随机斜率呢?”
“更不好估计了,因为它和你的实验设计有关,condition数量不一样,方差结构就不一样。”
他的目光一直没有离开屏幕,只是忙着选中学生论文里一个又一个段落,在旁边打批注。
郦书遥看他没有要继续往下说的意思,而且……敲键盘的力度越来越大,似乎是耐心即将耗尽的表现。
“嗯,好的,那我自己再研究研究。”她语气中有种难掩的失望。
他给的范围是2000到4000之间,也太大了,这两个数值,模拟出来的结果可能差出一倍,她需要的是一个具体的数字,或者至少是一个有依据的估算方法。
但他……肯定不会有时间精力帮她一点点仔细分析了,算了……
郦书遥打开自己的R脚本,把光标放在参数设定的代码上,她把2000输进去,跑了一遍,然后改成3000,又跑了一遍,然后改成4000,再跑一遍。
不出所料,三次结果差异巨大……她皱着眉关上了R,又开始查找教程。
又过了几个小时,廖敬似乎改完了学生的论文,他伸了个懒腰,然后打开了熟悉的像素风界面。
绿色的田地,小小的房屋,像素小人站在河边垂钓,廖敬的表情终于放松了一点,嘴角带着笑意。
一个不需要竞争的地方,一片种什么长什么的田地,一群永远不会在背后捅刀子的NPC,一条钓不到也没有任何损失的鱼。
星露谷的旋律响起,本是简单安宁的背景音,可落在郦书遥耳朵里却有些刺耳。她刚收获了一屏幕的报错信息,肩颈酸痛,她的代码从四天前开始就没有一次完整跑通过。
——你有时间打游戏,但没有时间给我。
郦书遥知道自己不该这么想,他忙了一天,被PI搞得筋疲力尽,他有权利休息,那是他的时间……可情绪不讲道理。
等廖敬去洗澡的时候,忽然发现卫生间的洗手台和地板都已经被擦得干干净净,洗衣机里洗着一桶衣服。
“遥遥,你收拾卫生间了?本来说我今天收拾的嘛。”
“嗯,顺手收了,你忙你的吧。”她盯着电脑屏幕,头都没抬地回答。
卫生间不难收拾,此男很有自觉,上厕所都是坐着,郦书遥也很有自觉,洗完澡就会顺手收拾地漏上的头发……但是project是真难,学会不内耗也是真难。
* * *
接下来的几天,气压似乎悄悄变低了。
两个人都忙得要命,没有吵架和冷战,更没有吵架和冷战的时间,每天照常吃饭,照常各自工作,照常睡在同一张床上。
“今晚想吃什么?”
“都行。”
“那我煮面?”
“好。”
……
与此同时,郦书遥耗在书桌前的时间越来越长。
她把廖敬的论文翻来覆去读了好几遍,试图从报告的统计结果里反推出随机效应的方差参数,fixed effects的系数和标准误是有写的,但随机效应的方差只在一个表格里报告了最终模型的值,中间建模过程中尝试过的其他模型结构没有写在论文里。
走投无路之下,她打开了AI的对话窗口,上传了廖敬的论文,然后问:如何从这些报告的数据反推适合做power simulation的参数设定。
AI给了一个看上去很系统的回答,从提取方差分量到设定模拟参数,一个步骤接着一个步骤。她按照AI的指示,一步一步复制代码,一步一步warning再debug,循环往复。
代码终于跑了起来,有了结果,可结果看起来不太对。
她又问了AI,AI建议她调整effect size的估计值,重新跑下来,有所改善,但还是没有达到预期。
像是一口气堵在喉咙里,怎么都上不来。
她又调了随机斜率的方差,AI说如果不确定可以先设成0,重新跑,power终于到了0.82。
可随机斜率方差设成0,意味着假设所有被试对实验条件的反应是完全一致的,这在心理语言学实验里几乎不可能成立。
郦书遥盯着屏幕上的代码,感觉这些乱七八糟的字符似乎化成了一张嘲讽的笑脸,她快崩溃了。
——那个有可能可以回答目前的问题的人,每天晚上回来之后,基本都会先改上两个小时的学生论文,然后打星露谷,然后去洗澡,最后看文献,一句都没有问过“你的project还好吗”。
想到这儿,郦书遥狠狠敲了一下鼠标的左键,可是,她能宣泄情绪的方式也仅限于此了。
也许是察觉到了最近的低气压,廖敬试着做了一些事。
比如给她带她喜欢的焦糖拿铁,给她做焦糖布丁,郦书遥基本只回报以空洞平淡的“好吃,好喝,谢谢。”
因为她的代码又报错了,这次是更多她看不懂的error,模型收敛失败。
她在AI的对话窗口里又贴了一遍代码和报错信息,AI的一部分管用,但又引出了一个新的问题,模拟结果对随机斜率方差的设定极其敏感,取值稍微变一点,power就从0.8跌到0.5,毫无稳定性可言。
……
她觉得自己像是在修补一只处处漏水的船。
等AI再次回复的空档,她揉了揉发酸的眼睛,最近的度数恐怕又涨了,经常对着屏幕感受到一阵视力模糊。
* * *
晚上,郦书遥洗完澡躺到床上,拉好被子背对着廖敬。廖敬从背后靠过来,手臂搭上她的腰。
她的肩膀缩了一下:“……例假还没有彻底结束。”
“哦,好。”他的手臂松了一些,但还搭在她身上。接着,他的手碰了碰她的后背,试探性地问:“遥遥,你……不开心吗?”
“没有,”她心下一颤,嘴还是硬的,“只是比较累。”
廖敬没有再说什么,过了一会儿,他的呼吸变得均匀。
他睡着了?
郦书遥却睁着眼睛,盯着从门缝渗入的客厅的小夜灯的微弱光线,她睡不着。
一方面是脑子还在运行那些跑不通的代码,她在想是不是应该换一种模拟策略,可换了之后参数组合又有可能会指数级膨胀,运算时间会变得很长。
另一方面……是她不想承认的,模糊的不满。
他怎么就这么睡觉了?她说太累了,他就信了?如果他多问一句呢?
越想越清醒,越清醒越烦躁,越烦躁越觉得自己不讲道理,越觉得自己不讲道理越生气。
那股气绕了一圈,最终还是落回了廖敬的身上。
他大概真的睡着了,郦书遥轻轻移开他的手,然后掀开被子下床,尽量不发出声音。
重新回到书桌前,电脑屏幕重新亮起,AI的对话窗口还停在最后一轮没有解决的问题上。她贴上了一段新的代码,然后轻轻敲着键盘,AI又开始有问必答地、不知疲倦地生成回复。
屏幕的微光映在她的脸上,殊不知卧室里本该入睡的人,也已经悄悄睁开了眼睛。
作者有话说
显示所有文的作话
第66章 空位