问题描述:1st level跑完之后针对该步骤生成的SPM.mat进行模型估计,报错如下图
备注一下,我收了20个被试,报错的大概占一半,所以有的能跑完estimation,并不是所有都报错,所以debug很没头绪。就从头到尾都检查了一遍。
![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210131111013361.png?,type_ZmFuZ3poZW5naGVpdGk,shad
已解决:我的问题是条件(condition)的onset设置有问题。
记录一下尝试过的方法:
try1 ✅预处理结果图——正常
try2 ✅事件相关设计,duration修改为0——相同报错❌
补充参考:核磁实验中如果是事件相关设计,那么1st level操作时duration填0
http://www.pantsiao.com/wiki/%E4%BA%8B%E4%BB%B6%E7%9B%B8%E5%85%B3%E8%AE%BE%E8%AE%A1/
https://www.fil.ion.ucl.ac.uk/spm/course/slides11/08_Event_Related_FIL2011May.pdf
try3 ✅看1st level结果 design matrix
1、需要注意的小问题,检查multiple regressors的文件是否添加正确,如果是session1的,就去session1选择数据scans的文件下,添加session1对应的rp*文件。(每个session对应的文件txt不同,需要对应)
2、看design matrix
我在分析1st level时添加了3个session(run),核磁收数据的时候做任务共三个run,每个run10min,但是我的实验时长是变动的,一般最后两分钟是没任务了,所以下面的design matrix 每个session最左侧的images最后一截都是空白。
看一下被试的design matrix和自己当时收数据的程序设计是否吻合。
3、个人报错原因
下图是错误的design matrix 也是报错的主要原因。当时没意识到design matrix不对劲是因为我将前几个试次作为练习试次删除了,所以并没觉得时间事件不对应。
最重要的一点是,核磁程序都会有一个s键,同步复位,按完按键,核磁仪器开始扫描。而对应的行为程序需要记录整个程序各个刺激或动作出现的累加时间,这也是后面将核磁数据和行为数据进行时间上的对应的重要参考。
我的问题在于,同步复位开始前,仪器进行预扫描,我的程序是准备状态,等待按键的页面,这段时间程序也是记录的!!!
具体看图二excel,也就是我按s/同步复位这一个response前有十几二十秒的等待时间,是累计到我的行为时间数据里的,但是不累计在核磁数据里!
所以要把第一个刺激开始的时间减去这个等待时间,才是仪器扫描的时刻。
大家实验设置可能都不太相同,不知道你们的时间记录会不会有这样的小问题。= =
PS 关于为什么一直没发现时间不对应,一个是因为自己删了被试的前几个试次,一个是因为前几个参加实验的被试行为程序等待时间相对较短,只有几十s。后面发现问题是一个个看了其他被试的design matrix,在靠后的被试结果中发现前期空白有的将近2min,才往回翻,发现的问题。
有时间整理一下用code跑1st level。