0 votes
in SoSci Survey (dt.) by s175640 (110 points)
edited by SoSci Survey

Liebes Sosci-Team!
Für eine Untersuchung bräuchte ich folgendes Rotationsdesign:

Block 1-4 sollen rotiert werden.

  • Fixer Text ('Beginn Block 1')
  • Block 1 - Beginn mit einem fixen Text, dann sollen die Seiten rotiert
    werden, jedoch sollen immer 2 Seiten nacheinander präsentiert werden
    (Stimulus + Bewertung)
  • Fixer Text ('Beginn Block 2')
  • Block 2 - gleich wie Block 1
  • Fixer Text ('Beginn Block 3')
  • Block 3 - gleich wie Block 1
  • Fixer Text ('Beginn Block 4')
  • Block 4 - gleich wie Block 1

Die Seiten innerhalb der Blöcke 1-4 habe ich wie auf der Helpseite 'Seiten rotieren' über einen Zufallsgenerator (18 Zettel) und folgenden Code rotieren können - dies funktioniert auch:

question('B103'); // Zettel in zufälliger Reihenfolge ziehen $pages = valueList('B103', NULL, 'label'); // Gezogene Zettel auslesen setPageOrder($pages, 'Beginn Block 2'); // Seiten als Seitenabfolge definieren

Die Blöcke 1-4 wollte ich dann auch über eine Zufallsgenerator rotieren (wie ganz oben auf 'Seiten rotieren' unter 'Blöcke rotieren (Grundlagen)' beschrieben).
Im Zufallsgenerator habe ich alle möglichen Seitenabfolgen und fixierte Texte eingetragen (z.B. Beginn Block 1, Bewertung Selbst 1-Catch 2b, Beginn Block 2, Bewertung Andere 1-Catch 4b, Beginn Block 3, Bewertung Selbst 2-Catch 6b, Beginn Block 4, Bewertung Andere 2-Catch 8b, Technische Probleme).
Ich habe einen 1 Zettel eingestellt und folgenden Code verwendet:

question('B134');  // Zettel aus dem Zufallsgenerator ziehen
$pages = value('B134', 'label');  // Gezogene Seitenabfolge auslesen
setPageOrder($pages, 'Technische Probleme');  // Seitenabfolge anwenden

Mein Problem ist jetzt, dass bei der Rotation zwar Block 1 zufällig gewählt wird, aber die restlichen Blöcke einfach der Reihe nach wie im Fragebogen eingefügt präsentiert werden d.h. wenn zufällig Block 3 ausgewählt wird, beginnt es im dem fixen Text 'Beginn Block 1', dann folgt Block 3, dann kommt der fixe Text 'Beginn Block 4' (obwohl eigentlich 'Beginn Block 2' angezeigt werden sollte), dann kommt Block 4 und dann endet die Befragung (die restlichen 2 Blöcke werden gar nicht angezeigt).

Ich verstehe nicht ganz, warum das nicht funktioniert, da ja eigentlich eine Seitenabfolge ausgelesen werden sollte.

Ich habe schon auf der Helpseite 'Seiten rotieren' 'Seiten innerhalb der Blöcke rotieren' Variante 3 'Rotierte Blockabfolge' ausprobiert aber nur eine Fehlermeldung bekommen. Kann ich dieses Problem sonst irgendwie noch lösen?

Vielen Dank und mit freundlichen Grüßen

1 Answer

0 votes
by SoSci Survey (330k points)

Mein Problem ist jetzt, dass bei der Rotation zwar Block 1 zufällig gewählt wird, aber die restlichen Blöcke einfach der Reihe nach wie im Fragebogen eingefügt präsentiert werden

Das liegt daran, dass Sie innerhalb einer Seitenabfolge, die mittels setPageOrder() definiert wurde keine andere Seitenabfolge definieren können. Der erneute Aufruf des Befehls beeindet zugleich die erste Seitenabfolge.

Die Lösung besteht darin, dass Sie gleich zu Beginn die komplette Abfolge aller Seiten definieren. Je nachdem, ob Sie die Abfolge aus Block 1 direkt in Block 2-4 verwenden oder ob diese Blöcke in sich unabhängig vom ersten Blick rotiert werden, benötigen Sie also 1+1 oder 4+1 Zufallsgeneratoren. Einmal für die Seiten innerhalb der Blöcke und einmal für die Abfolge der Blöcke.

Die Kombination der rotierten Blöcke zu einer (rotierten) Liste dürfte hier die größte Herausforderung sein. Deshalb hier ein wenig Code-Unterstützung. Gehen wir einmal davon aus, dass Sie für die Abfolge der Blöcke den Zufallsgenerator RG01 verwenden (4 Zettel, davon werden pro Interview 4 gezogen) und für die Abfolge der (Doppel-)Seiten innerhalb der Blöcke die Zufallsgeneratoren RG02 bis RG05.

$blockfolge = valueList('RG01');
$blocks = [
  1 => valueList('RG02', false, 'label'),
  2 => valueList('RG03', false, 'label'),
  3 => valueList('RG04', false, 'label'),
  4 => valueList('RG05', false, 'label')
];
$gesamtliste = array_merge(
  ['fix01'],
  $blocks[$blockfolge[0]],
  ['fix02'],
  $blocks[$blockfolge[1]],
  ['fix03'],
  $blocks[$blockfolge[2]],
  ['fix04'],
  $blocks[$blockfolge[3]],
  ['fix05']
);
setPageOrder($gesamtliste);

Die verschachtelten Array-Aufrufe wie $blocks[$blockfolge[0]] sehen erstmal bedrohlich aus. Aber das heißt nur: Welcher Block soll als erstes (Index=0) gezeigt werden lt. $blockfolge? Gut, dann nehmen wir diese Zahl und lesen die entsprechende Liste aus $blocks aus.

