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

Hallo,

wir würden gerne eine Studie designen und vorher schauen ob sich SoSciSurvey dafür eignet. In der Studie soll jeweils ein Bild auf der rechten Seite des Bildschirms und ein Bild auf der linken Seite des Bildschirms erscheinen. Wir haben insgesamt 40 Bilder für rechts und 40 für links, also 40 Trials. Dazu kommt, dass die Bilder nicht immer im selben Paar erscheinen sollen. Das heißt einerseits soll die Reihenfolge der Bilder zufällig sein und andererseits sollen die Bilder über Versuchspersonen hinweg mit immer anderen Bildern zusammen auftreten.

Wie kann man das bei SoSciSurvey designen?

by SoSci Survey (328k points)
Brauchen Sie alle Kombinationen der Bilder (ungefähr) gleich häufig oder möchten Sie die Paare zufällig mischen - wobei eine unbeschränkte Zufallsauswahl im Rahmen der Wahrscheinlichkeitsverteilung dazu führen würde, dass manche Bilder häufiger zusammen gezeigt werden als andere.

Tipp: Wenn Sie die Bildpaare gleichverteilt brauchen, wird's komplizierter :)
by s298816 (110 points)
Hallo, danke für die schnelle Antwort. Wir brauchen die Kombination ungefähr gleich verteilt.
by s298816 (110 points)
Also wenn ein Bild aus dem jeweiligen Bilderpool rechts/links gezogen wurde, soll es nicht wieder möglich sein dieses erneut zu ziehen.
by SoSci Survey (328k points)
> Also wenn ein Bild aus dem jeweiligen Bilderpool rechts/links gezogen wurde, soll es nicht wieder möglich sein dieses erneut zu ziehen.

Das ist klar ... aber ...

> Wir brauchen die Kombination ungefähr gleich verteilt.

Klären Sie bitte statistisch ab, wie wichtig Ihnen die Gleichverteilung ist. Hintergrund: Wenn Sie alle Paarungen gleich häufig brauchen, dann müssen Sie vorab z.B. in einer Statistiksoftware Listen mit Dupeln erstellen. Das erfordert einiges an kombinatorischer Arbeit.

1 Answer

0 votes
by SoSci Survey (328k points)

Variante 1

Wenn die Gleichverteilung für die statistische Auswertung wichtig ist, dann wird es aufwändiger. Dann müsten Sie vorab Listen erstellen. Wenn die Bilder jeweils von 1 bis 40 nummeriert sind, könnte das wie folgt aussehen:

1,1, 2,2, 3,3, 4,4, 5,5, 6,6,  ... , 40,40  <- erster Fall
1,2, 2,3, 3,4, 4,5, 5,6, 6,7,  ... , 40,1  <- zweiter Fall

Wenn man die Reihenfolge der Paare erstmal außen vor lässt, dann gibt es 40! (das sind ziemlich viele) mögliche Kombinationen. Und daraus müssten Sie ungefähr so viele wie Sie Teilnehmer:innen erwarten so auswählen, dass die Paarungen ungefähr gleich häufig vorkommen.

Diese Liste mit den z.B. 300 Zeilen würden Sie dann einfach in einen Zufallsgenerator ziehen und dort pro Fall eine Zeile auswählen. Die Abfolge kann man dann nochmal rotieren.

Variante 2

Wenn Sie in Kauf nehmen, dass manche Paarungen häufiger auftreten dürfen (also z.B. 10-mal 5/20 aber nur 1-mal 6/21), dann wird es einfacher, dann können Sie pro Interview einfach aus zwei Zufallsgeneratoren jeweils (alle) 40 Codes ziehen, und diese nacheinander abarbeiten.

$bilder1 = array_values(valueList('RG01', null, 'label'));
$bilder2 = array_values(valueList('RG02', null, 'label'));
$i = loopPage(40);
show('TX01', [
  '%bild1%' => $bilder1[$i],
  '%bild2%' => $bilder2[$i]
]);

TX01 wäre hier einfach noch ein Text (HTML-Code), welcher die beiden Bilder nebeneinander oder auf Smartphones untereinander anzeigt.

Diese Lösung ist wesentlich einfacher - Sie benötigen eben nur 2 Zufallsgeneratoren (hier: RG01 und RG02), den kleinen HTML-Code (hier: TX01) und den PHP-Code oben.

by s298816 (110 points)
vielen Dank für die Antwort! Bezüglich der Gleichverteilung muss ich nochmal nachdenken, ich denke Variante 2 sollte aber reichen. Wo muss ich die Bilder vorher hochladen? und $bilder1 wäre dann für die Bilder links und $bilder2 für die rechts? Und muss ich vorher noch eine Bildkomponenten eingeben? Sorry ich habe vorher noch nie mit dem Programm gearbeitet.
by SoSci Survey (328k points)
> Wo muss ich die Bilder vorher hochladen?

