0 votes
in SoSci Survey (dt.) by s264816 (120 points)

Hallo,

ich versuche eine Studie zu erstellen und brauche Hilfe, wie ich diese mittels PHP-Codes umsetzten kann.
In der Studie wird immer ein Video präsentiert und danach muss eine Item-Matrix dazu auf der nächsten Seite beantwortet werden.
Es gibt 8 Videos, die alle zweimal zufällig erscheinen sollen. Insgesamt soll es also 16 Durchläufe geben. Die Abfolge soll zufällig sein, ebenso wie die Reihenfolge der Fragen dazu, die Fragen der Item-Matrix sind aber immer dieselben. Die einzige Regel soll sein, dass ein Video nicht zweimal direkt hintereinander gezeigt werden darf.
Welches Video wann bewertet wurde, sollte in der Auswertung einsehbar sein.

Ich hoffe, Sie können mir helfen!

by SoSci Survey (329k points)
> Die Abfolge soll zufällig sein, ebenso wie die Reihenfolge der Fragen dazu, die Fragen der Item-Matrix sind aber immer dieselben.

Was versprechen Sie sich von einer Rotation der Items in der Bewertungsmatrix?

> Die einzige Regel soll sein, dass ein Video nicht zweimal direkt hintereinander gezeigt werden darf.

Dafür sollte der Zufallsgenerator Sorge tragen, wenn Sie aus 8 Zetteln 16 ziehen lassen. Wobei es sein kann, dass dabei immer erst alle 8 in zufälliger Abfolge gezeigt werden, und dann nochmal alle 8 - das sehe ich nochmal nach.

> Welches Video wann bewertet wurde, sollte in der Auswertung einsehbar sein.

Wenn Sie nicht Wochen mit der Auswertung verbringen möchten, sollten Sie unbedingt sicherstellen, dass immer dieselben beiden Fragen zu einem bestimmten Video gehören. Sie rotieren also "nur" die Videos und stelle sicher, dass zu Video 1 in der ersten Runde immer AB01 und in der zweiten Runde immer BB01 abgefragt wird.

1 Answer

0 votes
by SoSci Survey (329k points)

Wie schon angedeutet: Wenn Sie die Rotation mit dem Zufallsgenerator erledigen, würden dei Videos so gemischt werden, dass Sie immer erst alle 8 bekommen und dann nochmal alle 8 (in anderer Reihenfolge). Außerdem würde das die Anzeige der beiden unterschiedlichen Fragen erschweren.

Ich empfehle daher eine manuelle Rotation. Und zwar würden Sie erstmal eine Liste der Videos und Fragen anlegen, z.B.

$videos = [
  ['video1.mp4', 'AB01'],
  ['video1.mp4', 'BB01'],
  ['video2.mp4', 'AB02'],
  ['video2.mp4', 'BB02'],
  // u.s.w.
];

Diese Liste müssten Sie nun solange mischen, bis keine zwei gleichen Videos mehr aufeinander folgen, z.B.

do {
  shuffle($videos);
  $fine = true;
  for ($i=1; $i<count($videos); $i++) {
    if ($videos[$i][0] == $videos[$i - 1][0]) {
      $fine = false;
    }
  }
} while (!$fine);

Dann noch ein isset() und registerVariable(), und schon haben Sie ein Array, das Sie mittels loopPage() verwenden können, um alle Videos und Fragen wie gewünscht abzufragen.

by s264816 (120 points)
Danke für die Tipps!

Leider hat es bei mir immer noch nicht ganz geklappt,...

Von der Rotation der Items erhoffe ich mir, dass ein Antwortmuster vermieden werden kann, die Teilnehmer*innen sollen sich immer wieder erneut Gedanke machen müssen.

In meinem konkreten Fall gibt es 8 Videos, die jeweils als eine Seite mit den Bezeichnungen V007-V014 angelegt sind. Jedes soll zweimal gezeigt werden, aber nie direkt hintereinander. Die Reihenfolge soll randomisiert sein. Nach jedem Video kommt dieselbe Item-Matrix, innerhalb welcher die Abfolge der Items variiert. Diese Matrix ist ebenfalls als eine Seite mit der Bezeichnung V001 angelegt.

Bisher sehen meine Codes so aus:

$videos = [
  ['V007', 'V001'],
  ['V008', 'V001'],
  ['V009', 'V001'],
  ['V010', 'V001'],
  ['V011', 'V001'],
  ['V012', 'V001'],
  ['V013', 'V001'],
  ['V014', 'V001'],
  // Liste aller Video mit Fragebogen
];

