Participants can suddenly skip Likert Scale Items in Inquisit 6


Author
Message
LilM
LilM
New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)
Group: Forum Members
Posts: 4, Visits: 8
Hi,

I posted in this forum last month because the script we used for years suddenly does not work the same in Inquisit 6 anymore. The last problem was that the selected option of the likert scale is not highlighted anymore: https://forums.millisecond.com/Topic36040.aspx
We could not find a solution for this however we now discovered a way bigger problem. Our participants can skip all Likert Scale Items by pressing the Enter button, they are not forced to answer them like before. This is our current script:

<likert rate_attractivenesspicstay>
/ anchors = [1= "attractive";2="";3="";4="";5="not attractive"]
/ stimulustimes = [0=attractiveness]
/ mouse=false
/ numpoints=5
/ position= (50, 80)
/ posttrialpause=100
/ fontstyle = ("Arial", 2%)
</likert>

I tried fixing the issue with the correct response element but that did not work, the participants can still skip the questions.
Any idea why the likert element works so differently in Inquisit 6 and how we can fix this problem?

AKrishna
AKrishna
Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)
Group: Forum Members
Posts: 113, Visits: 386
Pressing Enter using your code (and an added stimulus "attractiveness") consistently leads to the response being logged as 3 in my case. It seems as though the middle option is (invisibly) selected by default.

If you just want feedback, you can mockup a likert-style trial like this:


<block fakeLikerts>
/ trials = [1 = fakeLikertsetup]


</block>


<trial fakeLikertsetup>
/ ontrialbegin = [
    shape.selection.color = white
]
/ stimulustimes = [0 = anchor1, anchor2, anchor3, anchor4, anchor5]
/ validresponse = (2,3,4,5,6)
/ branch = [
    trial.fakeLikertfeedback
]
</trial>