Zum Hochladen s. https://www.soscisurvey.de/help/doku.php/de:create:media

Und im Zufallsgenerator würden Sie (für den Code oben) gleich die Dateinamen eintragen.

> und $bilder1 wäre dann für die Bilder links und $bilder2 für die rechts?

Ja. Oder andersherum ;)
by s298816 (110 points)
Ok,  danke.
Also ich lege zwei Zufallsgeneratoren an und schreibe den Code von oben rein (also jeweils nur eine Zeile davon), dann füge ich noch eine normale Frage hinzu mit Text und schreibe da  $i = loopPage(40);
show('TX01', [
  '%bild1%' => $bilder1[$i],
  '%bild2%' => $bilder2[$i]
]);
rein?
Meine Dateien heißen jeweils BildL01.jpg und BildR01.jpg (für links und rechts; mit Nummerierungen von 01-40)
by s298816 (110 points)
wenn ich es so mache kommt die Fehlermeldung: No codes (contents) has been defined for the random selection BI02, to draw from. Obwohl die Dateien hochgeladen sind
by SoSci Survey (328k points)
edited by SoSci Survey
> Also ich lege zwei Zufallsgeneratoren an und schreibe den Code von oben rein

Nein, nicht ganz. Sie schreiben in den ersten Zufallsgenerator die 40 Dateinamen des einen Bildersets (bei den Zetteln/Codes, ein Dateiname pro Zeile) und in den zweiten die andere 40 Dateinamen.
by s298816 (110 points)
Ok, danke, das habe ich getan. Jetzt kommt die folgende Fehlermeldung: For the placeholder %bild1% neither an input field by prepare_input() has been created nor any content by using replace(). und For the placeholder %bild2% neither an input field by prepare_input() has been created nor any content by using replace(). und darunter steht der code:
$BildR = array_values(valueList('RG01', null, 'label')); $BildL = array_values(valueList('RG02', null, 'label')); show('TX01', [ '%bild1%' => $BildL[$i], '%bild2%' => $BildR[$i] ]); man sieht aber keine Bilder
by SoSci Survey (328k points)
> und darunter steht der code:

Sind Sie sicher, dass Sie den PHP-Code in ein Element "PHP-Code" eingefügt haben und nicht als "HTML-Code" Element?
by s298816 (110 points)
Der PHP Code ist der oder:
$bilder1 = array_values(valueList('RG01', null, 'label'));
$bilder2 = array_values(valueList('RG02', null, 'label'));
$i = loopPage(40); und der HTML-Code ist dieser oder: show('TX01', [
  '%bild1%' => $bilder1[$i],
  '%bild2%' => $bilder2[$i]
]);

Also ich habe diese Codes so eingegeben bei "Fragebogen zusammenstellen"
by s298816 (110 points)
Also ich habe es hinbekommen, dass Bilder nebeneinander gezeigt werden und sich die Seite 40 mal wiederholt. (Eigentlich will ich in der Mitte etwas Platz aber das klappt noch nicht so ganz mit dem html code)
Mein php code:
question('RG01');
replace('%BildL%', 'RG01', 'response');


question('RG02');
replace('%BildR%', 'RG02', 'response');
$BildR = array_values(valueList('RG01', null, 'label'));
$BildL = array_values(valueList('RG02', null, 'label'));

$i = loopPage(40);

mein html code:
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<colgroup>
    <col width="33%">
    <col width="34%">
    <col width="33%">
</colgroup>
<tr>
    <td><img src="%BildL%"></td>
    <td> </td>  
    <td><img src="%BildR%"></td>
</tr>
</table>

Was muss ich machen, damit sich die Bilder noch ändern, bzw. dass bei jedem loop eine neue Ziehung ohne Zurücklegen läuft. Und wenn ich den Datensatz letzlich exportiere, wäre es toll, wenn man erkennen könnte welche Bilder gezeigt wurden, kann man das auch einstellen?
Liebe Grüße und herzlichen Dank
by SoSci Survey (328k points)
Eine Tabellenkonstruktion kann man machen - aber bitte bedenken Sie, dass das auf dem Smartphone vermutlich nicht funktionieren wird. Einfacher wäre dieser HTML-Code:

<div style="display: flex; gap: 2em;">
<img src="%BildL%" style="flex: 1 1 50%">
<img src="%BildR%" style="flex: 1 1 50%">
</div>

Da kann man mit einem min-width und flex-wrap auch noch dafür sorgen, dass die Bilder auf kleinen Displays untereinander wandern.

> Was muss ich machen, damit sich die Bilder noch ändern

Sie müssen auf die Arrays, die Sie bereits auslesen, noch korrekt zugreifen.

