0 votes
in Methoden-Fragen by s068921 (150 points)

Hallo,

ich arbeite zur Zeit an einem Online-Experiment. Unsere Stimuli sind einzelne Sätze. Sie liegen in sechs verschiedenen Listen vor, jede Liste enthält 120 Sätze. Jeder Proband sieht nur eine Liste, die Sätze aus der Liste werden für jeden Probanden neu randomisiert.

Unsere letzte entsprechende Umfrage hatte 92 Sätze. Hierfür hatten wir zwei Rubriken definiert (FT und PR). FT ist die eigentliche Frage. PR ist eine interne Variable, die die ausgewählten Stimulussätze in die Frage einfügt. FT und PR enthalten im alten Experiment jeweils 92 Fragen.

Für mein neues Experiment müssten die Rubriken allerdings 120 Fragen enthalten. Das lässt sich leider nicht ohne weiteres einstellen. Gibt es eine Möglichkeit, 120 Fragen hintereinander zu stellen, ohne die Listenauswahl, Randomisierung usw. zu verlieren? Ich wäre sehr dankbar für einen Rat.

Unter diesen Text kopiere ich den Code für die Seite, mit der aktuell die Fragen angezeigt werden - noch mit 92 statt 120 Fragen.
Vielen Dank im Voraus, und freundliche Grüße!

// Seite n-Mal wiederholen (aktuelle seitennummer in $i speichern)
$i = loopPage(92);

// Führende Null an einstellige Zahlen anhängen 
$frage_nr = str_pad($i+1, 2, '0', STR_PAD_LEFT);

// Zufallsgenerator wählt eine von sechs Stimuluslisten aus 
$code =value('ZG01');

// Darüber wird eine Liste mit itemnummern zugewiesen. 
// Für jede Stimulusliste gibt es eine eigene Liste mit itemnummern. 
// In der Datenbank enthält die erste Spalte den key 
// der setzt sich zusammen aus der Listennummer und der Laufnummer.
// über elseif kann man beliebig viele Listen verwenden. 
if($code == '1') {urnDraw('itemnummern_liste1', 'PR'.$frage_nr);}  
elseif($code=='2'){urnDraw('itemnummern_liste2', 'PR'.$frage_nr);}
elseif($code=='3'){urnDraw('itemnummern_liste3', 'PR'.$frage_nr);} 
elseif($code=='4'){urnDraw('itemnummern_liste4', 'PR'.$frage_nr);} 
elseif($code=='5'){urnDraw('itemnummern_liste5', 'PR'.$frage_nr);} 
elseif($code=='6'){urnDraw('itemnummern_liste6', 'PR'.$frage_nr);};  


// Variable für Text registrieren
$inhalt = dbGet(value('PR'.$frage_nr.'_01'));  
replace('%pred%', $inhalt[4]); 

// Textbaustein "Prompt" anzeigen (der enthält einen Platzhalter %pred% für den Stimulus)
text('Prompt');
// Frage FR$i anzeigen (%pred% wird ersetzt)
question('FT'.$frage_nr.'_01');

1 Answer

0 votes
by SoSci Survey (305k points)

Sie können die Fragen problemlos auf 2 Rubriken verteilen.

Jeder Proband sieht nur eine Liste

Nun, da arbeiten Sie ja ohnehin schon mit einem Zufallsgenerator.

Jeder Proband sieht nur eine Liste

Das würde ich ehrlich gesagt über shuffle() erledigen statt über Listen, die in der Datenbank für Inhalte liegen.

Der Trick besteht darin, dass Sie die Items 100+ aus einer anderen Rubrik nehmen.

// Zufallsgenerator wählt eine von sechs Stimuluslisten aus 
$code =value('ZG01');

// Die richtigen Rubriken zuordnen
if ($code == 1) {
  $rubriken = ['A1','A2'];
} elseif ($code == 2) {
  $rubriken = ['B1','B2'];
} elseif ($code == 3) {
  // ...
} elseif ($code == 6) {
  $rubriken = ['F1','F2'];
}

// Alle Fragen sammeln und mischen
if (!isset($order)) {
  $order = array_merge(
    getQuestions($rubrik[0]),
    getQuestions($rubrik[1])
  );
  shuffle($order);
  registerVariable($order);
}

// Anzeigen, eine Frage pro Seite
$frage = loopPage($order);

question($frage);

by s068921 (150 points)
Vielen Dank für die schnelle und hilfreiche Antwort! Ich werde die Lösung mit zwei Rubriken versuchen.

Eine Rückfrage habe ich noch zur vorgeschlagenen Lösung mit shuffle: Wir haben die Stimuli auf Listen verteilt, weil sie so balanciert werden können. Für jedes (Stimulus)item gibt es sechs verschiedene Bedingungen. In jeder Liste kommt jedes Item aber nur einmal vor, in jeweils einer anderen Bedingung. - Und das ganze zweimal, weil wir die Stimuli zweier Experimente miteinander mischen.