<text anchor1>
/ items = ("1")
/ position = (20%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor2>
/ items = ("2")
/ position = (35%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor3>
/ items = ("3")
/ position = (50%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor4>
/ items = ("4")
/ position = (65%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor5>
/ items = ("5")
/ position = (80%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>


<shape selection>
/ shape = rectangle
/ size = (3.2%, 3.2%)
/ color = white
/ position = (0%, 75%)
</shape>


<trial fakeLikertfeedback>
/ ontrialbegin = [
    shape.selection.color = green
]
/ ontrialbegin = [
    if (trial.fakeLikertsetup.response == 2) shape.selection.hposition = text.anchor1.hposition
    else if (trial.fakeLikertsetup.response == 3) shape.selection.hposition = text.anchor2.hposition
    else if (trial.fakeLikertsetup.response == 4) shape.selection.hposition = text.anchor3.hposition
    else if (trial.fakeLikertsetup.response == 5) shape.selection.hposition = text.anchor4.hposition
    else if (trial.fakeLikertsetup.response == 6) shape.selection.hposition = text.anchor5.hposition
]
/ stimulustimes = [0 = selection, anchor1, anchor2, anchor3, anchor4, anchor5]
/ recorddata = false
/ timeout = 1000

</trial>


It's a bit clunky, but should work (of course you need to add your actual Likert question).

If you want participants to explicitly confirm their choice, remove the setup trial and point the ontrialbegin code for the feedback trial to itself instead. Then remove the timeout from the feedback trial and add the possible responses for the anchors as well as your confirmation key (e.g., Enter). Branch the trial into itself if any other response other than Enter is pressed. If the Enter key is pressed, set the selection stimulus position to outside the screen so that the next use of the trial starts "clean". This can be messy in writing data, but you can easily set up a custom data file that uses a value or expression element to record the actual response value.

That probably sounded quite complicated, especially if you aren't used to branching and all that other stuff. I imagine Dave will have a better solution anyway; in case not, I'm glad to help if I can.

LilM
LilM
New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)
Group: Forum Members
Posts: 4, Visits: 8
AKrishna - 4/23/2024
Pressing Enter using your code (and an added stimulus "attractiveness") consistently leads to the response being logged as 3 in my case. It seems as though the middle option is (invisibly) selected by default.

If you just want feedback, you can mockup a likert-style trial like this:


<block fakeLikerts>
/ trials = [1 = fakeLikertsetup]


</block>


<trial fakeLikertsetup>
/ ontrialbegin = [
    shape.selection.color = white
]
/ stimulustimes = [0 = anchor1, anchor2, anchor3, anchor4, anchor5]
/ validresponse = (2,3,4,5,6)
/ branch = [
    trial.fakeLikertfeedback
]
</trial>

<text anchor1>
/ items = ("1")
/ position = (20%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor2>
/ items = ("2")
/ position = (35%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor3>
/ items = ("3")
/ position = (50%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor4>
/ items = ("4")
/ position = (65%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor5>
/ items = ("5")
/ position = (80%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>


<shape selection>
/ shape = rectangle
/ size = (3.2%, 3.2%)
/ color = white
/ position = (0%, 75%)
</shape>


<trial fakeLikertfeedback>
/ ontrialbegin = [
    shape.selection.color = green
]
/ ontrialbegin = [
    if (trial.fakeLikertsetup.response == 2) shape.selection.hposition = text.anchor1.hposition
    else if (trial.fakeLikertsetup.response == 3) shape.selection.hposition = text.anchor2.hposition
    else if (trial.fakeLikertsetup.response == 4) shape.selection.hposition = text.anchor3.hposition
    else if (trial.fakeLikertsetup.response == 5) shape.selection.hposition = text.anchor4.hposition
    else if (trial.fakeLikertsetup.response == 6) shape.selection.hposition = text.anchor5.hposition
]
/ stimulustimes = [0 = selection, anchor1, anchor2, anchor3, anchor4, anchor5]
/ recorddata = false
/ timeout = 1000

</trial>


It's a bit clunky, but should work (of course you need to add your actual Likert question).

If you want participants to explicitly confirm their choice, remove the setup trial and point the ontrialbegin code for the feedback trial to itself instead. Then remove the timeout from the feedback trial and add the possible responses for the anchors as well as your confirmation key (e.g., Enter). Branch the trial into itself if any other response other than Enter is pressed. If the Enter key is pressed, set the selection stimulus position to outside the screen so that the next use of the trial starts "clean". This can be messy in writing data, but you can easily set up a custom data file that uses a value or expression element to record the actual response value.

That probably sounded quite complicated, especially if you aren't used to branching and all that other stuff. I imagine Dave will have a better solution anyway; in case not, I'm glad to help if I can.

Thanks for the suggestion and mockup script. But as you already assumed, we need the participant to confirm the choice with the enter key. Our problem with this is that the produced data is analyzed with third-party developed Java tools that are programmed to read specifically the Likert style data. We can't make the data analysis process too messy or complicated because some of the users are unfamiliar with reading Inquisit data / scripts (hence the Java tool).
If Dave has another solution, we would greatly appreciate it.

AKrishna
AKrishna
Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)Distinguished Member (3.3K reputation)
Group: Forum Members
Posts: 113, Visits: 386
LilM - 4/23/2024
AKrishna - 4/23/2024
Pressing Enter using your code (and an added stimulus "attractiveness") consistently leads to the response being logged as 3 in my case. It seems as though the middle option is (invisibly) selected by default.

If you just want feedback, you can mockup a likert-style trial like this:


<block fakeLikerts>
/ trials = [1 = fakeLikertsetup]


</block>


<trial fakeLikertsetup>
/ ontrialbegin = [
    shape.selection.color = white
]
/ stimulustimes = [0 = anchor1, anchor2, anchor3, anchor4, anchor5]
/ validresponse = (2,3,4,5,6)
/ branch = [
    trial.fakeLikertfeedback
]
</trial>

<text anchor1>
/ items = ("1")
/ position = (20%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor2>
/ items = ("2")
/ position = (35%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor3>
/ items = ("3")
/ position = (50%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor4>
/ items = ("4")
/ position = (65%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor5>
/ items = ("5")
/ position = (80%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>


<shape selection>
/ shape = rectangle
/ size = (3.2%, 3.2%)
/ color = white
/ position = (0%, 75%)
</shape>


<trial fakeLikertfeedback>
/ ontrialbegin = [
    shape.selection.color = green
]
/ ontrialbegin = [
    if (trial.fakeLikertsetup.response == 2) shape.selection.hposition = text.anchor1.hposition
    else if (trial.fakeLikertsetup.response == 3) shape.selection.hposition = text.anchor2.hposition
    else if (trial.fakeLikertsetup.response == 4) shape.selection.hposition = text.anchor3.hposition
    else if (trial.fakeLikertsetup.response == 5) shape.selection.hposition = text.anchor4.hposition
    else if (trial.fakeLikertsetup.response == 6) shape.selection.hposition = text.anchor5.hposition
]
/ stimulustimes = [0 = selection, anchor1, anchor2, anchor3, anchor4, anchor5]
/ recorddata = false
/ timeout = 1000

</trial>


It's a bit clunky, but should work (of course you need to add your actual Likert question).

If you want participants to explicitly confirm their choice, remove the setup trial and point the ontrialbegin code for the feedback trial to itself instead. Then remove the timeout from the feedback trial and add the possible responses for the anchors as well as your confirmation key (e.g., Enter). Branch the trial into itself if any other response other than Enter is pressed. If the Enter key is pressed, set the selection stimulus position to outside the screen so that the next use of the trial starts "clean". This can be messy in writing data, but you can easily set up a custom data file that uses a value or expression element to record the actual response value.

That probably sounded quite complicated, especially if you aren't used to branching and all that other stuff. I imagine Dave will have a better solution anyway; in case not, I'm glad to help if I can.

Thanks for the suggestion and mockup script. But as you already assumed, we need the participant to confirm the choice with the enter key. Our problem with this is that the produced data is analyzed with third-party developed Java tools that are programmed to read specifically the Likert style data. We can't make the data analysis process too messy or complicated because some of the users are unfamiliar with reading Inquisit data / scripts (hence the Java tool).
If Dave has another solution, we would greatly appreciate it.

Well, depending on how hard it is to adjust the JavaScript file, one could minimize the impact of the changes. For example, if the JavaScript file looks for a specific column name, it's simple enough to create a column called "LikertResponse" that only records precisely the data the "response" column would have held in your original script. If the custom script can be pointed towards a different column name, that would be a relatively simple solution. Getting the script to write only one line per Likert response wouldn't be a problem either.

Let's wait and see whether there is a better solution. If not, perhaps we can at least identify the least bad of the possible workarounds.

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 103K
AKrishna - 4/23/2024
LilM - 4/23/2024
AKrishna - 4/23/2024
Pressing Enter using your code (and an added stimulus "attractiveness") consistently leads to the response being logged as 3 in my case. It seems as though the middle option is (invisibly) selected by default.

If you just want feedback, you can mockup a likert-style trial like this:


<block fakeLikerts>
/ trials = [1 = fakeLikertsetup]


</block>


<trial fakeLikertsetup>
/ ontrialbegin = [
    shape.selection.color = white
]
/ stimulustimes = [0 = anchor1, anchor2, anchor3, anchor4, anchor5]
/ validresponse = (2,3,4,5,6)
/ branch = [
    trial.fakeLikertfeedback
]
</trial>

<text anchor1>
/ items = ("1")
/ position = (20%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor2>
/ items = ("2")
/ position = (35%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor3>
/ items = ("3")
/ position = (50%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor4>
/ items = ("4")
/ position = (65%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>

<text anchor5>
/ items = ("5")
/ position = (80%, 75%)
/ txbgcolor = grey
/ size = (3%, 3%)
</text>


<shape selection>
/ shape = rectangle
/ size = (3.2%, 3.2%)
/ color = white
/ position = (0%, 75%)
</shape>


<trial fakeLikertfeedback>
/ ontrialbegin = [
    shape.selection.color = green
]
/ ontrialbegin = [
    if (trial.fakeLikertsetup.response == 2) shape.selection.hposition = text.anchor1.hposition
    else if (trial.fakeLikertsetup.response == 3) shape.selection.hposition = text.anchor2.hposition
    else if (trial.fakeLikertsetup.response == 4) shape.selection.hposition = text.anchor3.hposition
    else if (trial.fakeLikertsetup.response == 5) shape.selection.hposition = text.anchor4.hposition
    else if (trial.fakeLikertsetup.response == 6) shape.selection.hposition = text.anchor5.hposition
]
/ stimulustimes = [0 = selection, anchor1, anchor2, anchor3, anchor4, anchor5]
/ recorddata = false
/ timeout = 1000

</trial>


It's a bit clunky, but should work (of course you need to add your actual Likert question).

If you want participants to explicitly confirm their choice, remove the setup trial and point the ontrialbegin code for the feedback trial to itself instead. Then remove the timeout from the feedback trial and add the possible responses for the anchors as well as your confirmation key (e.g., Enter). Branch the trial into itself if any other response other than Enter is pressed. If the Enter key is pressed, set the selection stimulus position to outside the screen so that the next use of the trial starts "clean". This can be messy in writing data, but you can easily set up a custom data file that uses a value or expression element to record the actual response value.

That probably sounded quite complicated, especially if you aren't used to branching and all that other stuff. I imagine Dave will have a better solution anyway; in case not, I'm glad to help if I can.

Thanks for the suggestion and mockup script. But as you already assumed, we need the participant to confirm the choice with the enter key. Our problem with this is that the produced data is analyzed with third-party developed Java tools that are programmed to read specifically the Likert style data. We can't make the data analysis process too messy or complicated because some of the users are unfamiliar with reading Inquisit data / scripts (hence the Java tool).
If Dave has another solution, we would greatly appreciate it.

Well, depending on how hard it is to adjust the JavaScript file, one could minimize the impact of the changes. For example, if the JavaScript file looks for a specific column name, it's simple enough to create a column called "LikertResponse" that only records precisely the data the "response" column would have held in your original script. If the custom script can be pointed towards a different column name, that would be a relatively simple solution. Getting the script to write only one line per Likert response wouldn't be a problem either.

Let's wait and see whether there is a better solution. If not, perhaps we can at least identify the least bad of the possible workarounds.

If you can switch the likert to using mouse input, the problem goes away. Other than that, I don't believe there's a solution when using a likert element. As @AKrishna noted, you can always build a custom likert scale using standard trial elements, and you can make that have a two-step process if you want to, i.e. first select a number, then confirm choice via enter.

LilM
LilM
New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)New Member (16 reputation)
Group: Forum Members
Posts: 4, Visits: 8
Thank you both for your answers. Unfortunately mouse input is not an option because the validity of the test relies on key input. We will try using the custom likert scale and see if we can build it to work and produce data like the old version.

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search