0 votes
in SoSci Survey (dt.) by s156256 (135 points)

Hallo zusammen,

ich brauche wieder Hilfe, weil meine ursprüngliche Lösung nicht so funktioniert wie ich mir das gedacht habe.

Ich versuche die Reihenfolge von meinen Stimuli zu rotieren.
Das Ziel ist, dass 16 Bilder in einer Auswahlaufgabe gezeigt werden und nach jedem Bild eine Frage auf der nächsten Seite gezeigt wird. Dabei ist die Schwierigkeit, dass es jedes Bild in Version a und b gibt und bei 8 Bildern Version a öfter und bei den anderen 8 Bildern Version b öfter gezeigt werden soll.

Meine Lösung wäre es, das über Zufallsgeneratoren zu lösen. Ich habe einen erstellt der mir eine Zufallszahl von 1-16 ausgibt, um die Reihenfolge zufällig zu ziehen. Und einen weiteren Zufallsgenerator, der pro Bild eine Version auswählt.
Ich dachte ich könnte mit dem Ergebnis von Zufall 1 zu einem Bild springen, damit dieses bearbeitet wird, dann die Frage dazu bearbeitet wird und anschließend wieder zurück zu dem Zufall 1 damit er eine andere der verbleibenen 15 Zahlen auswerfen kann (wegen ziehen ohne zurücklegen). Ich weiß, dass das nicht elegant ist, aber solange es am Ende funktioniert, bin ich bereit den Fragebogen so zu konzipieren.

Meine Fragen:
Wenn ich den Zufall 1 auf mehr als einen Zettel pro Interview einstelle, bekomme ich den Fehler, dass die Variable nicht existiert. Ich dachte, wenn ich mehrere Zettel einstelle, würde er innerhalb des Experiments die Zettel nacheinander bearbeiten.

Gibt es bei SoSci Survey die Unterscheidung, dass ein Zufallsgenerator innerhalb eines Fragebogens gleichverteilt ziehen soll? (Ich dachte in abgeschlossenen Fragebögen, aber meine Recherche lässt mich daran zweifeln)

Vielen Dank

by SoSci Survey (308k points)
> Das Ziel ist, dass 16 Bilder in einer Auswahlaufgabe gezeigt werden und nach jedem Bild eine Frage auf der nächsten Seite gezeigt wird.

Wie sieht die Auswahlaufgabe aus (zeigt diese ein Bild oder mehrere/alle)?

> bei 8 Bildern Version a öfter und bei den anderen 8 Bildern Version b öfter gezeigt werden soll.

Was genau heißt "öfter"?

> Ich dachte ich könnte mit dem Ergebnis von Zufall 1 zu einem Bild springen, damit dieses bearbeitet wird, dann die Frage dazu bearbeitet wird und anschließend wieder zurück zu dem Zufall 1 damit er eine andere der verbleibenen 15 Zahlen auswerfen kann

Nicht so ganz... Sie würden alle 16 ziehen und dann diese Liste abarbeiten.

> Wenn ich den Zufall 1 auf mehr als einen Zettel pro Interview einstelle, bekomme ich den Fehler, dass die Variable nicht existiert.

Wenn Sie mehrere Zettel ziehen, heißen die Variablen anders (s. Karteikarte "Variablen" in der Frage).
by s156256 (135 points)
[Original Post mit Ablauf][1]

Die Auswahlaufgabe zeigt ein Bild das mittels zwei Kärtchen als geeignet oder ungeeignet bewertet werden soll

Die Bilder sollen zu 75% als korrekt geeignet (=1a, 2a,3a...) oder auch korrekt ungeeignet (9b,10b,11b..) präsentiert werden.

Ist es mit dieser Liste oder den neuen Variablen möglich die Reihenfolge in dem Experiment festzulegen? Wenn mir Zufall eine Liste gibt, die ich dann abarbeiten lassen könnte, könnte ich den Ablauf damit realisieren. Was nicht ginge wäre, wenn ich ein array mit allen möglichen Kombinationen definieren müsste.

Viele Grüße
Tim


  [1]: https://support.soscisurvey.de/?qa=25866/fragebogenstruktur-bei-zuordnungsexperiment