Es schien mir sehr kompliziert, diese Auswahl über shuffle zu treffen, und dann auch noch sicherzustellen, dass am Ende alle Sätze, Bedingungen und Experimente gleich häufig gezeigt werden. Aber vielleicht täusche ich mich, und es gibt hierfür eine einfache Lösung?
by SoSci Survey (305k points)
Die obige Lösung mischt die Fragen der Rubriken.

Es gibt vermutlich auch elegantere Lösungen - aber für konkrete Empfehlungne weiß ich zu wenig über das Projekt. Worin unterscheiden sich die Varianten der Fragen bzw. Items? Muss jede Kategorie in jedem Interview gleich oft vertreten sein?

Wenn Sie mit vordefinierten Listen eine gute Lösung haben, dann besteht keine Notwendigkeit das umzuwerfen. Aber vermutlich gibt es auch andere Optionen, einige davon evtl. einfacher zu verwalten.
by s068921 (150 points)
Vielen Dank für die neue Antwort.

Jedes Item liegt in sechs verschiedenen Bedingungen vor. Es handelt sich sechsmal den gleichen Satz mit minimalen Unterschieden. Jeder Versuchsteilnehmer sollte aus jedem Item-Sechstett nur eine Bedingung sehen, und von jeder Bedingung gleich viele Sätze. Das erreichen wir über die Verteilung auf Listen.

Inzwischen habe ich versucht, die vorgeschlagene Lösung mit verschiedenen Rubriken zu übernehmen. Leider lässt sich das nicht gut auf mein Experiment übertragen. Die einzelnen Rubriken enthalten bei mir nicht die verschiedenen Stimuluslisten, so dass ich also nicht einfach auf zwei verschiedene Rubriken verweisen kann, um die Liste zu erweitern. Die Fragen in den Rubriken haben „nur“ Platzhalterfunktion.
Gibt es vielleicht eine Möglichkeit, auf diese „Platzhalterfragen“ zu verzichten?

Ich versuche es noch mal mit dem (minimal) geänderten Skript und annotiere dazu, welche Schwierigkeiten auftreten:

// Definition, wie viele Fragen im Experiment gestellt werden sollen.
$i = loopPage(120);

// Jeder gezeigte Satz entspricht einer Platzhalterfrage in den Rubriken.
// Führende Null an einstellige Zahlen anhängen - Das funktionierte so
// für 01 bis 99 Fragen.
// Jetzt würde ich dreistellige Nummern brauchen,
// um die komplette Liste auszuwählen.
// Ich kann aber in einer neuen Rubrik nicht mit Frage AY100 beginnen,
// SoSci lässt mich den Startpunkt leider nicht auswählen.

$frage_nr = str_pad($i+1, 2, '0', STR_PAD_LEFT);

// Zufallsgenerator wählt eine Stimulusliste (also eine Urne) aus,
// die Urnen enthält die keys der Stimuli aus jeweils einer Liste.

$code =value('ZG01');

// Darüber wird eine Liste mit itemnummern und keys zugewiesen.
// fuer bis 99 stimuli pro liste:  
// BX ist die Rubrik, die die Platzhalter enthält.
// Hier werden so viele Fragen aus der Liste ausgewählt, wie oben definiert.
// Könnte man sowas sagen wie
// "Für Fragen 1-99 geh zu Rubrik BX, für Fragen 100-120 geh zur Rubrik BY"?

if($code == '1') {urnDraw('itemnummern_liste1', 'BX'.$frage_nr);}  
elseif($code=='2'){urnDraw('itemnummern_liste2', 'BX'.$frage_nr);}
elseif($code=='3'){urnDraw('itemnummern_liste3', 'BX'.$frage_nr);}
elseif($code=='4'){urnDraw('itemnummern_liste4', 'BX'.$frage_nr);}
elseif($code=='5'){urnDraw('itemnummern_liste5', 'BX'.$frage_nr);}
elseif($code=='6'){urnDraw('itemnummern_liste6', 'BX'.$frage_nr);};  

// Variable für Text registrieren
// Hier wird der eigentlich angezeigte Satz aus der Datenbank geholt
// und in die Frageseite eingefügt.

$inhalt = dbGet(value('BX'.$frage_nr.'_01'));  
replace('%pred%', $inhalt[4]);

// Textbaustein "Prompt" anzeigen (%pred% wird ersetzt)
text('Prompt');

// Frage FR$i anzeigen (%pred% wird ersetzt)
// Rubrik "AX" ist die, die die eigentlichen Frageseiten enthält (wieder Platzhalter)
question('AX'.$frage_nr.'_01');

---
Falls es dadurch übersichtlicher wird, kann ich gerne Zugang zum Projekt geben. Vielen Dank für die Unterstützung!
by SoSci Survey (305k points)
Nun, wäre es einfach, könnte es ja jeder :)

> Jeder Versuchsteilnehmer sollte aus jedem Item-Sechstett nur eine Bedingung sehen, und von jeder Bedingung gleich viele Sätze.

Sie haben 120 Sätze, also 6x20, korrekt? Im Prinzip könnte man vorab auch einfach eine Liste erzeugen, in welcher 20-mal der Wert 1 steht, 20-mal der Wert 2, ..., und 20-mal der Wert 6.

