0 votes
in SoSci Survey (dt.) by s008903 (190 points)
edited by SoSci Survey

Hallo,

ich rotiere in einem Experiment die Reihenfolge von insgesamt 32 Entscheidungen zufällig. Ziel ist keine systematische Rotation, sondern nur dass es zufällig ist. Daher nutze ich den folgenden PHP Code mit Anpassung auf meine Seitenbezeichnungen:

if (!isset($blocks)) {
  $blocks = array('B1Start-B1End','B2Start-B2End','B3Start-B3End');
  shuffle($blocks);
  $blocks[] = 'SD';
  registerVariable($blocks);
}
setPageOrder($blocks);

Ich würde gerne die Reihenfolge abspeichern, damit ich später explorieren kann, ob die Reihenfolge doch einen Effekt hatte (was wir nicht erwarten). Wenn ich das mit put() versuche, wird mir allerdings rückgemeldet, dass es sich um ein Array mit mehreren Elementen handelt und daher nicht in einer einzelnen internen Variable abgespeichert werden kann.

Meine Idee war hier implode() zu nutzen. Das funktioniert, wollte aber wissen ob es die einzige Lösung ist. Noch besser wäre für mich wenn ich eine interne Variable mit 32 "Fragen" erstelle und mir dort einfach die jeweilige Runde reingeschrieben wird. Gibt es hier einen einfacher weg oder sollte ich es mit implode() machen und später dann den String einfach trennen in der Datenaufbereitung?

Danke vorab und LG

1 Answer

+1 vote
by SoSci Survey (305k points)
edited by SoSci Survey

damit ich später explorieren kann, ob die Reihenfolge doch einen Effekt hatte (was wir nicht erwarten)

Ganz oder gar nicht ... SIe haben hier nur 6 Möglichkeiten für die Abfolge.

Meine Empfehlung wäre, dass Sie diese 6 Seitenabfolgen in einen Zufallsgenerator legen, daraus in jedem Interview eine Abfolge ziehen und diese dann direkt an setPageOrder() übergeben.

Dies ist (deutlich) einfacher als das Abspeichern nach zufälligem Mischen und Sie sorgen zudem dafür, dass die Reihenfolgen gleich häufig verwendet werden. Der PHP-Code verkürzt sich dann wie folgt:

$order = value('RG01', 'label');
setPageOrder($order, 'SD');

Update

Noch besser wäre für mich wenn ich eine interne Variable mit 32 "Fragen" erstelle und mir dort einfach die jeweilige Runde reingeschrieben wird.

Für mehr als 3 Seiten speichern Sie die Abfolge wie folgt in eine interne Variable mit 32 Variablen:

foreach ($blocks as $i => $pages) {
  put(id('IV01', $i + 1), $pages);
}
by s008903 (190 points)
Danke für die Antwort. Den Code habe ich aus der Dokumentation übernommen und wie beschrieben sind es bei mir nicht 3 Seiten sondern 32. Bei 32! wird selbst bei unserer hohen geplanten Stichprobenzahl keine Kombination doppelt vorkommen. Das heißt es geht mir hier nur um die technische Frage ob es eine bessere Möglichkeit gibt ein array mit 32 Elementen abzuspeichern als es vorher mit implode() zusammenzulegen. Danke vorab.
by SoSci Survey (305k points)
Pardon, das mit den 32 hatte ich dezent überlesen ;)

Ich ergänze oben gleich noch Code.
by s008903 (190 points)
Super, genau das brauche ich. Vielen lieben Dank! :)

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

...