1 Answer

+1 vote
by SoSci Survey (308k points)

Ich würde folgendes Vorgehen empfehlen:

  • Für die Rotation können Sie einen Zufallsgenerator verwenden, der 16 aus 16 Zetteln zieht.
  • Für die Zuordnung der Varianten legen Sie zwei Arrays mit den Zahlen 1 und 2 an. Dabei steht 1 für Variante A und 2 für Variante B. Jedes Array muss 8 dieser Zahlen enthalten (im passenden Verhältnis).
  • Beide Arrays mischen Sie mittels shuffle().

Ich gehe einmal davon aus, dass die Bilder 1-8 das Verhältnis (A) und die Bilder 9-16 im Verhältnis (B) angezeigt werden sollen. Weiter nehme ich an, dass der Zufallsgenerator die Kennung RG01 hat. Das könnte dann so aussehen.

question('RG01');
if (!isset($variants)) {
  $list1 = [1,1,1,1,1,1,2,2];
  $list2 = [1,1,2,2,2,2,2,2];
  shuffle($list1);
  shuffle($list2);
  $variants = array_merge($list1, $list2);
}

$images = valueList('RG01');
$imageID = loopPage($images);
$variant = $variants[$imageID - 1];

Aus der $imageID und der $variant ergibt sich dann eindeutig, welches Bild gezeigt werden soll.

by s156256 (135 points)
Vielen Dank für die Antwort. Ihr Vorschlag sieht nach jeder Minute anschauen besser aus. Ich verstehe es nur noch nicht komplett.
Ganz grundlegend, Sie haben in dem Code die beschriebenen Punkte bereits umgesetzt, richtig?
Wo lege ich die verschiedenen Versionen der Bilder genau an? In dem Zufallsgenerator hinterlege ich 16 Zettel für die 16 Ziehungen. Zurzeit habe ich in der Aufgabe 32 Fragen, die jeweils die Bilder aus den Mediendatein benutzen.
Und wie kann ich mit dieser Rotation die Fragen nach den Items platzieren?
by SoSci Survey (308k points)
> Wo lege ich die verschiedenen Versionen der Bilder genau an?

Wenn Sie die Bilder hochgeladen haben, könnten Sie deren Dateinamen z.B. wie folgt in den PHP-Code einbinden:

$bild = [
  1 => [1 => 'bild01a.jpg', 2 => 'bild01b.jpg'],
  2 => [1 => 'bild02a.jpg', 2 => 'bild02b.jpg'],
  // us.w.
];

Wenn Sie das machen und die Indizes gleich als 1/2 vorgeben, könnte die Anzeige wie folgt aussehen:

html('<div><img src="'.$bild[$imageID + 1][$variant].'"></div>');

Mehrdimensionale Arrays (aka "Tabellen") sind eine tolle Sache :)
by s156256 (135 points)
Guten Morgen,

nachdem dies mein erstes Experiment mit SoSci Survey ist, habe ich noch einige Fragen zu dieser Lösung:
Ich verstehe Ihre Lösung so, dass der Code die Biler direkt anzeigt. In meinem Anwendungsfall will ich die Bilder in einer Aufgabe einbetten. Lässt sich das dann auch über $bild realisieren? Oder brauche ich dafür einen anderen Befehl?
An welcher Stelle muss ich $bild denn in den oberen code mit $images einfügen? Ist $bild ein Synonym für $images?
Und wie kann ich mit loopPage nach der Aufgabe zusätzlich immer eine zweite Seite mit einer Frage anzeigen lassen? Diese zweite Seite soll prinzipiell immer die gleiche Frage beinhalten, allerdings müssen sich die Antworten bei der Auswertung eindeutig der vorherigen Bilderaufgabe zuordnen lassen.

Vielen Dank für die Hilfe!
by SoSci Survey (308k points)
>  In meinem Anwendungsfall will ich die Bilder in einer Aufgabe einbetten

Kein Problem, das html() ist nur ein Beispiel, Sie können den Bildnamen auch direkt in einen Platzhalter speichern:

replace('%bild%', $bild[$imageID + 1][$variant]);

