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

Welchen PHP-Code sollte man für die Randomisierung von HTML-Stimuli bei der Durchführung eines Selektionsexperiments verwenden. Ich verwende das OSEM Selektionstool von Julian Unkel, im Rahmen dessen ich eine hub und acht spoke HTML Stimuli in SoScio Survey integriert habe. Jetzt möchte ich die Anzeige der spoke links auf der hub page radomisieren, so dass die Anordnung der spoke links auf der hub page für jeden Teilnehmer zufällig variiert.

by SoSci Survey (306k points)
Möchten Sie mal den PHP-Code posten, den Sie bisher verwenden? Dann ist es deutlich einfacher mit einer konkreten Antwort. Danke.

1 Answer

0 votes
by s033222 (140 points)
edited by s033222

Das ist ein wenig davon abhängig, wie die Hub-Page aufgebaut ist bzw. wie stark sich die einzelnen Spokelinks darauf unterscheiden. In allen Fällen ist es aber am einfachsten, wenn Sie die Datenbank-Funktion von SoSciSurvey nutzen.

Gehen wir einmal vom einfachsten Fall aus, dass die Links alle gleich aussehen und aufgebaut sind und sich nur im Text unterscheiden:

  1. Zunächst erstellen wir ein Tabellenblatt (in Excel, als CSV oder vergleichbares), in dem wir pro Zeile die Informationen eines Spokelinks - z. B. Linktext, ID der Spoke-Seite) - in den Spalten speichern; die erste Spalte enthält einen Key (siehe Datenbank-Funktion), in Ihrem Fall am besten einfach die Zahlen 1-8.

  2. Wir erstellen einen PHP-Array, der die Datenbankschlüssel enthält, mischen diesen zufällig und machen ihn mittels registerVariable() dauerhaft im Fragebogen verfügbar. Am besten geschieht dies auf der Seite vor der Selektionsaufgabe und verpacken es in eine isset-Bedingung, damit das pro Proband nur einmal geschieht. Das sähe bei Ihnen in etwa so aus:

    if(!isset($order)) {
        $order = range(1,8); // Array von 1-8 erzeugen
        shuffle($order); // zufällig mischen
        registerVariable('order'); // Variable im Datensatz verfügbar machen
    }
  1. Wir gestalten die Hub-Seite nun so um, dass die relevanten Elemente aus der Datenbank befüllt werden. Wir könnten beispielsweise an allen Stellen im HTML-Code der Hub-Seite, die durch Informationen aus der Datenbank befüllt werden sollen, Platzhalter und diese dann ersetzen (z. B. dort wo der erste Linktext stehen soll: %linktext1%). Das würde als PHP-Code etwa so aussehen:
    $text1 = dbGet($order[0]) // wir nutzen das erste (nullte) Element des Arrays als Schlüssel
    $linktext1 = $text1[0] // ziehen uns die einzelnen Informationen aus der Datenbank, hier den Inhalt der ersten (nullten) Spalte hinter der Schlüsselspalte
    replace('%linktext1%', $linktext1);
    $text2 = dbGet($order[1]) // usw.

Wir können das ganze auch durch Loops abkürzen (foreach ($order as $i) { etc.), aber für Ihre Zwecke ist obige Variante vermutlich einfacher und nachvollziehbarer. Falls die Position der (zufällig platzierten) Spokelinks relevant ist, sollten Sie dies noch zusätzlich in internen Variablen abspeichern. Hierzu können Sie einfach die Elemente des geshuffelten $order-Arrays der Reihe nach in internen Variablen abspeichern.

Unterscheiden sich die Spoke-Links stärker voneinander, sind mehr Anpassungen nötig, das Verfahren sollte aber ähnlich ablaufen.

Falls noch Fragen sind: gerne auch eine Mail schreiben.

Beste Grüße

Julian Unkel

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

...