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

0 votes

Hallo!

Ich komme bei Folgendem nicht weiter:

Ich möchte insgesamt 120 Bilder über 3 Messzeitpunkte hinweg randomisiert zeigen. Es gibt 60 Bilder aus Kategorie N und 60 Bilder aus Kategorie S.
Zu jedem Zeitpunkt sollen 40 Bilder gezeigt werden, davon sollen dann ausgeglichen 20 aus Kategorie N und 20 aus Kategorie S sein.
Am Ende soll aber jedes Bild nur genau 1x gezeigt worden sein, also man soll kein Bild doppelt gesehen haben.

Wie bekomme ich das hin? Ich habe schon alles mögliche ausprobiert...
Freue mich über Hilfe!!

in SoSci Survey (dt.) by s097485 (160 points)
retagged by SoSci Survey

1 Answer

0 votes

Eigentlich ganz einfach :) Man muss nur zweimal um die Ecke denken.

Zunächst einmal legen Sie zwei Arrays (s. Anleitung) an, eines mit den Schlüsseln 1-60 und eines mit den Zahlen 61-120. Als Werte geben Sie den Dateinamen des Bildes an:

$set1 = array(
  1 => 'bildA1.jpg',
  2 => 'bildA2.jpg',
  3 => 'bildA3.jpg',
  // u.s.w.
);
$set2 = array(
  61 => 'bildB1.jpg',
  62 => 'bildB2.jpg',
  63 => 'bildB3.jpg',
  // u.s.w.
);

Tipp: Verwenden Sie Excel oder OpenOffice Calc und die Funktion VERKETTEN(), um den PHP-Code bequem zu "schreiben".

Wenn Sie diese beiden Arrays haben, mischen Sie die Schlüssel:

$keys1 = array_keys($set1);
$keys2 = array_keys($set2);
shuffle($keys1);
shuffle($keys2);

Und mit registerVariable() speichern Sie das Ganze für das weitere Interview ab:

registerVariable($set1);
registerVariable($set2);
registerVariable($keys1);
registerVariable($keys2);

Jetzt haben Sie alles beisammen, um pro Welle 40 Bilder zu ziehen und anzuzeigen:

if (!isset($wave1)) {
  $wave1 = array_merge(
    array_slice($keys1, 0, 20),
    array_slice($keys2, 0, 20)
  );
  shuffle($wave1);
  registerVariable($wave1);
}
$i = loopPage(count($wave1));
$key = $wave1[$i];
$bilder = $set1 + $set2;
html('<p><img src="'.$bilder[$key].'" alt=""></p>');

Dieser Code (nur als Beispiel) zeigt 40 Bilder nacheinander an, eines pro Seite. Vermutlich möchten Sie auch noch Fragen o.ä. anzeigen, aber das ist dann auch nicht mehr weiter schwer.

S, wie läuft das nun über 3 Erhebungswellen? Ganz einfach: Mit einer Unterbrecherseite (s. Anleitung). Die sorgt dafür, dass es für den Teilnehmer wie 3 getrennte Fragebögen aussieht, tatsächlich ist es aber nur ein durchgehendes Interview.

by SoSci Survey (71.9k points)
Sie haben mir wirklich sehr viel weitergeholfen!! Darauf wäre ich alleine nir gekommen, ein großes Dankeschön für Ihre Hilfe!!
Das mit der Unterbrecherseite hatte übrigens ich bereits gemacht.

2 Fragen habe ich noch:

1) Ist folgende Warnung relevant?
Warnung
Bitte beachten Sie, dass die von random() oder shuffle() erzeugten Zufallswerte nicht automatisch im Datensatz gespeichert werden. Zum Speichern können Sie ggf. die Funktion put() verwenden.

2) Werden dann nach der ersten Unterbrechung, also zum 2. Erhebungszeitpunkt, 40 Bilder gezeigt, die zum 1. Erhebungszeitpunkt noch nicht gesehen wurden? Und füge ich dazu beim Fragebogen einfach auf der entsprechenden Seite wieder ein Kästchen für PHP-Codes mit exakt demselben PHP-Code den Sie mir oben aufgeschrieben haben hinzu? Oder muss dann wieder was verändert werden?

Danke!!
ad 1) Das kommt darauf an, was genau Sie machen. Wenn Sie eine Frage zu jedem Bild anzeigen, werden Sie ohnehin darauf achten, dass Frage 1 immer zu Bild 1 angezeigt wird, Frage 2 zu Bild 2 u.s.w. - mit der Zuordnung sollte es also keine Probleme geben. Aber vielleicht müssen Sie für die Auswertung wissen, welche Bilder in Welle 1 verwendet wurden, welche in Welle 2 und 3? Dann müssten Sie das noch speichern. Wie das geht, lesen Sie in der Anleitung zu put().

ad 2) Ja. Effektiv erstellen Sie 2 gemischte Listen (A- und B-Bilder) und zerlegen diese dann in 3 Teile - das macht die Zeile mit array_slice(). Hier müssen Sie natürlich in Welle 2 und 3 die 0 in der Mitte (der Array-Index ab wo ein Teil entnommen/verwendet werden soll) durch 20 bzw. 40 ersetzen.

Und $wave1 müssen Sie durchgehend durch $wave2 und $wave3 ersetzen. Sonst sehen Sie nochmal dieselben Bilder wie in Welle 1.
Danke!!

zu 1) Ja, genau ich müsste wissen, um welche Bilder es sich handelt. Ich habe die Anleitung zu put() gelesen, leider weiß ich nicht genau, wie ich die interne Variable anzulegen habe. Sind die Bilder meine Items oder die Fragen, die ich jeweils dazu stelle? Ich habe jetzt in die interne Variable die Namen der Bilder eingetragen und quasi pro Bilderkategorie eine Interne Variable mit je 60 Items gebildet. Aber ich bezweifle, dass das richtig ist...
das heißt, ich verstehe nicht wie ich diese interne Variable bauen muss und was genau da reinkommt. Die Infoseite dazu habe ich mir auch schon durchgelesen, aber ich komme leider trotzdem nicht weiter...
Erstmal kümmern Sie sich darum, was zu den einzelnen Bildern anzuzeigen ist... Was soll es denn sein? Eine Frage? Oder geht es nur darum, dass sich der Teilnehmer eine bestimmte Anzahl Bilder ansieht?

Für die interne Variable können Sie erstmal drei entspr. Fragen mit jeweils 40 Items anlegen (eine reicht nicht, weil nicht mehr als 99 Variablen (Items) pro Frage möglich sind).
Zu jedem Bild gibt es einen Schieberegler, mit dem immer dasselbe abgefragt wird
Genau, ich glaube das habe ich schon gemacht: 3 Fragen Typ "Schieberegler" mti 40x denselben Items
Erstelle ich dann zusätzlich noch 3 interne Variablen mit jeweils 40 Items oder kommen in die interne Variable die Bilderkennungen rein?
...