Würde man diese Liste mittels shuffle() mischen, hätte man zufällig eine Liste erzeugt, an welcher Stelle welche Variante eines Textes angezeigt werden soll. Was damit nicht sichergestellt ist, wäre aber dass - über die Interviews hinweig - für jeden Text jede Variante gleich häufig gezogen wird. Wollte man das erreichen, müsste man die Listen vorab erzeugen und abstimmen. Diese Kombinationen könnte man dann aber auch in einem Zufallsgenerator ablegen.

> Die Fragen in den Rubriken haben „nur“ Platzhalterfunktion.

Was meinen Sie mit "Platzhalterfunktion"? Angezeigt werden sie ja offenbar?!

Übrigens - nur so als Überlegungen - welche Datenstruktur benötigen Sie am Ende eigentlich? Mir scheint, in Ihrem Fall könnte eine Multi-Level-Struktur besser funktionieren: https://www.soscisurvey.de/help/doku.php/de:create:multilevel
by s068921 (150 points)
Vielen Dank für alle Tips.

Für beide miteinander gemischten Experimente liegt am Ende jeweils eine 2x3-Struktur vor. Soweit ich die Multilevel-Struktur verstehe, scheint sie besser geeignet zu sein, wenn die Reaktionen der Versuchsteilnehmer den Verlauf des Interviews beeinflussen sollen. Das ist im aktuellen Experiment nicht der Fall.  

Mit "Platzhalterfunktion" meine ich, dass die zu stellenden Fragen angelegt werden, aber in der Frage selbst nicht der Stimulus steht, sondern nur ein Verweis auf die Datenbank.

Ich glaube, das größte Problem ist gerade, wie ich den Zugriff auf 120 items über zwei Rubriken hinweg organisieren könnte.

In einer Diskussion hier im Forum (leider vorher nicht gefunden) habe ich einen Vorschlag gefunden, der eine neue Funktion beinhaltet: https://support.soscisurvey.de/?qa=6440/fragebogen-items-moglichkeit-diese-einer-unterzubringen

Diese Funktion finde ich leider nicht in meinem Experiment. Könnte eine Lösung in dieser Richtung weiterhelfen?
Es wäre großartig, wenn ich hierzu eine nicht-provisorische Lösung finden würde, denn die meisten unserer Experimente enthalten über 100 Stimuli.

Vielen Dank!
by SoSci Survey (305k points)
Multilevel wäre in Ihrem Fall vor allem eine Frage der Datenstruktur, die Sie am Ende haben. Ich halte 6x120 Variablen mit fünf sechsteln ohne Daten für denkbar ungünstig in der Auswertung.

> Mit "Platzhalterfunktion" meine ich, dass die zu stellenden Fragen angelegt werden, aber in der Frage selbst nicht der Stimulus steht, sondern nur ein Verweis auf die Datenbank.

Verstehe... Noch ein Grund, der m.E. für eine Multilevel-Struktur spricht. Dort könnten Sie im Datensatz einfach speichern, welcher Stimulus und welche Variante gezeigt werden soll - statt das indirekt durch 720 Variablen zu kodieren.

Allerdings verstehe ich Sie bisher auch so, dass Sie ein 2x3-Design für jedes einzelne Item haben. Mehr oder weniger. Oder ein 2x3x120 Design mit dem letzten Faktor als within-subject. Wenn ich das falsch verstehe, kann die klassische "flache" Struktur durchaus sinnvoller sein. Ich möchte Ihnen nur die Option aufzeigen.

> Ich glaube, das größte Problem ist gerade, wie ich den Zugriff auf 120 items über zwei Rubriken hinweg organisieren könnte.

Lassen Sie sich von den zwei Rubriken nicht einschüchtern. Weisen Sie die 120 Items zu wie gehabt - und alles was >99 ist, von dem wird einfach 99 subtrahiert und dann die "andere" Rubrik verwendet. Ein einfaches IF vor der Anzeige der jeweiligen Frage.

> In einer Diskussion hier im Forum (leider vorher nicht gefunden) habe ich einen Vorschlag gefunden, der eine neue Funktion beinhaltet

Wenn Sie auf die manuell benannten Variablen anspielen: Die gibt es mittlerweile. Aber ich denke nicht, dass das in Ihrem Fall hilfreich ist.

> Es wäre großartig, wenn ich hierzu eine nicht-provisorische Lösung finden würde

Ich sehe den Wechsel in eine zweite Rubrik >99 nicht als provisorisch. Im Gegenteil: Das ist wohl so einfach zu implementieren, dass es recht elegant ist. Und es bringt zugleich nicht das Namensschema der Variablen durcheinander...
by s068921 (150 points)
Inzwischen habe ich eine Lösung gefunden, tatsächlich mit einer Verteilung über mehrere Rubriken - danke für die Tips! Es benötigt viele ifelse-Schleifen, die Randomisierung funktioniert aber wirklich gut.

Wegen der Multilevel-Struktur werde ich noch einmal gründlicher lesen und nachdenken, was bei Folgeexperimenten sinnvoll sein könnte. Danke auch für die Tips hierzu!

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

...