> Und wie kann ich mit loopPage nach der Aufgabe zusätzlich immer eine zweite Seite mit einer Frage anzeigen lassen?

Wenn Sie mehr als eine Seite haben, verwenden Sie einfach loopToPage() statt loopPage(). Auf der zweiten Seite sorgen Sie dann noch dafür, dass immer eine andere Kopie oder ein anderes Item der Frage angezeigt wird, vgl. https://www.soscisurvey.de/help/doku.php/de:create:functions:looptopage
by s156256 (135 points)
Mein Versuch der Umsetzung sieht so aus:
question('Z302');
if (!isset($variants)) {
  $list1 = [1,2];
  $list2 = [1,2];
  shuffle($list1);
  shuffle($list2);
  $variants = array_merge($list1, $list2);
}
$bild = [
  1 => [1 => Question('EX17'), 2 => Question('EX18)'],
  2 => [1 => Question('EX19'), 2 => Question('EX20')],
  /*3 => [1 => Question('EX21*), 2 => Question('EX22)'],*/
usw.
];

$images = valueList('Z302');
$imageID = loopPage($images);
$variant = $variants[$imageID - 1];

Leider bekomme ich dafür folgende Fehlermeldung: "Dieses Interview versuchte, auf Seite Nr. 2 (Kennung 2) zu springen, die bei der Ausgabe der aktuellen Darstellung bereits verarbeitet wurde. Bitte überprüfen Sie, ob goToPage() eine Schleife erzeugt"

Außerdem frage ich mich wo in dem code $bild genau stehen soll und
Außerdem ob ich bild01 mit question('EX18') ersetzen kann.
Und zum Verständnis: mein Ziel ist es, dass die Bilder 1-8 der Liste 1 zugeordnet sind und 9-16 der Liste 2, damit die geeigneten Bilder zu 75% korrekt geeignet und die ungeeigneten zu 75% korrekt ungeeignet zugeordnet sind. Ist das in Ihrem Vorschlag bereits definiert?
Wenn nicht, an welcher Stelle und wie kann ich diese Zuordnung noch vornehmen?
Nochmal Dankeschön
by SoSci Survey (308k points)
> Leider bekomme ich dafür folgende Fehlermeldung: "Dieses Interview versuchte, auf Seite Nr. 2 (Kennung 2) zu springen

Haben Sie auf der Seite sonst noch PHP-Code? Insbesondere irgendwo ein goToPage()?

Könnten Sie bitte noch die Debug-Information der Seite posten?

> Außerdem frage ich mich wo in dem code $bild genau stehen soll

Die aktuelle Position ist in Ordnung. Nur das replace() am Ende fehlt m.E. noch.

> Außerdem ob ich bild01 mit question('EX18') ersetzen kann.

Nein, wenn Sie keine BIlder, sondern Fragen zeigen möchten, dann schreiben Sie ausschließlich die Frage-Kennungen in der Array.

> Und zum Verständnis: mein Ziel ist es, dass die Bilder 1-8 der Liste 1 zugeordnet sind und 9-16 der Liste 2, damit die geeigneten Bilder zu 75% korrekt geeignet und die ungeeigneten zu 75% korrekt ungeeignet zugeordnet sind. Ist das in Ihrem Vorschlag bereits definiert?

In meinem Vorschlag oben sind die Verhältnisse innerhalb der beiden Listen $list1 und $list2 bereits 75% und 25%.
by s156256 (135 points)
Ich habe das Gefühl, dass wir uns dem Ziel nähern.

Das ist die komplette Debug-Information. Zur Information ich habe den Z302 auf Seite 2 und den php code auf Seite 3. Das ist alles was im Fragebogen steht.
[Information]    Interview Nummer 191 wird fortgesetzt
[Information]    Der Fragebogen qnr3 im Projekt test233729 wird verwendet
[Information]    Die Verweildauer auf Seite 2 war 2 Sekunden
[Verarbeitung]    Lese Antworten von Seite 2+3
[Information]    Entsprechend der vorher festgelegten Seitenabfolge wird Seite 3 [] angezeigt
[Verarbeitung]    Erstelle Seite 3 in Fragebogen qnr3
[Inhalt]    Erstelle Frage Z302
[Information]    Der Zufallsgenerator Z302 wurde bereits zu einem früheren Zeitpunkt im Interview verwendet, die gezogenen Codes bleiben unverändert: 3, 4, 2, 1
[Information]    3 / loop.S3 / loop.S3
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 3
[Verarbeitung]    Erstelle Seite 3 in Fragebogen qnr3
[Inhalt]    Erstelle Frage Z302
[Information]    Der Zufallsgenerator Z302 wurde bereits zu einem früheren Zeitpunkt im Interview verwendet, die gezogenen Codes bleiben unverändert: 3, 4, 2, 1
[Information]    3 / loop.S3 / loop.S3
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 4
[Verarbeitung]    Erstelle Seite 4 in Fragebogen qnr3
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr.
[Verarbeitung]    Erstelle die letzte Seite des Fragebogens
[Information]    Folgende Platzhalter sind vorbereitet:
%bild% = (Text) EX20
by SoSci Survey (308k points)
> ich habe den Z302 auf Seite 2 und den php code auf Seite 3.

Legen Sie bitte beides auf dieselbe Seite. Das wird an der Funktion nichts ändern, macht es aber übersichtlicher - auch aus technischer Sicht.

Soweit ich sehe, fehlt es Ihnen im Moment noch an einem Inhalt, welcher das Bild anzeigt. Ist das korrekt? Verwenden Sie bitte entweder eine Frage (die Sie je nach $i variieren) oder zum Testen erstmal die html()-Zeile von oben.
by s156256 (135 points)
>Legen Sie bitte beides auf dieselbe Seite. Das wird an der Funktion nichts ändern, macht es aber übersichtlicher - auch aus technischer Sicht.<
Danke für den Tipp!
>Soweit ich sehe, fehlt es Ihnen im Moment noch an einem Inhalt, welcher das Bild anzeigt. Ist das korrekt? <
Ja, das ist korrekt.
Ich habe es mit der html Zeile ausprobiert und es hat fast funktioniert. Bei (zufällig) einem der vier Durchläufe kommt folgender Fehler: "Für die Funktion replace() wurden nicht ausreichend Argumente angegeben, 2 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion."
>Verwenden Sie bitte entweder eine Frage (die Sie je nach $i variieren)<
Wie mache ich das denn genau?
Ich vermute, dass ich dann in dem $bild Array die einzelnen Aufgaben einfüge und am Ende anstelle von dem HTML code die Aufgabe anzeigen muss. Ist das soweit richtig? Und was für eine Funktion zeigt die Aufgabe an? Wenn ich über question() gehe verlangt er die Aufgabenkennung und die ist dann ja nicht zufällig.
Ich gebe gerne jede weitere Information die Sie benötigen. Ich kann nur noch nicht einschätzen welche Informationen Sie überhaupt benötigen.
by SoSci Survey (308k points)
> Bei (zufällig) einem der vier Durchläufe kommt folgender Fehler

Stimmt, lassen Sie bitte das +1 in folgender Zeile weg:

replace('%bild%', $bild[$imageID + 1][$variant]);

Dadurch, dass wir die $images direkt an loopPage() übergeben, wird nicht ab 0 sondern ab 1 gezählt.

> Ich vermute, dass ich dann in dem $bild Array die einzelnen Aufgaben einfüge und am Ende anstelle von dem HTML code die Aufgabe anzeigen muss. Ist das soweit richtig?

Das wäre eine Möglichkeit ... je nachdem, was Sie erreichen möchten.

> Wenn ich über question() gehe verlangt er die Aufgabenkennung

Wenn Sie in dem Array $bild Frage-Kennungen hinterlegen, würde es z.B. so aussehen:

question($bild[$imageID][$variant]);

Die Variablennamen $bild und $imageID können Sie natürlich anpassen :)
by s156256 (135 points)
edited by s156256
Ich habe die Aufgabe heute mit den 16 original Bildern probiert. Dabei ist mir aufgefallen, dass die 75% Quote nicht gut erfüllt wird. Ist es möglich, dass im Rahmen von Statistik in einzelnen Fragebögen nur ein einziges Bild inkorrekt gezeigt wird? Das scheint mir mit den Listen nicht plausibel. Ich dachte, wenn beispielsweise in der ersten Liste vier Mal in Folge Korrekt gezogen wurde, muss anschließend zwei mal inkorrekt gezogen werden, weil die Liste das so definiert.
Verstehe ich es richtig, dass die Liste "merge" für die 16 Zettel definiert in welcher Ausprägung sie gezogen werden? Und sollte die Liste dann Abweichungen nicht eigentlich unterbinden?
by s156256 (135 points)
Hallo liebes SoSci Survey Team,
den Countdown und damit verbunden einen Timer habe ich heute alleine hinbekommen- ich weiß absolut nicht wie das passiert ist.
An der Rotation und an LoopToPage beiße ich mir allerdings immer noch die Zähne aus.
Könnten Sie mir bitte ein wenig näher erklären, wie ich >einfach loopToPage() statt loopPage()< verwenden kann? Wenn ich es im code direkt ersetze bekomme ich die Fehlermeldung, dass das Argument in LoopToPage ungültig ein array sei.
In der Funktion loopToPage() wurde ein ungültiges Argument (Array) vom Typ array verwendet.
Fehler im Fragebogen (Seite 2)
Für die Funktion replace() wurden nicht ausreichend Argumente angegeben, 2 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion.
Fehler im Fragebogen (Seite 2)
Im Befehl question() wurde keine Frage-Kennung angegeben.
Und einfch am Anfang loopToPage() einbauen geht nicht, weil ich dann ja beide Funktionen verwende. Hier nochmal der aktuelle Code unter den Annahmen, dass Z302 ein Zufallsgenerator mit 16 Zetteln ist, der alle 16 zieht ohne zurückzulegen:

