How to present texts depending on a previous selection?


Author
Message
kevin
kevin
Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)
Group: Forum Members
Posts: 4, Visits: 26
Hi,

this is the first time I use this forum since I haven’t used Inquisit so far. However, I’m planning to run a study where my common tools seem to hit the wall. Therefore, I am wondering whether Inquisit might be the right software to program this study. I hope to be able to describe the task sufficiently.

Basically, I want to present texts (consumer reviews) to participants after they made a choice of which reviews they want to read in order to get more information about a product. The reviews belong to seven different categories which represent consumer ratings (like stars on amazon, for instance) – with category one being the worst and category seven being the best rating. In the first part of the task, participants have to select (exactly) eight reviews. However, they do not select the reviews as such, but rather indicate how many reviews out of which category they want to read in the following (e.g., 2 of category one and 6 of category three). Afterwards, a (preferably randomized) selection of eight reviews should be presented to the participants based on the choice they made.

There is, however, a constraint. Reviews are clustered into eight families. A family consists of a basic text that varies in the amount of positive and negative information about the product depending on the category. When presenting the reviews to participants, I have to make sure that only one review out of each family is drawn (because the sentences are nearly the same within families). If, for instance, category one of family one is drawn, no other review out of family one may be presented. All in all, there are 56 reviews (7 categories x 8 review-families).

Is it possible to program a task like this with Inquisit and if yes, could you give me some hints on how to do that? As I mentioned, I never tried Inquisit before. Many thanks in advance for your help!

Best,
Kevin

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: 12K, Visits: 98K
kevin - Wednesday, December 6, 2017
Hi,

this is the first time I use this forum since I haven’t used Inquisit so far. However, I’m planning to run a study where my common tools seem to hit the wall. Therefore, I am wondering whether Inquisit might be the right software to program this study. I hope to be able to describe the task sufficiently.

Basically, I want to present texts (consumer reviews) to participants after they made a choice of which reviews they want to read in order to get more information about a product. The reviews belong to seven different categories which represent consumer ratings (like stars on amazon, for instance) – with category one being the worst and category seven being the best rating. In the first part of the task, participants have to select (exactly) eight reviews. However, they do not select the reviews as such, but rather indicate how many reviews out of which category they want to read in the following (e.g., 2 of category one and 6 of category three). Afterwards, a (preferably randomized) selection of eight reviews should be presented to the participants based on the choice they made.

There is, however, a constraint. Reviews are clustered into eight families. A family consists of a basic text that varies in the amount of positive and negative information about the product depending on the category. When presenting the reviews to participants, I have to make sure that only one review out of each family is drawn (because the sentences are nearly the same within families). If, for instance, category one of family one is drawn, no other review out of family one may be presented. All in all, there are 56 reviews (7 categories x 8 review-families).

Is it possible to program a task like this with Inquisit and if yes, could you give me some hints on how to do that? As I mentioned, I never tried Inquisit before. Many thanks in advance for your help!

Best,
Kevin

Yes, that should be possible.

You'd first have participants select how many reviews of each category they want to see using e.g. a number of <textbox>es where they fill in the number.
Based on that information, you can then assemble the set of reviews to show given the "one out of each family" only constraint.

Here's a stripped down example with a reduced number of categories and families: 3 categories x 4 families for 12 items total:

<values>
/ n_cat1 = 0
/ n_cat2 = 0
/ n_cat3 = 0
</values>

// 0 = FAM 1 // 1 = FAM 2
// 2 = FAM 3 // 3 = FAM 4
<list families>
/ items = (0,1,2,3)
/ selectionmode = random
/ replace = false
/ selectionrate = always
</list>

// CAT 1 are items 1 to 4
// Item #1 is the category's "base" item
<list cat1>
/ items = (1)
</list>

// CAT 2 are items 5 to 8
// Item #5 is the category's "base" item
<list cat2>
/ items = (5)
</list>

// CAT 3 are items 9 to 12
// Item #9 is the category's "base" item
<list cat3>
/ items = (9)
/ selectionmode = random
/ replace = false
/ selectionrate = always
</list>

<item allitems>
/ 1 = "Cat 1 - Fam 1"
/ 2 = "Cat 1 - Fam 2"
/ 3 = "Cat 1 - Fam 3"
/ 4 = "Cat 1 - Fam 4"

/ 5 = "Cat 2 - Fam 1"
/ 6 = "Cat 2 - Fam 2"
/ 7 = "Cat 2 - Fam 3"
/ 8 = "Cat 2 - Fam 4"

/ 9 = "Cat 3 - Fam 1"
/ 10 = "Cat 3 - Fam 2"
/ 11 = "Cat 3 - Fam 3"
/ 12 = "Cat 3 - Fam 4"
</item>

<text review>
/ items = allitems
/ select = list.selectedreviews.nextvalue
</text>

// show the selected reviews
<trial showreview>
/ stimulusframes = [1=review]
/ validresponse = (57)
</trial>

<list selectedreviews>
</list>

<values>
/ rvw = 0
</values>

<block reviewblock>
/ onblockbegin = [
    if (values.n_cat1 >= 1) {
    values.rvw = list.cat1.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
    if (values.n_cat1 >= 2) {
    values.rvw = list.cat1.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
    if (values.n_cat1 >= 3) {
    values.rvw = list.cat1.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
    if (values.n_cat1 >= 4) {
    values.rvw = list.cat1.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
   
    if (values.n_cat2 >= 1) {
    values.rvw = list.cat2.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
    if (values.n_cat2 >= 2) {
    values.rvw = list.cat2.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
    if (values.n_cat2 >= 3) {
    values.rvw = list.cat2.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
    if (values.n_cat2 >= 4) {
    values.rvw = list.cat2.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
   
    if (values.n_cat3 >= 1) {
    values.rvw = list.cat3.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
    if (values.n_cat3 >= 2) {
    values.rvw = list.cat3.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
    if (values.n_cat3 >= 3) {
    values.rvw = list.cat3.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
    if (values.n_cat3 >= 4) {
    values.rvw = list.cat3.nextvalue + list.families.nextvalue; list.selectedreviews.appenditem(values.rvw);
    };
]
/ trials = [1-4 = showreview]
</block>

<surveypage selection>
/ caption = "Please make your selection:"
/ questions = [1=cat1_q; 2=cat2_q; 3=cat3_q]
/ ontrialend = [
    values.n_cat1 = textbox.cat1_q.response;
    values.n_cat2 = textbox.cat2_q.response;
    values.n_cat3 = textbox.cat3_q.response;
]
/ branch = [
    if (values.n_cat1 + values.n_cat2 + values.n_cat3 != 4)
    surveypage.errorpage
]
</surveypage>

<surveypage errorpage>
/ caption = "The total number of reviews selected must add up to 4. Please try again."
/ branch = [
    surveypage.selection
]
</surveypage>

<textbox cat1_q>
/ caption = "How many reviews of Category 1?"
/ range = (0,4)
</textbox>

<textbox cat2_q>
/ caption = "How many reviews of Category 2?"
/ range = (0,4)
</textbox>

<textbox cat3_q>
/ caption = "How many reviews of Category 3?"
/ range = (0,4)
</textbox>

<block selectionblock>
/ trials = [1= selection]
</block>

<expt>
/ blocks = [1=selectionblock; 2=reviewblock]
</expt>





kevin
kevin
Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)Respected Member (316 reputation)
Group: Forum Members
Posts: 4, Visits: 26

Many thanks for your detailed reply! I'm gonna try this out. I'm sure this is gonna be very useful :)

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search