0 votes
in SoSci Survey (dt.) by s089051 (245 points)

Hallo,

ich möchte den Probanden meiner Studie pro Fragebogenseite ein Gemälde darbieten. Ingesamt besteht das Stimulusset aus 35 Gemälden, darunter sind aber einige Künstler mehr als einmal vertreten. Ich möchte nun die Seitenfolge randomisieren, aber gleichzeitig verhindern, dass die Werke vom gleichen Künstler direkt hintereinander präsentiert werden. Gib es hierfür eine simple Lösung?

1 Answer

0 votes
by SoSci Survey (302k points)

Gib es hierfür eine simple Lösung?

Ich denke, die Antwort hängt davon ab, was für Sie "simpel" ist :)

Es gibt eine elegante Lösung, bei der man ein wenig denken muss, und eine Brachial-Lösung.

Die Brachial-Lösung: Legen Sie einen Zufallsgenerator an, und schreiben Sie alle möglichen und erlaubten Seitenabfolgen hinein. Im Fragebogen ziehen Sie dann eine der Abfolgen und verwenden diese.

Die elegante Lösung erfordert ein wenig mehr PHP-Code. Im Prinzip funktioniert es wie folgt: Sie definieren eine Liste von Seiten und Künstlern (als Array). Also Seite => Künstler. Dann mischen Sie die Seiten und prüfen (anhand einer Schleife und der vorher definierten Liste), ob zwei Seiten mit demselben Künstler aufeinander folgen. Wenn ja, dann können Sie neu mischen oder die zweite der beiden Seiten mit der darauffolgenden vertauschen). Dies machen Sie so oft (mittlels WHILE-Schleife), bis ein gültiges Ergebnis erreicht ist.

Details zu beiden Lösungen gerne auf Nachfrage.

by s089051 (245 points)
Dann wähle ich gerne die elegante Lösung:)

bisher habe ich den folgenden PHP-Code verwendet:

$seiten = array('AG01', 'AG02', 'AG03', 'AG04', 'AG05', 'AG06', 'AG07', 'AG08', 'AG09', 'AG10', 'AG11', 'AG12', 'AG13', 'AG14', 'AG15', 'AG16', 'AG17', 'AG18', 'AG19', 'AG20', 'AG21', 'AG22', 'AG23', 'AG24', 'AG25', 'AG26', 'AG27', 'AG28', 'AG29', 'AG30', 'AG31', 'AG32', 'AG33', 'AG34', 'AG35');
shuffle($seiten);
$seiten[] = 'AG FAKE';
setPageOrder($seiten);

die folgenden Seiten (Gemälde) sind vom gleichen Künstler:

1) AG10, AG11
2) AG05, AG14, AG15, AG16, AG17, AG18
3) AG19, AG20, AG21, AG22
4) AG23, AG24, AG25, AG26, AG27
5) AG13, AG28
6) AG29, AG30, AG31
7) AG32, AG33

Die restlichen Künstler sind nur einmal vertreten. Wie kann ich nun diese Schleife einbinden?
by SoSci Survey (302k points)
Zuerst einmal erstellen Sie eine Liste von Kennungen und Künsterln:

$kuenstler = [
  'AG10' => 1,
  'AG11' => 1,
  'AG05' => 2,
  'AG14' => 2,
  // u.s.w.
];
$seiten = array_keys($kuenstler);

Dann können Sie nach dem shuffle() wie folgt prüfen, ob zweimal derselbe Künstler aufeinander folgt:

$lastOne = -1;
$double = false;
foreach ($seiten as $seite) {
  if ($kuenstler[$seite] == $lastOne) {
    $double = true;
  }
  // Hier könnte man evtl. tauschen
  $lastOne = $kuenstler[$seite];
}

Wenn $double den Wert true hat, hat es noch nicht funktioniert bzw. die Abfolge war ungültig. Also muss man mit einer WHILE-Schleife außenherum das Mischen oder (effizienter) umsortieren so oft erledigen, bis es passt.

Detials gerne in einer neuen Frage. Hier unten wird das mit dem vielen PHP-Code unübersichtlich.

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

...