E-prime时间问题.doc_第1页
E-prime时间问题.doc_第2页
E-prime时间问题.doc_第3页
E-prime时间问题.doc_第4页
E-prime时间问题.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

e-prime的时间问题 Posted by 艾草 on 2009年9月9日 星期三 Labels: e-prime、时间精确度 1 comments 认知心理学的行为实验中,反应时是一个非常有用的变量,同时也是一个比较难以精确记录的变量。实验刺激的呈现时间、按键反应记录都要求精确要毫秒(ms)。E-prime作为一个常用的心理学实验程序,它是怎么解决时间精确度问题的呢?或者说e-prime记录时间的原理是什么?又是怎么实现的呢?我们首先看看影响时间精确度的因素有哪些,然后看e-prime是怎样解决这些问题的。一、屏幕刷新率问题对于时间的精确度问题,首先要了解电脑屏幕的显示原理。目前显示屏主要有CRT和LCD两种。前者就是阴极射线管显示器。后者是液晶显示器。无论是CRT还是LCD都有一个很关键的参数:屏幕刷新率(the refresh rate,一般是60 Hz)和屏幕刷新周期(the refresh duration,一般是多少ms)。这两者之间的关系可以用公式计算:屏幕刷新率(Hz)=1000/屏幕刷新周期(ms)屏幕刷新周期(ms)=1000/屏幕刷新率(Hz)目前,电脑的屏幕刷新率一般都是60ms。在屏幕上右击属性设置高级监视器,你可以看到屏幕刷新频率60赫兹。但是,我们看到的是生产厂商报告的屏幕刷新率为60赫兹。而实际上真正的屏幕刷新率不一定就是60Hz。在e-prime中可以测电脑屏幕的实际刷新频率。在e-prime收集的数据文件的logs中查看Display.RefreshRate的值就是电脑屏幕的实际刷新频率。下面是一些测试数据:那么时间精确度和屏幕刷新频率有什么关系呢?当然有啦!存在下面的公式:(The reported refresh rate)/(the actual refresh rate)=(actual time)/(expected time)举一个例子,如果一台电脑报告的屏幕刷新率为60Hz,而实际为75.3Hz。当这台电脑的屏幕刷新了60次,根据报告的刷新频率(60Hz),电脑显示所用时间为1000ms,而实际上只有797ms。所以说影响时间精确度第一个问题就是电脑的屏幕刷新率不准确。e-prime自动检测屏幕实际刷新率,在每一个run开始的时候,并把实际刷新频率记录到数据中,实验者可以进行检查。当然在编写实验程序的时候,需要把e-prime中显示系统的屏幕分辨率和颜色质量设置为与电脑屏幕是一样的。具体操作可以参照e-prime使用指南。二、刺激呈现时间偏离设定值在用程序呈现刺激的时候,尽管我们设置一个刺激呈现时间为800ms,但是偶尔却达到了1000ms。这种偏离是偶然的,你不知道什么时候它会发生。这是为什么呢?我们首先要知道,控制电脑的是我们的系统,而不是我们。电脑常常在运行着多个进程,当系统内存资源不足的时候,操作系统会优先让一些进程先运行,而让其他一些程序暂停,而且这种情况我们不知道什么时候会发生,这就产生了上面的随机偏离。下面的图很好的描述了这一点。最下面的白色线条,表示我们设定刺激呈现时间是200ms,但是在第一个session和第二个session中,都随机出现了峰值,这就是系统让e-prime暂停运行,从而导致了某一次刺激呈现时间的延长。另外一个问题可能大家也注意到了,除了那些偶然的峰值以外,实际的呈现时间总是在300ms左右,而不是设定的200ms,这又是为什么呢?原因在于,程序调用图片是需要时间准备的。在这个例子中,程序调用图片需要的准备时间为100ms左右。所以这里有两个问题,第一就是系统的偶然“堵塞”,会导致程序的暂停,从而使呈现时间出现偏离。第二就是程序调用图片或者刺激是需要准备时间的。如果连续中间没有间隔地呈现图片,每张图片呈现200ms,我们会发现实际上中间会有100ms的准备时间,也就是说一张图片的呈现需要用300ms。e-prime怎么解决这个问题的呢?首先e-prime中可以通过在程序的最开始添加inline语句实现。即告诉系统,e-prime是优先执行的进行,不受任何其他程序的影响。在系统中,优先等级有三个:0,1,3。0是最高等级,3是一般等级。如果我们希望e-prime的优先等级为0,则在inline中添加如下语句:SetOSThreadPriority 0但是一般而言,我们都不会把e-prime的优先级设置为0。而是在实验的时候关掉其他程序。第二问题e-prime通过PreRelease Timing Diagram来解决。下图很好的说明了这个方法。就是在呈现当前刺激的时候,e-prime在后台开始准备下一个刺激的呈现。在下图中,准备刺激所要30ms,所以如果PrePelease值为0,即不需要提前准备下一个刺激的呈现,那么刺激呈现之间就会有30ms的间隔。当PrePelease值设置为30ms(大于30ms也可)时,即当前刺激还在呈现的时候,提前30ms在后台准备下一个刺激的呈现。在刺激属性窗口的duration/input项目中,有一个PreRelease值需要设置,默认为0。在具体的实验中要根据刺激呈现的准备时间为准。一般而言PreRelease值设置为150-200ms就可以满足大部分刺激呈现的要求。这个值的设定的时候有一个问题需要注意,就是当前刺激紧跟反馈的时候。由于反馈的呈现需要提取当前刺激的反应信息,如果让反馈显示提前准备,有可能被试还没有作出反应,无法提取被试的反应信息,从而做出被试没有反应的反馈。所以当下一个呈现是反馈的时候,一般设置PreRelease为0.三、刺激呈现时间与屏幕刷新周期的关系前面已经提到过,如果刷新频率不正确,会导致时间偏差。其实屏幕刷新周期与时间精确度也有关系。屏幕刷新周期(the refresh cycle),就是屏幕从这一次刷新到下一次刷新所需要的时间。首先要明白屏幕上显示的图像是有一个一个的像素组成的。分辨率为1024*768的屏幕,是说屏幕上有1024*768像素矩阵,1024列,768行(vertical display line)。屏幕显示是从左上角开始从左到右一个一个像素的显示,显示完一行,再从左到右开始显示下一行,一直到右下角。也就说,一个在屏幕左上角的刺激比屏幕右下角的刺激更早显示出来(大约一个周期14ms),只是我们的肉眼没有办法分辨而已。屏幕刷新之后(显示完后),需要完成一个vertical blank event(这个我也不是很理解,原句在这里:the time that the electronic gun on the monitor moves from the bottom right of the display to the top left of the screen restart the refresh,我个人理解为可能类似于准备下一次显示需要完成的一个事件,这个事件类似于用一个电子枪从屏幕的右下角开始进行扫描到左上角,与屏幕显示的方向相反。所需的时间3ms左右)。规定屏幕周期从vertical blank event开始,到屏幕从左上角到右下角的显示完成结束。如下图:刺激显示的时间是屏幕刷新周期的整数倍。举一个例子,假设屏幕刷新周期是13.67ms,设置刺激的呈现时间为200ms,那么我们看到的刺激呈现时间可能有两个值:191.3ms (14*13.67ms) 或者205.0ms (15*13.67ms)。在e-prime中,我们默认刺激显示要和下一次屏幕刷新周期同步。也就是说,与ertical blank event同步。如果目前不同步,e-prime 会等待下一次ertical blank event,然后开始呈现刺激。即如果目前屏幕才刷新一半,而我设置刺激立即显示。实际上刺激不会立即计时和显示,而是在下一次屏幕刷新开始计时并显示。这样就可能导致时间的偏离和累计偏离。e-prime提供了多个时间模式解决这个问题:Event Mode Timing、Cumulative Mode Timing、Custom Mode Timing。Event Mode Timing,这个模式下,能保证单个刺激的呈现时间,但会有一定的时间漂移,并且最后累积下来,导致实验时间偏移。Cumulative Mode Timing能,这个模式下,能保证整个trial的时间没有偏移,但是单个刺激的呈现会出现调整。下面的图很好的展示了Event Mode Timing和Cumulative Mode Timing的区别。大家可以根据具体的实验要求去设置。在属性对话框的duration/input中进行设置。Custom Mode Timing,这个模式需要我们自己写代码了。如:Probe.CustomOnsetTime = Clock.Read + 5000Probe.CustomOffsetTime = Probe.CustomOnsetTime + 100具体怎么写要参看e-prime的basic help,掌握基本的函数、命令、句法。四、对所有数据进行记录和检查这一点主要是针对那些非常关注时间精确度的实验了。实验者可以记录每个刺激呈现开始的时间和结束的时间,然后进行分析。看中间有没有时间偏差,然后对数据进行校正,或者剔除。这主要决定于实验对时间精确度的需求。e-prime操作实例1 在开始编写实验程序之前,我们要想好自变量是什么,因变量是什么。下面举例。1. go/no go任务e-prime编程要从最小的一个trial开始。对于一个trial,可能是go trial也可能是no go trial。Go trial中,被试看到go的cue(自变量)的时候按“/”键。所以要想好用什么刺激作为go的cue。需要记录被试的反应、反应时、正确率(因变量)。No go trial中,被试看到no go的cue的时候不按键。所以要准备no go的cue。在no go trial中记录被试的反应(按键与否)和正确率(因变量)。本实验采用一个7.5cm*2.5cm的长方形作为条件刺激。当长方形竖着为条件1,横着的时候为条件2。条件1和条件2各占50%.条件1的时候,图形变成蓝色是no go trial,占20%,图形变成绿色就是go trial,占80%。条件2的时候,图形变成蓝色是no go tria,占80%,图形变成绿色就是go trial,占20%.这样,一共有四种组合,随机呈现。一般而言,对于一个trial,首先要在屏幕中心呈现一个注视点(fixation)。接下来就是呈现提示信息(cue/prime,自变量),然后是刺激(stimulus,自变量),反馈(feedback)。而我们需要记录的被试的按键反应(response)、反应时(reaction time)、正确率。所以需要告诉程序什么是正确反应(correct response),让计算机判断被试反应是否正确,从而计算整个实验的正确率。当然并不是每一个实验都有反馈(feedback)、都有提示信息(cue/prime),要根据自己的实验设计具体设置。有的实验设计中每一个trial都包括对trial type的提示信息(自变量)。在这里go/no-go任务需要反馈(feedback)、都有提示信息(cue/prime)、trial type的提示信息。需要注意的是,注视点后直接呈现刺激有时候显得很突兀。所以在注视点到呈现刺激的中间,我们常常加入一段很短的空白屏,使实验看起来更加流畅而不突兀。这样就可以设计出在单一的一个trial中需要呈现的刺激有哪些,并用一个table整理出来。每一行代表一个trial。很多trial连续呈现就形成一个block了。fixationblankconditionCue/Trial typeCorrect response+verticalBlue/+HorizontalBlue/+HorizontalGreen+verticalGreen+e-prime操作实例2 Posted by 艾草 on 2009年9月3日 星期四 Labels: e-prime、gonogo 2 comments 弄清楚每一个trial中需要呈现的刺激序列后,就要开始思考是否需要练习的trial,需要练习多少个trial。正式实验的时候,需要多少个trial,分成几个block来实现。本次的Gonogo任务正式实验需要200个trial,放在一个block中。条件1(长方形立着,长(2.5cm)*高7.5cm)和条件2(长方形躺着,长(7.5cm)*高(2.5cm)分别为100个trial,如下表。Condition形状Trial type颜色Trial数1长(2.5cm)*高7.5cm)Gogreen80No goblue202长(7.5cm)*高(2.5cm)Gogreen20No goblue80所以我需要准备一个list,包含了200个trial的所需的刺激材料,每个trial一行。到目前为止,对实验的理论设计部分就已经完成。现在要具体操作了。稍作休息首先用ppt做物料,这个前面已经说过,这里不细说了。现在我已经准备好了如下的图片材料,e-prime支持bmp格式的(e-prime1.1只支持bmp格式的,e-prime2.0支持其它格式的图片):Introduction.bmp 因为不支持中文文本,所以把中文指导语做成了图片。Ver.bmp 条件1的长方形:长(2.5cm)*高7.5cm),立着,内没有填充颜色。Ver_go.bmp 条件1的长方形,内填充颜色为绿色,提示为go trial type。Ver_nogo.bmp 条件1的长方形,内填充颜色为蓝色,提示为nogo trial type。Hor.bmp 条件2的长方形:长(7.5cm)*高(2.5cm),躺着,内没有填充颜色。Hor_go.bmp 条件2的长方形,内填充颜色为绿色,提示为go trial type。Hor_nogo.bmp 条件2的长方形,内填充颜色为蓝色,提示为nogo trial type。Corr.bmp 正确反应的反馈信息,由于不支持中文,所以也做成了图片。Incorr.bmp 错误反应的反馈信息。Start.bmp 练习后,进入正式实验。Goodby.bmp 实验完成,结束语。有了上面的这些物料后,就开始打开e-primes-studio,打开一个空白实验(blank experiment):在structure窗口中,双击SessionProc,右边窗口中打开一个左端绿色,右端红色的时间轴:我们可以把要呈现的物体(object)从左到右排列在这条线上,并设置每个物体(object)的呈现时间、呈现位置等。前面已经介绍过需要把e-prime的分辨率设置到与屏幕分辨率一样,这里不在赘述。基于前面的实验设计,我们首先要给被试呈现的是一个指导语(introduction),并且用图片的形式进行呈现。所以就用鼠标从toolbox窗口drag一个ImageDispaly放到SessionPro的轴上。并且把ImageDisplay的名字改为Introduction。指导语之后,就是练习。所以从toolbox窗口drag一个list放到Introduction后。List object用来存放练习所需的trial。所以重命名为praclist。练习完后就进入正式实验,鼠标从toolbox窗口drag一个ImageDispaly放到praclist后,提醒被试马上就要开始正式实验了。所以重命名为start。从toolbox窗口drag一个list放到start后,这个list用来存放正式实验所需的trial。所以重命名为blocklist。因为这个实验只有一个block,所以这个block 完之后,正式实验也就结束了。然后要呈现一个结束语,所以从toolbox窗口drag一个ImageDispaly放到blocklistt后,重命名为goodby。最后,SessionProc的时间轴、结构窗口如下:这就是gonogo实验的最顶上一层。从这里可以看出,当我们在构思一个实验的时候,是从一个trial水平开始,从最底层开始建构,到block水平,到整个实验水平(session level)。而在用e-prime编写实验的时候,却是从整个实验最顶层开始,到block水平,再到trial水平。现在我们开始设置SessionProc上每一个object的属性。双击introduction,点击左上角的属性图标(如下图),打开一个Properties:introduction的属性设置框。在这个设置框中可以对introduction的所有属性进行设置。点击”general”,点击filename后面的文件夹,浏览到introduction.bmp所在的文件夹,选中introduction.bmp。或者直接在filename后面的输入框中输入路径和文件名:D:experiment_programgo_no_gointroduction.bmp。然后还有AlignHorizontal和AlignVertica

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论