do {
  shuffle($videos);
  $fine = true;
  for ($i=1; $i<count($videos); $i++) {
    if ($videos[$i][0] == $videos[$i - 1][0]) {
      $fine = false;
    }
  }
} while (!$fine);

Wo liegt hier der Fehler und wie baue ich isst(), registerVariable(), loopPage() und put() ein?

Über erneute Hilfe würde ich mich sehr freuen!!
by SoSci Survey (329k points)
> Von der Rotation der Items erhoffe ich mir, dass ein Antwortmuster vermieden werden kann, die Teilnehmer*innen sollen sich immer wieder erneut Gedanke machen müssen.

Wenn Sie mit Antwortmustern schräge und gerade Linien meinen, dann werden Sie diese durch die Rotation einfach nur vor der Auswertung verstecken.

Und wenn Sie Reihenstellungseffekte meinen, dann erzeugen Sie durch die Rotation einfach nur einen zusätzlichen Messfehler. Wie Sie einen systematischen Messfehler durch die Rotation der Items vermeiden möchten, kann ich aufgrund Ihrer Begründung nicht nachvollziehen. Könnten Sie das nochmal genauer ausführen?

> 8 Videos, die jeweils als eine Seite mit den Bezeichnungen V007-V014 angelegt sind

Bitte entfernen Sie die entsprechenden Seiten aus dem Fragebogen. Sie werden am Ende (technisch) nur eine Seite benötigen. Diese wird dann mittels loopPage() mehrfach angezeigt. Man könnte es auch mit unterschiedlichen Seiten und setPageOrder() machen, aber das funktioniert nicht mit der doppelten Anzeige. Beziehungsweise müssten Sie dafür 16 Seiten anlegen.

Ach ja: Sie brauchen 16 Fragen - sprich, Sie müssen die 8 Fragen nochmal kopieren (am besten komplett als Rubrik, vgl. https://www.soscisurvey.de/help/doku.php/de:create:question-management).

> Bisher sehen meine Codes so aus:

Soweit so gut. Außer, dass Sie 16 Zeilen brauchen, wobei das Video (Spalte 1) gleich bleibt, und die Frage sich ändert.

Wenn Sie am Ende noch ein debug($videos) anzeigen, was wird dann angezeigt?
by s264816 (120 points)
Dann wird mir das hier angezeigt:
Debug-Information für $videos:
[0]    [0]MLT2.mp4    [1]V001
[1]    [0]ALT1.mp4    [1]V001
[2]    [0]LKT2.mp4    [1]V001
[3]    [0]MaLT2.mp4    [1]V001
[4]    [0]LLT1.mp4    [1]V001
[5]    [0]MKT1.mp4    [1]V001
[6]    [0]AKT2.mp4    [1]V001
[7]    [0]ALT2.mp4    [1]V001
[8]    [0]MaKT1.mp4    [1]V001
by s264816 (120 points)
Mittlerweile sehen meine Codes so aus:
$videos = [
  [question('V007'),question('V001')],
  [question('V008'),question('V001')],
  [question('V009'),question('V001')],
  [question('V010'),question('V001')],
  [question('V011'),question('V001')],
  [question('V012'),question('V001')],
  [question('V013'),question('V001')],
  [question('V014'),question('V001')],
  // Liste aller Video mit Fragebogen
];

shuffle($videos);

Nun möchte ich aber noch, dass question(V001) immer auf einer eigenen Seite angezeigt wird und dass aus der Liste 16mal gezogen wird, jedes zweimal, aber nie direkt aufeinanderfolgend. Wie kann ich das umsetzen?
by SoSci Survey (329k points)
Wenn Sie eine Frage 16-mal im Fragebogen abfragen möchten, haben Sie zwei Möglichkeiten: Sie erstellen 16 Kopien oder Sie verwenden eine Multi-Level-Struktur: https://www.soscisurvey.de/help/doku.php/de:create:multilevel

Bitte ziehen Sie bei der Entscheidung auch Ihre Datenauswertung in Betracht: Wie brauchen Sie die Daten?

Aufgrund der Anzahl würde ich Ihnen tendenziell zu einer Multi-Level-Struktur raten.

Je nach Ihrer Entscheidung bekommen Sie die gentrennten Seiten entweder automatisch (Multi-Level) oder mittels loopPage().

Auch was die 16 Ziehungen aus 8 Videos angeht, hängt die konkrete Lösung von Ihrer Entscheidung ab. Bei der Multi-Level-Lösung würden Sie die Fragen aus der Liste entfernen und könnten das Array einfach duplizieren. Bei der Fragen-Kopieren-Lösung müssten Sie jedem Video zwei Zeilen zuweisen mit jeweils einer anderen Frage.

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

...