replace('%remain%', 15);



question('Z302');
if (!isset($variants)) {
  $list1 = [1,1,1,1,1,1,2,2];
  $list2 = [1,1,2,2,2,2,2,2];
  shuffle($list1);
  shuffle($list2);
  $variants = array_merge($list1, $list2);
}
$bild = [
  1 => [1 => 'EX17', 2 => 'EX18'],
  2 => [1 => 'EX19', 2 => 'EX20'],
  3 => [1 => 'EX21', 2 => 'EX22'],
  4 => [1 => 'EX23', 2 => 'EX24'],
  5 => [1 => 'EX25', 2 => 'EX26'],
  6 => [1 => 'EX27', 2 => 'EX28'],
  7 => [1 => 'EX29', 2 => 'EX30'],
  8 => [1 => 'EX31', 2 => 'EX32'],
  9 => [1 => 'EX37', 2 => 'EX38'],
  10 => [1 => 'EX39', 2 => 'EX40'],
  11 => [1 => 'EX41', 2 => 'EX42'],
  12 => [1 => 'EX43', 2 => 'EX44'],
  13 => [1 => 'EX45', 2 => 'EX46'],
  14 => [1 => 'EX47', 2 => 'EX48'],
  15 => [1 => 'EX49', 2 => 'EX50'],
  16 => [1 => 'EX51', 2 => 'EX52'],
];