question('RG01');
question('RG02');
$BildR = array_values(valueList('RG01', null, 'label'));
$BildL = array_values(valueList('RG02', null, 'label'));

$i = loopPage(40);
replace('%BildL%', $BildL[$i]);
replace('%BildR%', $BildR[$i]);

Die nächste Frage, die Sie umtreiben sollte: Wollen Sie zu den Bildern auch eine Frage stellen und wenn ja, wo sollen die Antworten gespeichert werden?

> Und wenn ich den Datensatz letzlich exportiere, wäre es toll, wenn man erkennen könnte ...

Das haben Sie schon in den RG01/02-Variablen.
by s298816 (110 points)
Ok vielen Dank, das werde ich dann ausprobieren. Genau unter dem Bildpaar soll jeweils eine 7-Punkte Likert Skala zu sehen sein, die die Teilnehmenden bzgl. der Bilder beantworten sollen und die Antworten sollen jeweils gespeichert werden.
by s298816 (110 points)
edited by SoSci Survey
Bei dem Code kommt leider die Meldung:

$i = loopPage(40);
replace('%BildL%', $BildL[$i]);
replace('%BildR%', $BildR[$i]);

There are not enough parameters for the function replace(). 2 parameters are essential for proper processing. Please refer to the user manual for further details.
by SoSci Survey (328k points)
Ich hoffe, ich habe in Ihrem Kommentar den korrekten Teil gelöscht, und es geht um diese Fehlermeldung? Diese besagt, dass $BildL/R für den Code $i keinen Wert hat.

Was zeigt denn folgendes dbeug() an?

$BildR = array_values(valueList('RG01', null, 'label'));
$BildL = array_values(valueList('RG02', null, 'label'));
debug($BildR);
debug($BildL);

 $i = loopPage(40);
debug($i);
by s298816 (110 points)
Wenn ich den Code reinschreibe ändert sich auch nichts, oder wo sehe ich denn was debug() für Fehler findet?
by s298816 (110 points)
Es kam folgende Meldung: There is an error in the PHP code:

Questionnaire Error: Undefined array key 1
line: 14

PHP code

011 $BildL = array_values(valueList('RG02', null, 'label'));
012
013 $i = loopPage(40);
014 replace('%BildL%', $BildL[$i]); --> hier und in Zeile 15 war der Fehler
015 replace('%BildR%', $BildR[$i]);
016
017 debug($BildR);

Questionnaire Error: Undefined array key 1
line: 15

PHP code

012
013 $i = loopPage(40);
014 replace('%BildL%', $BildL[$i]);
015 replace('%BildR%', $BildR[$i]);
016
017 debug($BildR);
018 debug($BildL);

There are not enough parameters for the function replace(). 2 parameters are essential for proper processing. Please refer to the user manual for further details.
by s298816 (110 points)
Könnte ich nicht auch 40 Seiten erstellen, 40 mal meine Likert Skala (mit versch. Nummerierungen) und 80 Zufallsgeneratoren, also 40 für Linkes Bild unnd 40 für Rechtes Bild und dann auf jeder meiner 40 Seiten einfach jeweils einen "neuen" Zufallsgenerator nutzen? Liebe Grüße
by s298816 (110 points)
Obwohl ne, dann ist ja nicht sicher, dass jedes Bild einmal gezeigt wird...
by SoSci Survey (328k points)
Es müsste im Debug-Modus (gelber Play-Knopf) zusätzlich noch etwas genau zu $BildR und $BildL angezeigt werden?

> Questionnaire Error: Undefined array key 1

Das klingt danach, dass Sie in dem Zufallsgenerator womöglich noch nicht eingestellt haben, dass er pro Interview 40 Codes ziehen soll?
by s298816 (110 points)
Wie genau mache ich das?
by SoSci Survey (328k points)
Öffnen Sie Ihre Zufallsgenerator-Fragen im Fragenkatalog zum Bearbeiten und suchen Sie in den Einstellungen der Frage nach "Weitere Einstellungen" -> Karteirreiter "Ziehung" -> "Anzahl Zettel pro Interview". Geben Sie dort 40 ein.
by s298816 (110 points)
Wenn ich das mache, klappt es mit den Bilder nicht mehr,es kommt die Meldung:
Variable RG01 is unknown to this project (see listing of variables). Therefore no result can be retrieved. und For the placeholder %BildL% neither an input field by prepare_input() has been created nor any content by using replace().

Weil die Variablen in den Zufallsgeneratoren jetzt ja so sind: RG01x01, RG01x02, ..., RG01x40

Wie muss ich dann den Code ändern?
by SoSci Survey (328k points)
> Variable RG01 is unknown to this project

Bitte posten Sie mal Ihren kompletten PHP-Code. In dem Code, den ich oben empfohlen habe, kommt RG01 nicht direkt vor, sondern nur mit valueList(), und dort sollte es funktionieren.

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

...