不靠譜PsychoPy入門教程目錄:
這是第四篇了,說說等級評定的用法吧占业。
PsychoPy中有個RatingScale()的方法李剖,可以用在多選堪藐、等級評分上。它是一個標(biāo)尺的樣子镜会,讓被試在上面點選,可以記錄選擇的選項和反應(yīng)時。
用到模塊跟前面兩次一樣童社,還是這三個:
from psychopy import visual, core, event
等級評定分兩種,一種是分類的著隆,稱名量表或名義量表扰楼,選項代表類別;一種是定量的美浦,數(shù)值代表大小弦赖。下面每一種的我們都建一個:
scale_1 = visual.RatingScale(win, choices = [u'ugly',u'WTH',u'nice'], pos = (0.0,-0.6))
scale_2 = visual.RatingScale(win, scale = u'1=非常不喜歡 . . . . . . . . . . . 7=非常喜歡',
low =1, high = 7, precision = 1, pos = (0.0,-0.6),
marker = 'circle', showValue = True,
acceptPreText = u'請在橫線上點擊')
解釋一下,scale_1是分類的量表浦辨,choices里放的是每個選項蹬竖,它們會作為標(biāo)尺的標(biāo)簽。pos是位置流酬,不多說币厕。
scale_2的話就是個等距量表,這里就不再用choices了(choices的優(yōu)先級高芽腾,有它在其他跟它沖突的參數(shù)就失效了)旦装。
- scale是對量表的解釋描述,放在標(biāo)尺上面摊滔,內(nèi)容是字符阴绢。low和high是最小值和最大值店乐。
- precision精度的默認(rèn)值是1,這里最大7最小1呻袭,精度是1眨八,那就只能選擇1到7這七個整數(shù),沒有別的值左电。
- marker是選擇的時候在標(biāo)尺上顯示的圖標(biāo)廉侧,可以是‘triangle’、‘circle’券腔、‘glow’伏穆、‘slider’(比如取值在0-100的話可以平滑的拖動)和‘hover’(用在choices上才行)。這里用個最普通的圓形纷纫。
- showValue的值可以使True和False枕扫,True的話被試選擇之后底下會出現(xiàn)所選的值,F(xiàn)alse就不會出現(xiàn)辱魁。- ------ acceptPreText是沒做選擇的時候烟瞧,標(biāo)尺底下的確定按鈕上顯示的文字。
當(dāng)然還有很多其他的參數(shù)染簇,可以設(shè)置大小参滴、顏色、字體等等锻弓。想鼓搗來玩兒的話砾赔,參考手冊:RatingScale。
具體要對什么東西做評定呢青灼,隨便來張圖片吧暴心,順道配個文字說明。
pic = visual.ImageStim(win, image = 'test_1.jpg', pos = (0.0,0.4))
item = visual.TextStim(win, text = u'', pos = (0.0,-0.1))
接下來呈現(xiàn)我們要評定的圖片杂拨、文字說明以及上面建好的scale专普。也是用stim.draw()。需要用到while循環(huán)弹沽,如果被試沒有做出選擇(scale.noResponse == True)就要一直呈現(xiàn)檀夹,做出選擇之后跳出循環(huán)繼續(xù)執(zhí)行下面的代碼。這部分的代碼是這樣的:
# 第一個量表
item.text = u'這張圖給你的感受是策橘?'
while scale_1.noResponse:
pic.draw()
item.draw()
scale_1.draw()
win.flip()
# 第二個量表
item.text = u'評定你對著張圖片的喜愛程度炸渡。'
while scale_2.noResponse:
pic.draw()
item.draw()
scale_2.draw()
win.flip()
運行一下,你會看到這樣的畫面:
【注意:】如果同一個scale要重復(fù)使用的話丽已,需要在下次調(diào)用前重置(reset)偶摔,不然它處于已經(jīng)選擇的狀態(tài),noResponse=False促脉,while循環(huán)不會執(zhí)行辰斋。只需要填上這兩行就行:
scale_1.reset()
scale_2.reset()
這個應(yīng)該作為習(xí)慣填在while循環(huán)前,一般情況下我們會讓被試對多個對象進行評定瘸味,重復(fù)使用是肯定的宫仗。
RatingScale會記錄你所做的選擇和所用的時間,用scale.getRating(), scal.getRT()獲取旁仿∨悍颍可以用print打印出來看看:
print 'scale 1:', scale_1.getRating(), scale_1.getRT()
print 'scale 2:', scale_2.getRating(), scale_2.getRT()
這兩行分別放在兩個scale的while循環(huán)下面。運行之后枯冈,可以在output窗口看到你的選擇結(jié)果毅贮,類似這樣:
RatingScale()的用法基本上就是這些了。
整體代碼如下:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#示例4
'''
等級評定
'''
#載入所需要的庫
from psychopy import visual, core, event
#創(chuàng)建窗口
win = visual.Window(fullscr = False, size = (1000,600),
color = (-1.0,-1.0,-1.0), units = 'norm', monitor = 'testMonitor')
#評定內(nèi)容
pic = visual.ImageStim(win, image = 'test_1.jpg', pos = (0.0,0.4))
item = visual.TextStim(win, text = u'', pos = (0.0,-0.1))
#量表
scale_1 = visual.RatingScale(win, choices = [u'ugly',u'WTH',u'nice'], pos = (0.0,-0.6))
scale_2 = visual.RatingScale(win, scale = u'1=非常不喜歡 . . . . . . . . . . . 7=非常喜歡',
low =1, high = 7, precision = 1, pos = (0.0,-0.6),
marker = 'circle', showValue = True,
acceptPreText = u'請在橫線上點擊')
#呈現(xiàn)
item.text = u'這張圖給你的感受是尘奏?'
scale_1.reset()
while scale_1.noResponse:
pic.draw()
item.draw()
scale_1.draw()
win.flip()
print 'scale 1:', scale_1.getRating(), scale_1.getRT()
item.text = u'評定你對著張圖片的喜愛程度滩褥。'
scale_2.reset()
while scale_2.noResponse:
pic.draw()
item.draw()
scale_2.draw()
win.flip()
print 'scale 2:', scale_2.getRating(), scale_2.getRT()
win.close()
core.quit()
P.S. RatingScale有個maxTime和minTime的參數(shù),minTime是必須等多少秒之后才能做選擇炫加,maxTime是最長等待多少秒瑰煎。比如你的實驗對反應(yīng)時有要求,必須在4秒之內(nèi)做出選擇才有效俗孝,就可以設(shè)置maxTime的值等于4酒甸,這樣四秒內(nèi)沒做選擇就自動跳過去了。
有什么疑問或者建議赋铝,請在下方評論插勤。