//loopToPage('loopend', 16) Wenn ich es hier einfüge, wird die Aufgabe nicht Wiederholt, aber die zweite Seite.


$images = valueList('Z302');
$imageID = loopToPage('loopend', $images);
$variant = $variants[$imageID - 1];
replace('%bild%', $bild[$imageID][$variant]);



question($bild[$imageID][$variant]);
by SoSci Survey (308k points)
> Wenn ich es im code direkt ersetze bekomme ich die Fehlermeldung, dass das Argument in LoopToPage ungültig ein array sei.

Oh ja, ich vergaß: loopToPage() erwartet eine Zahl, kein Array. Statt

$imageID = loopToPage('loopend', $images);
$variant = $variants[$imageID - 1];

Muss es also heißen:

$i = loopToPage('loopend', count($images));
$imageID = $images[$i];
$variant = $variants[$imageID - 1];

Ich gehe davon aus, dass "loopend" die zweite Seite ist und der PHP-Code auf der ersten Seite des Loops steht.
by s156256 (135 points)
Vielen Dank für die Antwort. Wenn ich die Zeilen wie beschrieben ändere, bekomme ich folgende Fehlermeldung:

Fehler im Fragebogen (Seite 2)
Für die Funktion replace() wurden nicht ausreichend Argumente angegeben, 2 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion.
Fehler im Fragebogen (Seite 2)
Im Befehl question() wurde keine Frage-Kennung angegeben.

