Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

[solved] Remember and present again only wrong responses

JBSJBS
edited June 2014 in OpenSesame

Hi everybody!
I'm a new user of Opensesame and I need a hand please!!!!!
I try to build a word-pair associate learning task in which 3 successive phases are requiered to perform the test!

The first one is a presentation one in wich all word-pairs (total : 32) are visually and orally presented to the subject (no problem for this one).

Then a second phase occurs : the first word of each word-pairs is orally and visually presented and the subject has to recall orally the second one. If the answer is correct, the next word-pair is tested, if the answer is incorrect, a visual feedback of the correct response is given and then the next word-pair is tested. This procedure is repeated until all word-pairs have been tested.
(First problem : how can I do to give this feedback ONLY when the answer is wrong?)

Then, and here is my biggest problem :
when all word-pairs have been tested, the subject must reach a criterion on 60% of correct recalled words to complete this learning phase. If not, all word-pairs for which the subject gave a wrong answer must be retested once again!!
So opensesame must remember correct and wrong answers and must be able to present again ONLY wrong ones during a third phase.

So how can I buid this third phase of this experiment?

Thank you for your support!
JB

Comments

  • edited 7:26PM

    Hi JB,

    Welcome to the forum!

    Just a quick question:

    and the subject has to recall orally the second one

    Does this mean your participants make a verbal response?

    Did you like my answer? Feel free to Buy Me A Coffee :)

  • JBSJBS
    edited 7:26PM

    Thanks for paying attention to my problem!
    Yes, during the second phase, the subject only has to make a verbal response after the presentation of the first word of the pair! If his verbal response is correct, the next word-pair will be tested, if not a visual feedback of the correct answer (= the whole word-pair) will be given and then the next word-pair will be tested...

  • edited 7:26PM

    Hi JB,

    In that case I guess the best idea is to

    • Append a keyboad_response item after the presentation of the test word and let the experimenter make a button press depending on the accuracy of the participants verbal response. Choose a button for the correct response (e.g. "c") and set this as the 'Correct response' in the keyboard_response item.
    • Next, set the Run-if statement of your feedback item to:
    [correct] = 0
    

    which means that it will only be shown when participants made a mistake.

    See also:

    So opensesame must remember correct and wrong answers and must be able to present again ONLY wrong ones during a third phase

    Perhaps you could have a look at this previous thread:

    Does this help? Please let us know if you have any further questions!

    Cheers,

    Lotje

    Did you like my answer? Feel free to Buy Me A Coffee :)

  • JBSJBS
    edited 7:26PM

    Hi Lotje!
    Thank you for your advices!
    It's almost perfect now but I have two problems left :

    • When subjects give a wrong answer, the repeat_cycle item present again mistaken word-pairs at the end of the whole list until obtaining a correct response no matter the number of trials... How can I do to run the repeat_cycle item just once and then be sure that mistaken word-pairs will be presented again just one time?

    • Subjects have to reach a criterion of 60% of correct recalled words to complete the test (=18 correct recalled words)! How can I stop the test when subjects reach this criterion?

    Once again thank you!
    JB

  • edited 7:26PM

    Hi JB,

    When subjects give a wrong answer, the repeat_cycle item present again mistaken word-pairs at the end of the whole list until obtaining a correct response no matter the number of trials... How can I do to run the repeat_cycle item just once and then be sure that mistaken word-pairs will be presented again just one time?

    To do this, you will have to write some code that keeps track of how often each word (or some other variable that you don't want to repeat more than once) is presented. To do this, something like the following should work.

    At the start of each block_sequence add an inline_script that initializes a dictionary that keeps track of how often each item is presented (the seen_dict). Put this code in the prepare phase.

    # Reset the dictionary that keeps track of how often each item is seen
    seen_dict = {}
    

    Then, at the start of each trial_sequence, keep track of how often a particular variable value has already passed by. In your case, the variable is probably called word or something like that. This code is again best place in the prepare phase.

    var = self.get('word') # Get the current word
    if var not in seen_dict:
        # If the word is shown for the first time
        seen_dict[var] = 1
    else:
        # Otherwise, increment the counter for this word by 1
        seen_dict[var] += 1
    # Set the `times_seen` for this particular variable value
    exp.set('times_seen', seen_dict[var])
    

    Now you can use the variable times_seen to repeat a cycle only if the word hasn't been shown more than once, by using the following repeat-if statement in the repeat_cycle plug-in.

    [correct] = 0 and [times_seen] < 2
    

    Subjects have to reach a criterion of 60% of correct recalled words to complete the test (=18 correct recalled words)! How can I stop the test when subjects reach this criterion?

    Under 'advanced options' in your block_loop, you can use a break-if statement to abort the loop under particular conditions. In your case, a break-if statement like this should work:

    [acc] >= 60
    

    Cheers!
    Sebastiaan

  • JBSJBS
    edited 7:26PM

    Hi Sebastiaan and thank you for your advices!

    Unfortunately my experiment still doesn't work but I think because of my bad explanations... So I will try to be more accurate in my task description:

    During this word-pairs associate learning task, 3 phases occurs :

    • A first one during wicth 32 word-pairs (A-B) are orally and visually presented to children

    • Then when all word pairs have been presented, an immediate recall occurs :
      the first word of each word-pairs (A-?) is orally and visually presented and children have to give orally the second one (...B).
      If the answer is correct, the next pair is tested (A-?), if not a visual feedback of the whole word-pair is given (A-B) and then the next pair is tested (A-?).
      When all word-pairs (32) have been tested like this, if children reach the criterion of 60% of correct recalled words (...B), the test is over.

    Here is the problem :
    If this criterion is not reached, I would like to give a visual feedback (= the whole word-pair : A-B) of each mistaken word-pairs of the immediate recall.
    And then, when all mistaken word-pairs have been presented again like this I would like to do another immediate recall (A-?) of the whole list of word-pairs (32) and once again, if the criterion of 60% of correct recalled words is reached the test is over and if not, a visual feedback of each mistaken word-pair (A-B) is given again before doing another immediate recall (A-?) and like this until reaching the criterion...

    How can I do this?
    Thank you for your support!
    JB

  • edited 7:26PM

    Hi JB,

    You mention quite a few things there, but it strikes me that the problematic part is really this: You want to remember on which trials an incorrect response was given, and present these again later on. Right?

    One way to do this is as follows. First you create an empty list (skip_list) that will contain all words that will need to be skipped, i.e. those that have been correctly answered.

    # Create a list that will contain word pairs that do not need to shown again
    self.experiment.skip_list = []
    

    After a response has been given, you add the word pair to the skip_list if the response was correct. This assumes that you have a variable in your experiment called word_pair that contains the word pair (it can also just be a unique trial id).

    # If a word pair has been correctly answered, it does not need to be shown again
    if self.get('correct') == 1:
        self.experiment.skip_list.append(self.get('word_pair'))
    

    Now you have a list of word pairs that you don't need to show again. Next, you simply use a loop to present all word pairs again, while skipping the ones that have been correctly answered using the following run-if statement for the items in the sequence:

    =self.get('word_pair') not in self.experiment.skip_list # run-if statement
    

    This basically gives you all the ingredients to do what you want to do, I think. Of course, some creativity is required to implement this into your experimental structure! I would also recommended walking through some Python tutorials:

    Good luck!
    Sebastiaan

  • edited 7:26PM

    I have a similar question for my experiment.

    I would like that the program repeats only the trials in which subject does not give an answer (indeed the timeout of keyboard answer is 2500 ms) at the end of the circle.
    I think that I would put an inline script at the end of the Block sequence, in which the first line would be:

    if self.get('response_keyboard_response') == None:

    but what about the second part? How could I ask the program to select specifically the “no answered trials” and repeat them?

    Thank you,

    Federica

  • edited June 2014

    I have a similar question for my experiment.

    I would like that the program repeats only the trials in which subject does not give an answer (indeed the timeout of keyboard answer is 2500 ms) at the end of the circle.

    I’m trying to follow the Sebastian’s last suggestion.

    • at the start of my experiment, I create the list:

    self.experiment.skip_list = []

    • at the end of my first loop, I put this string:

      if 'response_keyboard_response' == 'b' or 'm':
      self.experiment.skip_list.append(self.get('ID'))

    in fact, the program has to skipe the trials in which subject gives an answer (b or n).

    • I create again the same loop, but this time it starts with this inline script (as you can see from my overview' s picture image).

    self.get('ID') not in self.experiment.skip_list

    However, the program apparently repeats constantly the item 4 of the list (as it is in a loop), according to the output.

    How can I manage my request?

    Thank you,

    Federica

  • edited 7:26PM

    Hi Frederica,

    If I understand correctly, your problem is much simpler than the one described above, and the repeat_cycle plug-in should do what you want. Basically, you just add a repeat_cycle plug-in to the end of your trial_sequence and set the repeat-if statement to

    [response] = None
    

    This will repeat every trial on which the response timed out, in which case the response variable will have the value None.

    Does that answer your question?

    Cheers,
    Sebastiaan

  • edited 7:26PM

    Dear Sebastiaan,

    it works perfectly! Thank you so much!

    Cheers,

    Federica

Sign In or Register to comment.

agen judi bola , sportbook, casino, togel, number game, singapore, tangkas, basket, slot, poker, dominoqq, agen bola. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 50.000 ,- bonus cashback hingga 10% , diskon togel hingga 66% bisa bermain di android dan IOS kapanpun dan dimana pun. poker , bandarq , aduq, domino qq , dominobet. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 10.000 ,- bonus turnover 0.5% dan bonus referral 20%. Bonus - bonus yang dihadirkan bisa terbilang cukup tinggi dan memuaskan, anda hanya perlu memasang pada situs yang memberikan bursa pasaran terbaik yaitu http://45.77.173.118/ Bola168. Situs penyedia segala jenis permainan poker online kini semakin banyak ditemukan di Internet, salah satunya TahunQQ merupakan situs Agen Judi Domino66 Dan BandarQ Terpercaya yang mampu memberikan banyak provit bagi bettornya. Permainan Yang Di Sediakan Dewi365 Juga sangat banyak Dan menarik dan Peluang untuk memenangkan Taruhan Judi online ini juga sangat mudah . Mainkan Segera Taruhan Sportbook anda bersama Agen Judi Bola Bersama Dewi365 Kemenangan Anda Berapa pun akan Terbayarkan. Tersedia 9 macam permainan seru yang bisa kamu mainkan hanya di dalam 1 ID saja. Permainan seru yang tersedia seperti Poker, Domino QQ Dan juga BandarQ Online. Semuanya tersedia lengkap hanya di ABGQQ. Situs ABGQQ sangat mudah dimenangkan, kamu juga akan mendapatkan mega bonus dan setiap pemain berhak mendapatkan cashback mingguan. ABGQQ juga telah diakui sebagai Bandar Domino Online yang menjamin sistem FAIR PLAY disetiap permainan yang bisa dimainkan dengan deposit minimal hanya Rp.25.000. DEWI365 adalah Bandar Judi Bola Terpercaya & resmi dan terpercaya di indonesia. Situs judi bola ini menyediakan fasilitas bagi anda untuk dapat bermain memainkan permainan judi bola. Didalam situs ini memiliki berbagai permainan taruhan bola terlengkap seperti Sbobet, yang membuat DEWI365 menjadi situs judi bola terbaik dan terpercaya di Indonesia. Tentunya sebagai situs yang bertugas sebagai Bandar Poker Online pastinya akan berusaha untuk menjaga semua informasi dan keamanan yang terdapat di POKERQQ13. Kotakqq adalah situs Judi Poker Online Terpercayayang menyediakan 9 jenis permainan sakong online, dominoqq, domino99, bandarq, bandar ceme, aduq, poker online, bandar poker, balak66, perang baccarat, dan capsa susun. Dengan minimal deposit withdraw 15.000 Anda sudah bisa memainkan semua permaina pkv games di situs kami. Jackpot besar,Win rate tinggi, Fair play, PKV Games