PsychoPy入門_04_等級評定

不靠譜PsychoPy入門教程目錄:

  1. PsychoPy入門00安裝

  2. PsychoPy入門01文字和圖片的呈現(xiàn)

  3. PsychoPy入門02按鍵等待&反應(yīng)時

  4. PsychoPy入門03視頻和音頻的呈現(xiàn)

  5. PsychoPy入門04等級評定

  6. PsychoPy入門05循環(huán)和隨機(jī)

  7. PsychoPy入門06數(shù)據(jù)記錄

  8. PsychoPy入門07鼠標(biāo)的使用

  9. 用PsychoPy做視覺搜索任務(wù)實驗


這是第四篇了,說說等級評定的用法吧。

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()

運(yùn)行一下,你會看到這樣的畫面:




【注意:】如果同一個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)前,一般情況下我們會讓被試對多個對象進(jì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)下面。運(yù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)沒做選擇就自動跳過去了。

有什么疑問或者建議,請在下方評論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容