Irgendwas passt ihm mit den Arrays und Zahlen nicht. Meiner Einschätzung nach sollten sowohl die question() als auch die replace() richtig definiert sein.
by SoSci Survey (308k points)
Setzen Sie unter die o.g. Zeilen bitte noch folgendes und posten Sie die Debug-Information:

debug($images);
debug($imageID);
debug($variant);
by s156256 (135 points)
Das sieht dann so aus:
[Information]    Interview gestartet (neue Nummer 398)
[Information]    Der Fragebogen qnr3 im Projekt test233729 wird verwendet
[Verarbeitung]    Erstelle Seite 2 in Fragebogen qnr3
[Inhalt]    Erstelle Frage Z302
[Information]    Vom Zufallsgenerator Z302 wurden folgende Codes gezogen: 8, 16, 2, 15, 5, 6, 9, 7, 12, 3, 1, 4, 13, 14, 10, 11
[Information]    loopToPage() wiederholt nun 2 Seiten 16 mal
debug()    Inhalt: Z302x018, Z302x0216, Z302x032, Z302x0415, Z302x055, Z302x066, Z302x079, Z302x087, Z302x0912, Z302x103, Z302x111, Z302x124, Z302x1313, Z302x1414, Z302x1510, Z302x1611
debug()    Inhalt: Keine Daten (null)
debug()    Inhalt: Keine Daten (null)
[Inhalt]    Erstelle Frage T004

Und als Hinweis kommt das für imageID und variant:
Debug-Information für $imageID:
Keine Daten (null)
by SoSci Survey (308k points)
Danke ... ich vergas, dass die Array-Indizes von valueList() ja die Variablen-IDs sind. Bitte ersetzen Sie daher...

$images = valueList('RG01');

noch durch

$images = array_values(valueList('RG01'));
by s156256 (135 points)
Vielen Dank für die Hilfe.
Ich habe noch ein registerVariable($fragen); ergänzt, um die Reihenfolge bei den Testdurchläufen zu fixieren. Jetzt klappt alles soweit.

Für die Kontrollgruppe habe ich die Rotation mittels shuffle gelöst, weil hier ja nur 16 Items zufällig präsentiert werden. Jetzt schaffe ich es nur nicht die Reihenfolge mittels put() abzuspeichern.

$fragen = [
   'E201',
  'E202',
  'E203',
   'E204',
  'E205',
   'E206',
   'E207',
   'E209',
   'E210',
  'E211',
   'E212',
  'E213',
   'E214',
   'E215',
   'E217'
];
if (!isset($variants)) {
  
  shuffle($fragen);
  $variants = array($fragen);
}
 registerVariable($fragen);

$i = loopToPage('loopend2', count($fragen));

question($fragen[$i]);

Das ist der Code von der KG. Es wäre wirklich nett, wenn Sie mir dafür noch eine Lösung geben könnten. Ich bekomme entweder fatale Fehler oder Aussagen wie: "Sie versuchen ein array mittlels put() zu speichern" und komme da einfach nicht weiter.

Liebe Grüße
by SoSci Survey (308k points)
Das sieht für mich nach etwas ganz anderem aus als in der Experimentalgruppe. Und Sie mischen hier ja auch nicht die Bildvarianten, sondern die Kennungen.

Ich denke, Sie sollten die Variable $variants hier weglassen und direkt die $fragen mischen und speichern?

if (!isset($fragen)) {
  $fragen = ...
  shuffle($fragen);
  foreach ($fragen as $i => $frage) {
    put(id('IV01', $i+1), $frage);
  }
}
by s156256 (135 points)
Ja, ist es. Deswegen nehme ich auch lieber wieder Ihre Lösung, die funktioniert. Dankeschön!

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

...