by s175640 (110 points)
Vielen Dank für die Antwort!
Da lag die Crux wohl im setPageOrder() - ich habe jetzt Ihren Code auf der Seite vor meinen Blöcken übernommen, bekomme aber folgende Fehlermeldungen:

"In der Funktion setPageOrder() wurde ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten."

"Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined offset: 0
Zeile: 12

PHP-Code

009 ];
010 $gesamtliste = array_merge(
011   ['Beginn Block 1'],
012   $blocks[$blockfolge[0]],
013   ['Beginn Block 2'],
014   $blocks[$blockfolge[1]],
015   ['Beginn Block 3'],
Fehler im Fragebogen: Undefined index:
Zeile: 12

PHP-Code

009 ];
010 $gesamtliste = array_merge(
011   ['Beginn Block 1'],
012   $blocks[$blockfolge[0]],
013   ['Beginn Block 2'],
014   $blocks[$blockfolge[1]],
015   ['Beginn Block 3'],
Fehler im Fragebogen: Undefined offset: 1
Zeile: 14

PHP-Code

011   ['Beginn Block 1'],
012   $blocks[$blockfolge[0]],
013   ['Beginn Block 2'],
014   $blocks[$blockfolge[1]],
015   ['Beginn Block 3'],
016   $blocks[$blockfolge[2]],
017   ['Beginn Block 4'],
Fehler im Fragebogen: Undefined index:
Zeile: 14

PHP-Code

011   ['Beginn Block 1'],
012   $blocks[$blockfolge[0]],
013   ['Beginn Block 2'],
014   $blocks[$blockfolge[1]],
015   ['Beginn Block 3'],
016   $blocks[$blockfolge[2]],
017   ['Beginn Block 4'],
Fehler im Fragebogen: Undefined offset: 2
Zeile: 16

PHP-Code

013   ['Beginn Block 2'],
014   $blocks[$blockfolge[1]],
015   ['Beginn Block 3'],
016   $blocks[$blockfolge[2]],
017   ['Beginn Block 4'],
018   $blocks[$blockfolge[3]],
019   ['Technische Probleme']
Fehler im Fragebogen: Undefined index:
Zeile: 16

PHP-Code

013   ['Beginn Block 2'],
014   $blocks[$blockfolge[1]],
015   ['Beginn Block 3'],
016   $blocks[$blockfolge[2]],
017   ['Beginn Block 4'],
018   $blocks[$blockfolge[3]],
019   ['Technische Probleme']
Fehler im Fragebogen: Undefined offset: 3
Zeile: 18

PHP-Code

015   ['Beginn Block 3'],
016   $blocks[$blockfolge[2]],
017   ['Beginn Block 4'],
018   $blocks[$blockfolge[3]],
019   ['Technische Probleme']
020 );
021 setPageOrder($gesamtliste);
Fehler im Fragebogen: Undefined index:
Zeile: 18

PHP-Code

015   ['Beginn Block 3'],
016   $blocks[$blockfolge[2]],
017   ['Beginn Block 4'],
018   $blocks[$blockfolge[3]],
019   ['Technische Probleme']
020 );
021 setPageOrder($gesamtliste);
Fehler im Fragebogen: array_merge(): Argument #2 is not an array
Zeile: 19

PHP-Code

016   $blocks[$blockfolge[2]],
017   ['Beginn Block 4'],
018   $blocks[$blockfolge[3]],
019   ['Technische Probleme']
020 );
021 setPageOrder($gesamtliste);
022 return 'ok';"

Als RG01 habe ich jetzt eine zufällige Liste von 1-4 - dies ist richtig oder?

Vielen Dank nochmals für die Antwort!
by SoSci Survey (330k points)
> Fehler im Fragebogen: Undefined offset: 0

Lassen Sie sich bitte die Variable $blockfolge einmal wie folgt ausgeben und posten Sie, was da angezeigt wird:

debug($blockfolge);

> Als RG01 habe ich jetzt eine zufällige Liste von 1-4 - dies ist richtig oder?

Wenn Sie in RG01 vier Zettel haben und 4 Zettel pro Interview ziehen lassen, sollte valueList() für die Frage die Zahlen 1 bis 4 in zufälliger Abfolge liefern, korrekt.
by s175640 (110 points)
Es kommt diese Debug-Information:

"Debug-Information für $blockfolge:
B134x01, B134x02, B134x03, B134x04"

B134 ist meine Kennzeichnung für RG01
by SoSci Survey (330k points)
Die Zahlen sind allesamt hochgestellt und es steht nichts in normaler schwarzer Schrift dazwischen? Sind Sie sicher, dass Sie B134 über dem PHP-Code auf die Seite gezogen haben, sodass die Ziehung auch durchgeführt wird?
by s175640 (110 points)
B134 ist jetzt auf der Seite:

"Debug-Information für $blockfolge:
B134x01 1, B134x02 4, B134x03 3, B134x04 2" - 1, 4, 3, 2 steht neben den hochgestellten B134x01-04.
Es kommen leider aber immer noch die Fehlermeldungen und von vorher.
by s175640 (110 points)
Ich habe jetzt selbstständig den Fehler gefunden:
In $blocks[$blockfolge[0]] muss statt 0 '134x01', also das Item, eingetragen werden!
Vielen Dank für Ihre Hilfe!
by SoSci Survey (330k points)
Sehr gut geschlussfolgert - im Idealfall funktioniert nun alles wie gewünscht?
by s175640 (110 points)
Ja, vielen Dank - jetzt läuft alles :)
Die ganze Bachelorarbeitsgruppe freut sich!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...